@fidel
Для реализации смешанного типа поиска в query_string
режиме в Elasticsearch можно использовать синтаксис Lucene Query Parser.
В качестве примера, допустим у нас есть индекс my_index
с документами, содержащими поля title
и description
. Для поиска по обоим полям с использованием query_string
запроса можно использовать следующий синтаксис:
1 2 3 4 5 6 7 8 |
GET my_index/_search { "query": { "query_string": { "query": "(title:foo OR description:foo) AND (title:bar OR description:bar)" } } } |
В этом примере мы ищем документы, где в поле title
или description
содержится слово foo
и одновременно в поле title
или description
содержится слово bar
.
Если вы хотите установить определенные настройки для вашего запроса, такие как минимальное количество совпадений (minimum_should_match
) или использование оператора "или" (OR
) вместо оператора "и" (AND
), вы можете указать их в соответствующих полях запроса query_string
.
Например, для использования оператора "или" вместо оператора "и", можно добавить параметр default_operator: "OR"
:
1 2 3 4 5 6 7 8 9 |
GET my_index/_search { "query": { "query_string": { "query": "title:foo description:foo title:bar description:bar", "default_operator": "OR" } } } |
Это означает, что Elasticsearch будет возвращать документы, где встречается хотя бы одно из искомых слов (foo
или bar
) в поле title
или description
.