具有模糊性AUTO的Elasticsearch查询无法按预期工作

时间:2019-05-15 13:15:32

标签: elasticsearch fuzzy-search

Elasticsearch documentation中关于模糊性的内容:

  

自动

     

根据术语的长度生成编辑距离。可选提供低距离和高距离参数AUTO:[low],[high]。如果未指定,则默认值为3和6,等同于AUTO:3,6表示长度:

     

0..2   必须完全匹配

     

3..5   允许进行一次修改

     

> 5   允许进行两次修改

但是,当我尝试在搜索查询中指定低距离和高距离参数时,结果却不是我期望的。

我正在使用带有以下索引映射的Elasticsearch 6.6.0:

{
    "fuzzy_test": {
        "mappings": {
            "_doc": {
                "properties": {
                    "description": {
                       "type": "text"
                    },
                    "id": {
                        "type": "keyword"
                    }
                }
            }
        }
    }
}

插入一个简单的文档:

{
    "id": "1",
    "description": "hello world"
}

以及以下搜索查询:

{
    "size": 10,
    "timeout": "30s",
    "query": {
        "match": {
            "description": {
                "query": "helqo",
                "fuzziness": "AUTO:7,10"
            }
        }
    }
}

我认为 fuzziness:AUTO:7,10 意味着对于长度<= 6的输入项,只会返回完全匹配的文档。但是,这是我查询的结果:

{
    "took": 1,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 1,
        "max_score": 0.23014566,
        "hits": [
            {
                "_index": "fuzzy_test",
                "_type": "_doc",
                "_id": "OQtUu2oBABnEwrgM3Ejr",
                "_score": 0.23014566,
                "_source": {
                    "id": "1",
                    "description": "hello world"
                }
            }
        ]
    }
}

1 个答案:

答案 0 :(得分:0)

这很奇怪,但似乎该错误仅存在于Elasticsearch 6.6.0版本中。我已经尝试了6.4.2和6.6.2,它们都可以正常工作。