Мои фильтры сгруппированы в категории. Я хотел бы получить документы, где документ может соответствовать любому фильтру в категории, но если установлены две (или более) категории, то документ должен соответствовать любому из фильтров во ВСЕХ категориях.
Если он написан в псевдо-SQL, он будет выглядеть следующим образом:
SELECT * FROM Documents WHERE (CategoryA = 'A') AND (CategoryB = 'B' OR CategoryB = 'C')
Я пробовал вложенные фильтры следующим образом:
{
"sort": [{
"orderDate": "desc"
}],
"size": 25,
"query": {
"match_all": {}
},
"filter": {
"and": [{
"nested": {
"path":"hits._source",
"filter": {
"or": [{
"term": {
"progress": "incomplete"
}
}, {
"term": {
"progress": "completed"
}
}]
}
}
}, {
"nested": {
"path":"hits._source",
"filter": {
"or": [{
"term": {
"paid": "yes"
}
}, {
"term": {
"paid": "no"
}
}]
}
}
}]
}
}
Но, очевидно, я не совсем понимаю синтаксис ES. Это на правильном пути или мне нужно использовать другой фильтр?