我的 map 中有日期字段,我想对字段进行模糊搜索
下面是我的代码

GET _search
  {
       "query": {
        "fuzzy": {
             "death_date": {
              "value": "3548"

         }
     }
   }
}

当前结果未按预期返回数据。
尽管我有3548的值,但是它的分数小于显示在结果顶部的3549的值
我已将查询更改为包含建议的范围参数
  GET _search
    {
     "query" : {
     "bool": {
     "must":
    {
      "match": {
        "marriages.marriage_year": "1630"
      }
    },
   "should":
      {
      "match": {
        "first_name":
        { "query" : "mary",
        "fuzziness":"2"
       }
      }
    },
    "must":
    {
      "range" : {
        "marriages.marriage_year": {
          "gt" : "1620",
          "lte" : "1740"
           }
          }
         }
      }
      }
     }

它将返回的数据为weddings.marriage_year =“1630”,其中以玛丽为第一名是最高分。我还希望包括1620年至1740年之间的未婚夫妇。它仅显示marraige_year 1630的数据

最佳答案

模糊查询旨在处理字符串字段以适应键入错误。它根据编辑距离为您提供结果。在数字字段上使用它没有任何意义。由于1000、9000仅具有距离1,但它们相距较远。您可以按照Russ的建议进行范围查询,或者如果您对编辑距离而不是范围感到困扰,则将其索引为字符串字段,然后进行模糊查询。

10-06 10:50
查看更多