Например, в SQL я бы написал (a AND b) OR (c AND d). Но не могу найти прямого аналога в elasticsearch.
В Elasticsearch,
should эквивалентен OR в SQL, а must эквивалентен AND.
Таким образом, следующий запрос эквивалентен вашему SQL-запросу и даст первые 10 результатов.
(A=a AND B=b) OR (C=c AND D=d)
GET /<indexName>/_search
{
"query": {
"bool": {
"should": [
{
"match": {
"bool": {
"must": [
{
"match": {
"A": "a"
}
},
{
"match": {
"B": "b"
}
}
]
}
}
},
{
"match": {
"bool": {
"must": [
{
"match": {
"C": "c"
}
},
{
"match": {
"D": "d"
}
}
]
}
}
}
]
}
},
"from": 0,
"size": 10,
"sort": [],
"aggs": {}
}
Ссылка: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html
Удачи с этим?