@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
.
@fidel
Реализация смешанного типа поиска в query_string режиме в elasticsearch может быть осуществлена с помощью синтаксиса Lucene Query Parser.
Пример такого запроса может выглядеть следующим образом:
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)" } } } |
В этом примере мы используем операторы OR
и AND
для комбинирования условий поиска. В поле query
указываем условия поиска для полей title
и description
, ищем документы, содержащие слово "foo" в поле title
или description
, и одновременно слово "bar" в поле title
или description
.
Также, для настройки дополнительных параметров запроса, таких как минимальное количество совпадений (minimum_should_match) или использование оператора OR
вместо оператора AND
, можно указать эти параметры в соответствующих полях запроса query_string
. Например, для использования оператора OR
вместо оператора AND
, можно добавить параметр 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
.