全部產品
Search
文件中心

:aggs子句

更新時間:Sep 04, 2024

子句說明

一個關鍵詞查詢後可能會找到數以萬計的文檔,使用者不太可能瀏覽所有的文檔來擷取自己需要的資訊,有些情況下使用者感興趣的可能是一些統計的資訊。

子句文法

{
  "aggs" : [
    {
      "group_key": "field",
      "agg_fun" : ["func1", "func2"],
      "agg_filter" : "filter_expression",
      "agg_range" : [number1, number2],
      "max_group" : number,
      "order_by":"count"
    } 
  ]
}
  • group_key:必選參數。field為要進行統計的欄位名,必須配置屬性欄位,欄位類型必須是整型或者string類型。

  • agg_fun:必選參數。func可以為count()、sum(id)、max(id)、min(id)、distinct_count(id)五種系統函數,含義分別為:文檔個數、對ID欄位求和、取ID欄位最大值、取ID欄位最小值、對ID進行打散統計;支援同時進行多個函數的統計;

  • agg_filter:選擇性參數,表示僅統計滿足特定條件的文檔,agg_filter為邏輯運算式,具體邏輯可以參考filter子句。

  • range:選擇性參數,表示分段統計,可用於分布統計,只支援單個range參數。表示統計number1~number2及大於number2的區間情況。不支援string類型的欄位分布統計。

  • max_group:選擇性參數,最大返回組數,預設為1000。

  • order_by:選擇性參數,參數必須為count,對統計結果進行排序,不指定預設安裝group_key字典序排序。

樣本:

  • 簡單統計樣本

    {
      "aggs" : [
        {
          "group_key": "group_id",
          "agg_fun" : ["sum(price)"]
    		} 
      ]
    }
    
    返回結果樣本(只展示統計結果):
    {
      result: {
        facet: [
          {
            key: "group_id",
            items: [
              {
                value: 43,
                sum: 81
              },
              {
                value: 63,
                sum: 91
              }
            ]
          }
        ]
      }
    },

  • 同時統計多項資訊

    {
      "aggs" : [
        {
          "group_key": "company_id",
          "agg_fun" : ["sum(id)", "max(id)", "min(id)"]
    		} 
      ]
    }

  • 多groupkey統計

    {
      "aggs" : [
        {
          "group_key": "group_id",
          "agg_fun" : ["sum(price)"]
    		},
        {
          "group_key": "company_id",
          "agg_fun" : ["count()"]
    		} 
      ]
    }

  • 只統計滿足條件的資料

    #只統計price大於100的資料
    {
      "aggs" : [
        {
          "group_key": "group_id",
          "agg_fun" : ["sum(price)"],
          "agg_filter" : "price > 100"
    		} 
      ]
    }

  • 類精確統計

    {
      "aggs" : [
        {
          "group_key": "company_id",
          "agg_fun" : ["distinct_count(brand)"]
    		}
      ]
    }
    註:如果統計函數為distinct_count,表示開啟類精確統計(基於HLL演算法),這種統計的精度損失通常在1%以內。

    注意事項

    • 在aggregate中出現的欄位必須在定義應用結構的時候配置為屬性欄位;

    • aggregate結果會在搜尋節點facet節點中展示出來,具體值欄位名為agg_fun的名字,如sum、count等

    • 該統計子句資訊展示在facet 中,需設定config子句中的format 為fulljson 格式,才會返回並展示facet 對應內容。

    • 受引擎效能影響,aggregate統計子句預設單分區保證10w的召回量下的文檔數統計準確,超過10w的文檔數統計不保證準確,可以通過調整叢集配置來修改詞參數。

    • 如果返回的分組數過多(max_group設定過大,比如萬層級)可能會導致查詢節點(qrs),消耗大量記憶體,出現oom的情況。