【问题标题】:Mapping logical queries to elasticsearch query DSL将逻辑查询映射到 elasticsearch 查询 DSL
【发布时间】:2016-09-25 08:54:51
【问题描述】:

我对 Elasticsearch 还很陌生。我正在尝试将基本逻辑查询映射到 elasticsearch 查询 DSL。

我了解 bool 用于对 ES 进行布尔(逻辑)查询。我可以映射 if (cond1 && cond2) 之类的查询,但我不明白如何进行 if(cond1 || cond2) 之类的 OR 查询

逻辑查询

if(attr1==val1 && attr2=val2){}

弹性搜索 DSL

"bool" : {
    "must" : {
        ["term":{"attr1":"val1"}, {"term":"attr2":"val2"}]
    }
}

我为if(attr1==val1 || attr2==val2) 写什么?

【问题讨论】:

    标签: elasticsearch elasticsearch-2.0


    【解决方案1】:

    您可以通过使用|(或)运算符(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
    }
    

    【讨论】:

    猜你喜欢
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-01
    • 2021-11-15
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    相关资源
    最近更新 更多