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

如何在DSL查询的两个不同字段中设置OR条件

Elasticsearch DSL OR逻辑修改方案
  • 原查询中bool.must对应的是所有条件同时满足的AND逻辑,要实现OR运算,直接将must替换为should即可
  • 你用到的terms查询天然适配字典列表类型的字段:只要对应字段的列表中存在任意一个字典的id匹配传入值,就会命中文档,完全满足你校验id是否存在于对应字典列表的需求

如果需要更稳妥(避免后续新增其他bool子句影响默认匹配规则),可以在bool层级新增minimum_should_match: 1配置,强制要求至少匹配1条should下的条件,修改后完整代码如下:

a = {'from': 0, 'size': 200,'query': {
    'bool': {
      'should': [
        {
          'terms': {
            'Country Owner.id.keyword': [
              'ABC101'
            ]
          }
        },
        {
          'terms': {
            'Territory Owner.id.keyword': [
              'ABC101'
            ]
          }
        }
      ],
      "minimum_should_match": 1
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:39:02