@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.