elasticsearch中的布尔模糊查询未返回预期结果

时间:2019-07-22 02:20:01

标签: elasticsearch

我正在尝试在Elasticsearch 7.2.0中的名字和姓氏上建立模糊布尔查询。我有一个分别使用“ asim”和“ banskota”作为名字和姓氏的文档。但是,当我使用“ asi”或“ asimmm”以及确切的姓氏进行查询时,elasticsearch不会返回任何结果。但是,当使用确切的名字或“ asimm”查询时,它会从文档中返回预期的结果。

我还写了一个“模糊”查询而不是“匹配”查询。我尝试了不同的模糊度参数,但结果是相同的。姓和名都会被分析,我查询了“ analyzer” API以及它如何分析  “阿西姆”。它使用标准分析器以“ asim”作为单个标记为文档编制索引。

编辑:事实证明,模糊查询适用于“替换”的情况,例如,当使用“ asmi”查询时,它为“ asim”返回结果,但不删除。令我惊讶的是,替换中的编辑距离大于删除情况下的编辑距离。当字符串长度较大时(例如姓氏为“ Banskota”),模糊匹配也适用于“删除”情况。如何在字符串长度为4或5的“删除”情况下使模糊搜索工作?

fuzzy_body = {"size": 10, 
               "query":{
                   "bool":{
                      "must": [


                    {
                        "match":{"FIRST_NAME_N":{'query': 'asi',"fuzziness": "AUTO"}},

                    },

                   {
                   "fuzzy":{"LAST_NAME_N": "banskota"}
                   }
                      ]
                   }
               }
              }

1 个答案:

答案 0 :(得分:0)

事实证明,如果将名称字段索引为关键字类型,则查询将返回带有“ AUTO”模糊性的预期结果。