Elasticsearch - объединение query_string и bool запроса в фильтре
Можно ли совместить query_string
а также bool query
в filter query
?
Например -
{
"filter": {
"query_string": {
"query": "field:text"
}
},
"bool": {
"should": {
"match": {
"field": "text"
}
}
}
}
1 ответ
Решение
bool предназначен для объединения различных запросов в один запрос bool. Вы можете использовать bool для объединения нескольких запросов таким образом -
{
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "field:text"
}
},
{
"match": {
"field": "text"
}
}
]
}
}
}
Предложение must гарантирует, что все условия будут выполнены. Вы также можете использовать if, чтобы убедиться, что один из запросов совпадает, если используется только must.
Поскольку bool - это просто еще один тип запроса, вы также можете разбивать запросы bool внутри запросов bool следующим образом:
{
"query": {
"bool": {
"must": [
{
"bool": {
"must": [
{
"query_string": {
"query": "field:text"
}
},
{
"match": {
"field": "value"
}
}
]
}
},
{
"match": {
"field": "text"
}
}
]
}
}
}