Elasticsearch 中的模糊匹配在两个不同的版本中给出了不同的结果

Fuzzy Matching in Elasticsearch gives different results in two different versions

我在 elasticsearch 中使用带有分词器的字段分析器进行映射:

"tokenizer": {
    "3gram_tokenizer": {
      "type": "nGram",
      "min_gram": "3",
      "max_gram": "3",
      "token_chars": [
        "letter",
        "digit"
      ]
    }
  }

现在我正在尝试在 Elasticsearch 中使用查询 =“acinash”搜索名称 =“avinash”

形成的查询是:

{
  "size": 5,
  "query": {
    "bool": {
      "must": [
        {
          "multi_match": {
            "query": "acinash",
            "fields": [
              "name"
            ],
            "type": "best_fields",
            "operator": "AND",
            "slop": 0,
            "fuzziness": "1",
            "prefix_length": 0,
            "max_expansions": 50,
            "zero_terms_query": "NONE",
            "auto_generate_synonyms_phrase_query": false,
            "fuzzy_transpositions": false,
            "boost": 1.0
          }
        }
      ],
      "adjust_pure_negative": true,
      "boost": 1.0
    }
  }
}

但是在 ES 版本 6.8 中,我得到了想要的结果(因为模糊性),即从查询“acinash”得到的“avinash”,但是在 ES 版本 7.1 中我没有得到结果。

在 6.8 中尝试使用“avinaah”搜索“avinash”时也是如此,我得到了结果,但在 7.1 中我没有得到结果

ES 所做的是将其转换为标记:[aci, cin, ina, nas, ash] 理想情况下应该与 ES 中标记化的倒排索引匹配,标记为:[avi, vin, ina, nas, ash] ].

但为什么在 7.1 中不匹配?

与ES版本无关

更新max_expansions到50多个

max_expansions : Maximum number of variations created.

以 3 克字母和数字作为 token_chars,理想的 max_expansion 将是(26 个字母 + 10 个数字)* 3