Elasticsearch布爾查詢——bool


布爾查詢允許我們利用布爾邏輯將較小的查詢組合成較大的查詢。

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" } }
              ]
            }
          }
        }'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM