Можно ли средствами Elasticsearch 1.7 составить запрос, в котором будет поиск по словосочетанию по нескольким полям, чтобы пользователь ввел словосочетание ""красный цвет"", а нашлось и ""красный цвет"" и ""цвет красный"". Интересует именно реализация на стороне эластика через какой-нибудь параметр или флаг.
Текущий запрос находит только ""красный цвет"":
Я бы не стал использовать ElasticSearch 1.7. Эта версия морально устарела, больше не поддерживается, и просто небезопасна.
Посмотрите на параметр phrase_slop если его увеличить до 2, то он должен и красный цвет и цвет красный. Но побочный эффект этого параметра, то что он будет находит еще и фразы типа красный или оранжевый цвет.
Если нужно больше контроля, то посмотрите запрос span near. В нем можно указывать нужно ли учитывать порядок слов во фразе.
Спасибо за совет по переходу на новую версию!
Да, версия устарела. Пробовали переход на 5 версию - получили ошибки при сортировке nested-агрегаций.
Уже думал что про баг забыли. Но после Вашего сообщения был найден PR, который фиксит ошибку, ура!
По сабжу, решения в 1.7 и правда не совершенны. В 6+ версии уже наверное есть что-то получше для решения моего вопроса?
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.