elasticsearch 'или' связь между запросом и фильтром

Я создаю функции новостной ленты для пользователей, я хочу обрабатывать результаты с помощью запроса и фильтра, но мне нужна связь 'или' между условия запроса и фильтрации, например:

posts query: 'old castles' or filter: {country: 'France'}

Это означает, что дайте мне сообщения, в которых выполняется поиск по запросу "старые замки". или поле "Страна" в точности равно "Франция"

P.S. Приложение находится на Rails, и я использую гем searchkick для взаимодействия с elasticsearch.

ИЗМЕНИТЬ

В справочнике elasticsearch я нашел запрос как фильтр функция, которая может быть полезна для достижения нужного мне результата, но я не смог найти способ сделать это в searchkick


person Nkadze    schedule 08.03.2016    source источник
comment
{"query": {"filtered": {"query": {"dis_max": { "queries": [ {"match": {"_all":{"query":"castle old","operator":"or","boost":1,"analyzer":"searchkick_search","fuzziness":1,"prefix_length":0,"max_expansions":3,"fuzzy_transpositions":true}} } ] } }, "filter": {"and": [{"or": [{"and": [{"term":{"country":"georgia"}}]}, {"and":[{"term":{"country":"ukraine"}}]}] }] } } }, "size":24, "from":0 } отправлено из searchkick в elasticsearch, но не обеспечивает связи или между запросом и фильтром   -  person Nkadze    schedule 09.03.2016


Ответы (1)


Вы можете использовать метод searchkick 'поиск'

Model.search "old castles", where: { country: 'France' }
person Dias    schedule 09.03.2016
comment
Это отношение 'и', а не 'или' между запросом и фильтром, оно даст мне результаты, запрошенные со старыми замками и отфильтрованные, где страна - "Франция", мне нужны результаты, запрошенные со старыми замками или, отфильтрованные с "Франция" - person Nkadze; 09.03.2016