如何在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
相关产品推荐
相关产品推荐

