У меня есть поисковый запрос следующего формата:
{
"query": {
"function_score": {
"query": {
"bool": {
"must": {
"simple_query_string": {
"query": "*",
"fields": [
"field1^10",
"field2^3"
]
}
},
"filter": [
{
"terms": {
"field3": [
"val1",
"val2"
]
}
},
{
"terms": {
"field4": [
"val4"
]
}
},
{
"term": {
"field5": true
}
}
]
}
},
"functions": [
{
"gauss": {
"field1": {
"scale": "31d"
}
},
"weight": 5
}
],
"score_mode": "sum",
"boost_mode": "multiply"
}
},
"size": 10
}
Теперь я хочу изменить фильтр на field5
так, чтобы он фильтровал значения, для которых либо field5 установлено как true
, либо если они не индексированы field5
. Мне нужны оба вида результатов, и я хочу исключить только те, для которых field5
имеет значение false.
Я пробовал различные комбинации must_not
с should
внутри filter
, но не смог заставить запрос работать. Спасибо за помощь!
Я пользуюсьasticsearch версии 6.5.1.