将逻辑查询映射到 elasticsearch 查询 DSL
Mapping logical queries to elasticsearch query DSL
我是 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)
写什么?
您可以使用 |
(或)运算符 (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
}
我是 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)
写什么?
您可以使用 |
(或)运算符 (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
}