我目前正在努力处理 ElastSearch 查询,该查询目前看起来如下:
...
"query": {
"bool": {
"must_not": [
{
"term": {
"bool-facet.criteria1": {
"value": false
}
}
},
{
"term": {
"bool-facet.criteria2": {
"value": false
}
}
}
]
}
}
...
所以现在当 criteria1 或 criteria2 匹配时,文档将被忽略。查询必须如何才能仅忽略匹配 criteria1 和 criteria2 的文档?
最佳答案
如果你想要简单的 AND
行为,那么只需在其中嵌套另一个 bool
查询:
"query": {
"bool": {
"must_not": [
{
"bool": {
"filter": [
{
"term": {
"bool-facet.criteria1": false
}
},
{
"term": {
"bool-facet.criteria2": false
}
}
]
}
}
]
}
}
请注意,通过使用 filter
(因为这是一个不需要评分的是/否问题,但如果您想要评分,那么您将使用 must
而不是 filter
) 您将获得所需的 AND
行为。这会将问题更改为“不(任何具有 criteria1 == false AND criteria2 == false 的文档)”。
关于elasticsearch - 在 ElasticSearch 查询中结合 must_not,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38640784/