You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Elasticsearch中使用OR与AND实现多条件组合查询

Elasticsearch 多条件组合查询实现

问题背景

现有数据结构示例:

[
{
    "example_1": false,
    "example_2": "example_string_1",
    "example_3": "example_string_2",
    "example_4": "example_string_3"
}
]

需要筛选同时满足以下所有条件的文档:

  • example_1 为 false
  • example_2 属于两个特定字符串中的一个
  • example_3 属于六个特定字符串中的一个

此前已验证简单查询可正常运行:

{
  "default_field" : "example_1",
  "query": "example_string_1"
}

现需用Query DSL实现多条件组合查询,逻辑等价于 example_1:false AND example_2:(val1 OR val2) AND example_3:(val1 OR ... OR val6)。

解决方案

使用Elasticsearch的bool查询结合term、terms子查询即可实现需求,具体Query DSL语句如下:

{
  "query": {
    "bool": {
      "must": [
        { "term": { "example_1": false } },
        { "terms": { "example_2": ["字符串1", "字符串2"] } },
        { "terms": { "example_3": ["字符串A", "字符串B", "字符串C", "字符串D", "字符串E", "字符串F"] } }
      ]
    }
  }
}

关键说明:

  • bool.must:所有子条件必须同时满足,对应逻辑AND
  • term:用于精确匹配字段的单一值(此处匹配布尔类型的false)
  • terms:用于匹配字段值在指定列表中的任意一项,对应逻辑OR

将上述代码中的示例字符串替换为你的目标字符串后,即可直接在Postman中测试使用。

内容的提问来源于stack exchange,提问作者rav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 16:55:45