Elasticsearch布爾查詢——bool
阿新 • • 發佈:2017-12-05
post 包含 ear earch 同時 curl ddr 利用 此外
布爾查詢允許我們利用布爾邏輯將較小的查詢組合成較大的查詢。
1、查詢返回包含“mill”和“lane”的所有的賬戶
curl -XPOST ‘localhost:9200/bank/_search?pretty‘ -d ‘ { "query": { "bool": { "must": [ { "match": { "address": "mill" } }, { "match": { "address": "lane" } } ] } } }‘
在上面的例子中,bool must語句指明了,對於一個文檔,所有的查詢都必須為真,這個文檔才能夠匹配成功。
2、查詢返回地址中包含“mill”或者“lane”的所有的賬戶
curl -XPOST ‘localhost:9200/bank/_search?pretty‘ -d ‘ { "query": { "bool": { "should": [ { "match": { "address": "mill" } }, { "match": { "address": "lane" } } ] } } }‘
在上面的例子中,bool should語句指明,對於一個文檔,查詢列表中,只要有一個查詢匹配,那麽這個文檔就被看成是匹配的。
3、查詢返回地址中既不包含“mill”,同時也不包含“lane”的所有的賬戶
curl -XPOST ‘localhost:9200/bank/_search?pretty‘ -d ‘ { "query": { "bool": { "must_not": [ { "match": { "address": "mill" } }, { "match": { "address": "lane" } } ] } } }‘
在上面的例子中, bool must_not語句指明,對於一個文檔,查詢列表中的的所有查詢都必須都不為真,這個文檔才被認為是匹配的。
我們可以在一個bool查詢裏一起使用must、should、must_not。此外,我們可以將bool查詢放到這樣的bool語句中來模擬復雜的、多等級的布爾邏輯。
下面這個例子返回40歲以上並且不生活在ID(daho)的人的賬戶:
curl -XPOST ‘localhost:9200/bank/_search?pretty‘ -d ‘ { "query": { "bool": { "must": [ { "match": { "age": "40" } } ], "must_not": [ { "match": { "state": "ID" } } ] } } }‘
Elasticsearch布爾查詢——bool