将逻辑查询映射到elasticsearch查询DSL

时间:2016-05-27 06:30:21

标签: elasticsearch elasticsearch-2.0

我是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)写了什么?

1 个答案:

答案 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
}