1. 程式人生 > >Elasticsearch布爾查詢——bool

Elasticsearch布爾查詢——bool

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