Я планирую превратить мои поисковые и фильтрующие системы в Elasticsearch. Изучив много документации, я обнаружил, что у эластичного поиска есть возможность создавать фасеты. Я добавил некоторые аспекты в боковую панель навигации левого фильтра и запросил мои продукты и аспекты, отфильтровав их с помощью поля категории вasticsearch.
Но дело в том, что я не знаю, как запросить обратно вasticsearch для выбранных аспектов.
я использовал
'filter' => [
'bool' => [
'must' => [
['match_phrase' => [ 'Material' => 'Aluminum' ]],
['match_phrase' => [ 'Length' => '1/2']]
]
]
]
этот код в теге тела клиента эластичного поиска php. Это на самом деле работает, но у меня есть другие продукты, которые имеют длину 1 / 2-3 или 1 / 2-4. Когда я запрашивал 1/2, Elastic также получает 1 / 2-3 и 1 / 2-4, потому что «1 / 2-3» и «1 / 2-4» содержат также «1/2».
Интересно, как искать и получать именно те продукты, которые имеют 1/2, а не 1 / 2-3 или 1 / 2-4, какой запрос мне следует использовать именно?
Спасибо!
Примечание: аспекты не рекомендуется, я знаю. Я использую это слово, потому что я привык к нему. Это теперь агрегаты в Elasticsearch 2.3. и я использую эту версию. *
Получил мое решение!
Вместо match_phrase я использовал термин метод. Он получает именно то, что мне нужно. Он ищет точное совпадение, не содержащее совпадения, вместо match_phrase. Match_phrase ищет точную фразу рядом.
Но для термина вам нужно создать поля с not_analyzed для точного результата.
Других решений пока нет …