Elasticsearch - 如何为搜索和索引指定相同的分析器

Elasticsearch - How to specify the same analyzer for search and index

我正在开发西班牙语搜索引擎。 (我不会说西班牙语)但根据我的研究,目标或多或少是这样的:1.过滤停用词,如“dos”,“de”,“la”...... 2.为两个搜索词干词和索引。例如,如果您搜索“primera”,那么“primero”、“primer”也应该出现。

我的尝试:

es_analyzer={
        "settings": {
            "analysis": {
            "filter": {
                "spanish_stop": {
                "type":       "stop",
                "stopwords":  "_spanish_" 
                },
                "spanish_stemmer": {
                "type":       "stemmer",
                "language":   "spanish"
                }
            },
            "analyzer": {
                "default_search": {
                    "type": "spanish"
                },
                "rebuilt_spanish": {
                "tokenizer":  "standard",
                "filter": [
                    "lowercase",
                    "spanish_stop",
                    "spanish_stemmer"
                ]
                }
            }
            }
        }
    }

问题: 当我在 "default_search" 中使用 "type":"spanish" 时,我的查询“primera”被词干化为“primer”,这是正确的,但即使我指定在过滤器中使用 "spanish_stemmer",文档索引中没有词干。因此,当我搜索“primera”时,它只显示与“primer”完全匹配的结果。有什么解决这个问题的建议吗?

可能的修复,但我还没有弄清楚语法:

  1. 在过滤器中使用内置 "spanish" 分析器。语法是什么?
  2. "default_search" 中添加西班牙语词干分析器和停用词。但我不知道如何在那里使用复合设置。

添加包含索引数据、映射、搜索查询和搜索结果的工作示例

索引映射:

 {
  "settings": {
    "analysis": {
      "filter": {
        "spanish_stop": {
          "type": "stop",
          "stopwords": "_spanish_"
        },
        "spanish_stemmer": {
          "type": "stemmer",
          "language": "spanish"
        }
      },
      "analyzer": {
        "default_search": {
          "type":"spanish",
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "spanish_stop",
            "spanish_stemmer"
          ]
        }
      }
    }
  },
  "mappings":{
    "properties":{
      "title":{
        "type":"text",
        "analyzer":"default_search"
      }
    }
  }
}

索引数据:

{
  "title": "primer"
}
{
  "title": "primera"
}
{
  "title": "primero"
}

搜索查询:

{
  "query":{
    "match":{
      "title":"primer"
    }
  }
}

搜索结果:

"hits": [
      {
        "_index": "stof_64420517",
        "_type": "_doc",
        "_id": "3",
        "_score": 0.13353139,
        "_source": {
          "title": "primer"
        }
      },
      {
        "_index": "stof_64420517",
        "_type": "_doc",
        "_id": "1",
        "_score": 0.13353139,
        "_source": {
          "title": "primera"
        }
      },
      {
        "_index": "stof_64420517",
        "_type": "_doc",
        "_id": "2",
        "_score": 0.13353139,
        "_source": {
          "title": "primero"
        }
      }
    ]