Существует два типа контекста: контекст запроса и контекст фильтра .Любое предложение запроса в контексте запроса влияет на оценку соответствующего документа, т. Е. Насколько документ соответствует запросу, тогда как любое предложение запроса в контексте фильтра определяет, соответствует ли документ и не влияет на оценку.
Поэтому в приведенном ниже запросе я выделил оба контекста:
{
"query": {
"bool": {
"must": [
{ "match": { "field1": "terms1"}}, <------query context
],
"filter": [
{ "terms": { "someId": [3242, 12343, 1234] }}, <-------inside filter block every query clause will act as filter (filter context)
]
}
}
}
Поэтому, чтобы использовать запрос терминов в качестве фильтра, необходимо выполнить следующие шаги:
- Создатьзапрос bool скажет
boolQuery
- Создайте запрос условий sat
termsQuery
- Добавьте
termsQuery
к фильтру boolQuery
. - Установите
boolQuery
в качестве запроса.
Это означает:
{
"query": {
"bool": {
"filter": [
{
"terms": {
"field1": ["terms1", "term2", "terms3"]
}
}
]
}
}
}