Нечеткость в типе даты

У меня есть поле даты в моем сопоставлении, и я хочу выполнить нечеткий поиск в своем поле. Ниже приведен мой код.

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

Он возвращает данные с Marriage_year = "1630" с Марией как first_name как наивысший балл. Я также хочу включить Marriage_year между 1620 и 1740 годами, которые не отображаются в результатах. Он показывает данные только за marraige_year 1630.


person Sushil    schedule 08.05.2017    source источник
comment
нечеткость не имеет смысла в поле date. Вероятно, вам нужен range запрос: elastic.co/guide/en/elasticsearch/reference/current/   -  person Russ Cam    schedule 08.05.2017


Ответы (1)


Нечеткий запрос предназначен для работы со строковыми полями с учетом ошибок ввода. Это дает вам результат на основе расстояния редактирования.
Не имеет смысла использовать его для числовых полей. Как и 1000, 9000 имеют только расстояние 1, но они далеко друг от друга. Вы можете выполнить запрос диапазона, как предложил Расс, или, если вас беспокоит расстояние редактирования, а не диапазон, проиндексируйте его как строковое поле, а затем выполните нечеткий запрос.

person Krrish Raj    schedule 08.05.2017