我有以下映射:

analyzer:
    edge_ngram_analyzer:
        type: custom
        tokenizer: edge_ngram
tokenizer:
    edge_ngram:
        type : edgeNGram
        min_gram : 2
        max_gram : 20

productCode:
    type: string
    inxed_analyzer: edge_ngram_analyzer
    search_analyzer: keyword

搜索字符串是AH.20索引分析器的 token :AHAH.AH.2AH.20搜索分析器的 token :AH.20
查询:
 {
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "default_field": "product.productCode",
            "query": "AH.20"
          }
        }
      ]
    }
  }
}

但是它什么也没返回。映射有什么问题?
PS,当我不使用search_analyzer时,elasticsearch返回正确的结果(我确定ES会使用AH token 生成器将搜索字符串分解为 token 20standard)

最佳答案

您的映射定义中存在问题,除非是拼写错误:

inxed_analyzer: edge_ngram_analyzer

它应该是:
index_analyzer: edge_ngram_analyzer

10-06 08:22