Elasticsearch bool query 布爾複合查詢

簡介

它是使用一個或多個布爾子句構建的,每個子句都具有類型的出現。
bool query 使用最好查詢方法,每個匹配項mustshould子句的得分將加到一起,_score以爲每個文檔提供最終結果。

支持參數

  1. must 子句(查詢)必須出現在匹配的文檔中,並將有助於得分。
  2. filter,子句(查詢)必須出現在匹配的文檔中。但是不像 must查詢的分數將被忽略。Filter子句在filter上下文中執行,這意味着計分被忽略,並且子句被考慮用於緩存。
  3. should,子句(查詢)應出現在匹配的文檔中。
  4. must_not,子句(查詢)不得出現在匹配的文檔中。子句在過濾器上下文中執行,這意味着計分被忽略,並且子句被視爲用於緩存。由於忽略計分,0因此將返回所有文檔的分數。

minimum_should_match參數

您可以使用minimum_should_match參數指定返回的文檔,必須滿足should子句的數量或百分比。
如果bool查詢包含至少一個should子句,而沒有mustfilter子句,則默認值爲1。否則,默認值爲0。
簡單來說,只有滿足指定minimum_should_match數量的should子句的文檔,才符合要求。

請求示例

POST bank_new/_search
{
  "query": {
    "bool" : {
      "must" : {
        "term" : { "state" : "VA" }
      },
      "filter": {
        "range" : {
          "balance": { "gte" : 1000, "lte" : 100000 }
        }
      },
      "must_not" : {
        "range" : {
          "age" : { "gte" : 50, "lte" : 150 }
        }
      },
      "should" : [
        { "term" : { "city" : "Salix" } },
        { "term" : { "city" : "Dante" } }
      ],
      "minimum_should_match" : 1,
      "boost" : 1.0
    }
  }
}

minimum_should_match 詳解

類型 示例 描述
整數 1 子句的數量,固定值
負整數 -1 表示可選子句的數量,應該減去這個值
百分比 75% 表示必需的可選子句總數的此百分比。根據百分比計算得出的數字將四捨五入並用作最小值。
父百分比 -25% 表示可能缺少可選子句總數的這一百分比。從百分比中計算出的數字會四捨五入,然後從總數中減去以確定最小值。

注意

當處理百分比時,負值可用於在極端情況下獲得不同的行爲。在處理4個子句時,75%和-25%表示相同的內容,但是在處理5個子句時,75%表示需要3,而-25%表示需要4。

如果基於規範的計算確定不需要任何可選子句,則有關BooleanQueries的常規規則仍將在搜索時適用(不包含必需子句的BooleanQuery必須仍與至少一個可選子句匹配)。

無論計算達到多少,都將永遠不會使用大於可選子句數量的值或小於1的值。(即:無論計算結果的結果有多低或多高,所需匹配項的最小數量都不會低於1或大於子句的數量。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章