0

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

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"
           }
          }
         }
      }
      }
     }

它返回的数据是marriages.marriage_year=“1630”,其中玛丽作为名字是最高分。我还想包括1620-1740之间的marriages.marriage_year,这些数据没有显示在结果中。它仅显示 marraige_year 1630 的数据

4

1 回答 1

1

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

于 2017-05-08T11:40:31.963 回答