我是Elasticsearch的新手。我正在尝试将基本逻辑查询映射到elasticsearch查询DSL。
我知道bool用于对ES进行布尔(逻辑)查询。我可以像if(cond1&& cond2)那样映射查询,但我无法理解如何进行OR查询,如if(cond1 || cond2)
逻辑查询
if(attr1==val1 && attr2=val2){}
弹性搜索DSL
"bool" : {
"must" : {
["term":{"attr1":"val1"}, {"term":"attr2":"val2"}]
}
}
我为if(attr1==val1 || attr2==val2)
写了什么?
答案 0 :(得分:0)
您可以使用|
(或)运算符(see docs)执行此操作:
s = search.Search()
s = s.filter(Q('term', attr1='val1') | Q('term', attr2='val2'))
这相当于
"bool" : {
"should" : {
["term":{"attr1":"val1"}, {"term":"attr2":"val2"}]
},
"minimum_should_match": 1
}