Проверка на ненулевое с предложением дополнения в Elastic Search - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть существующий запрос, который предоставляет предложения для почтового индекса с запросом, как показано ниже (я жестко закодировал его с почтовым индексом как T0L )

 "suggest":{
    "suggestions":{
      "text":"T0L", 
      "completion":{
        "field": "postcode.suggest"
      }
    }
  }

Это работает нормально, ноон ищет некоторые результаты, где город содержит нулевые значения.Поэтому мне нужно отфильтровать адреса, где город не равен нулю.

Поэтому я следовал решению на этом и подготовил запрос следующим образом.

{
 "query": {
   "constant_score": {
     "filter": {
       "exists": {
         "field": "city"
       }
     }
   }
 }, 
  "suggest":{
    "suggestions":{
      "text":"T0L", 
      "completion":{
        "field": "postcode.suggest"
      }
    }
  }
}

Но, к сожалению, это не дает необходимые адреса, где почтовый индекс содержит T0L , скорее я получаю результаты, где почтовый индекс начинается с A1X .Поэтому я считаю, что он запрашивает все адреса, по которым находится город, и игнорирует запрос подсказки завершения.Подскажите, пожалуйста, где ошибка.Или может быть как правильно написать.

1 Ответ

0 голосов
/ 12 сентября 2018

Нет способа отфильтровать предложения во время запроса, потому что completion подсказчик использует FST (специальную структуру данных в памяти, построенную во время индекса) для молниеносного поиска.

Но вы можетеизмените ваше отображение и добавьте context для вашего подсказчика.Основная идея контекста заключается в том, что он также заполняется во время индекса вместе с полем completion и поэтому может использоваться во время запроса с запросом suggest.

...