2016-05-27 65 views
0

我對Elasticsearch相當新穎。我試圖將基本邏輯查詢映射到elasticsearch查詢DSL。將邏輯查詢映射到elasticsearch查詢DSL

據我所知,bool用於對ES進行布爾(邏輯)查詢。我可以映射查詢一樣,如果(COND1 & & COND2),但我不明白如何使或查詢一樣,如果(COND1 || COND2)

邏輯查詢

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

彈性搜索DSL

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

我該怎麼寫if(attr1==val1 || attr2==val2)

回答

0

您可以通過使用|(或)運算符(see docs)做這樣的:

s = search.Search() 
s = s.filter(Q('term', attr1='val1') | Q('term', attr2='val2')) 

這相當於我沒有使用python

"bool" : { 
    "should" : { 
     ["term":{"attr1":"val1"}, {"term":"attr2":"val2"}] 
    }, 
    "minimum_should_match": 1 
} 
+0

。你能爲我提供相應的JSON查詢DSL嗎? – shiladitya

+0

對不起,更新了我的答案。 – Val

+0

謝謝,我也從這裏得到了這個想法 - https://www.elastic.co/guide/en/elasticsearch/guide/current/combining-filters.html應該先經過這個! – shiladitya