我希望使用 Elasticsearch 查询执行以下操作,
-> 按条件 X 过滤
-> 获取既不满足条件A也不满足条件B的记录
为此,我最初在下面进行了操作,然后意识到“must_not”在条件 A 和 B 之间执行 AND 操作。
{
"query": {
"bool": {
"filter": [
{
"term": {
"district_id": {
"value": 123456
}
}
}
],
"must_not": [
{
"match": {
"district_name": {
"query": "Mydist"
}
}
},
{
"term": {
"state_id": {
"value": 123
}
}
}
]
}
}
}
建议的一些解决方案非常令人困惑,我想知道是否有一个易于理解的解决方案。我的是7.13版本。
你快到了。您只需要将两个
must_not
子句埋入顶级bool/should
. 您正在寻找的查询是这样的: