Вам нужно выбрать правильный запрос для задания, который может быть тяжелым в начале. Вы можете определенно использовать запрос bool, чтобы объединить всевозможные разные запросы вместе, как уже было предложено. Также есть запросы, которые позволяют выполнять несколько полей, а также внутренне отображать на логические запросы. Кроме того, term queries не так распространены в производственной системе, так как они не поддерживают какой-либо анализ текста, в то время как вы обычно хотите анализировать запрос так, как это было с индексом поля, которое вы запрашиваете.
Одним из наиболее распространенных запросов в elasticsearch является запрос соответствия, который работает в одном поле. И есть еще один запрос с теми же параметрами, которые также работают на нескольких полях, называемых multi_match. Эти запросы поддерживают анализ текста и работают очень хорошо. Я бы предложил использовать их для запроса query_string, например, который намного более мощный, но подвержен ошибкам, а также из-за необходимого процесса синтаксического анализа. Я бы сказал, что используйте query_string, только если вам нужна одна из его функций (например, задание имен полей или логических операторов в самом запросе), в противном случае - для запросов соответствия.
Также важно понять разницу между запросами и фильтрами, взгляните на here, чтобы узнать больше.
И взгляните на все запросы, доступные с помощью the query DSL, и поиграйте с ними, просто чтобы почувствовать все, что вы можете сделать.
Помимо того, что он хорошо написан, этот пост был невероятно полезен. Благодарим вас за разъяснения и ссылки на источники. –
Добро пожаловать, спасибо за вашу приятную обратную связь @ AndreasKavountzis! – javanna
Как бы вы объединили 'multi_match' с' match_phrase_prefix'? Я хочу найти подстроку в нескольких полях. Он не должен соответствовать всем полям, если он существует в одном из них. – Chrillewoodz