Запрос довольно понятен. Я добавил предложение should с совпадением в поле c и отсутствие проверки в поле c. Minimum_should_match установлено как 1. Возвращается документ, соответствующий любому из предложений, т.е. либо он не должен существовать, либо должен соответствовать входной строке
{
"query": {
"bool": {
"must": [
{
"match": {
"a": "norm"
}
},
{
"match_phrase": {
"b": "views"
}
}
],
"should": [
{
"match": {
"c": "claims"
}
},
{
"bool": {
"must_not": [
{
"exists": {
"field": "c"
}
}
]
}
}
],
"minimum_should_match": 1
}
}
}
Данные:
"hits" : [
{
"_source" : {
"a" : "norm",
"b" : "views",
"c" : "claims"
}
},
{
"_source" : {
"a" : "norm",
"b" : "views"
}
},
{
"_source" : {
"a" : "norm",
"b" : "views",
"c" : "ddd"
}
}
]
Результат:
"hits" : [
{
"_source" : {
"a" : "norm",
"b" : "views",
"c" : "claims"
}
},
{
"_source" : {
"a" : "norm",
"b" : "views"
}
}
]
Возвращается документ, в котором c = "претензии" или c не существует