Запрос Elastic Search 6.2 не дает правильных результатов с фильтрами

"query": {
"bool": {
  "should": [
    {
      "dis_max": {.........}
    }
  ],
  "filter":  [
        {
          "term": {
            "city": "default_city"
          }
        },
        {
          "term": {
            "used_for": "sell"
          }
        },
        {
          "terms": {
            "category": ["C1","C2"]
          }
        }
      ]
}
}

Однако полученные результаты также содержат документы с полем «used_for» «не продавать», в результате чего поле «used_for» в качестве типа ключевого слова перестало давать какие-либо результаты в целом. Пожалуйста, дайте мне знать, что я здесь не так.


person smartsn123    schedule 14.07.2018    source источник


Ответы (1)


Используя стандартный анализатор, " непродать »будет храниться как два токена:« не продавать »и« продавать », поэтому поиск по запросу« продать »будет соответствовать. Если вы сделаете поле типом ключевого слова, это должно решить вашу проблему, но имейте в виду, что поиск должен соответствовать всему полю, любым пробелам и учитывать регистр. Если вы переключитесь на анализатор пробелов, ваши дефисы и регистр будут сохранены, но не пробелы.

person Adam T    schedule 14.07.2018