elasticsearch - 在 ElasticSearch 查询中结合 must_not

标签 elasticsearch

我目前正在努力处理 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/

相关文章:

node.js - ElasticSearch - 未刷新索引更改

elasticsearch - 弹性中的多匹配查询不匹配初始字符

sorting - Elasticsearch - 将单个结果推到顶部

mysql - 从 sql 到 Elasticsearch 查询的转换

elasticsearch - Kibana多个仪表板支持

elasticsearch - 如何告诉ElasticSearch创建嵌套字段

elasticsearch - 如何获取Elasticsearch索引中自定义映射字段中存储的值

azure - Kubernetes Pod 不断重新启动(CrashBackoffLoop - 错误 : Request Time Out))

mysql - 来自 MySQL JDBC river 的 Elasticsearch 过滤结果

ruby-on-rails - Rails 4搜索选项。有哪些选项可以将完整的HTML网站搜索与ActiveRecord搜索结合在一起?