Я бы хотел определить DSL-запрос, чтобы описать запрос в Lucene ниже:
q = role:(admin OR manager) AND priority:(high OR middle).
Я знаю, что могу использовать should
для обозначения логики OR
, однакоЗапрос DSL ниже:
{
"query": {
"bool": {
"should": [
{
"match": {
"role": "admin"
}
},
{
"match": {
"role": "manager"
}
},
{
"match": {
"priority": "high"
}
},
{
"match": {
"priority": "middle"
}
}
],
"minimum_should_match": "2"
}
}
}
не может достичь того, что мне нужно, так как данные
{
"role": [ "admin", "manager"],
"priority": "low"
}
будут считаться действительными, но они НЕ ДЕЛАЮТ.
Как я могу исправить свой запрос DSL?Я использую ElasticSearch 5.2.2, спасибо!