閱讀249 返回首頁    go 群英


統計aggregate子句__搜索子句介紹_API參考手冊_開放搜索-阿裏雲

子句說明

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

語法說明

統計子句格式為:group_key:field, range:number1~number2, agg_fun:func1#func2, max_group:number2, agg_filter:filter_clause, max_group:number

  • group_key:必選參數。field為要進行統計的字段名,必須配置屬性字段,目前支持int類及literal類型的字段做統計。
  • agg_fun:必選參數。func可以為count()、sum(id)、max(id)、min(id)四種係統函數,含義分別為:文檔個數、對id字段求和、取id字段最大值、取id字段最小值;支持同時進行多個函數的統計,中間用英文井號(#)分隔;sum、max、min的內容支持基本的算術運算;
  • range:表示分段統計,可用於分布統計,隻支持單個range參數。表示number1~number2及大於number2的區間情況。不支持string類型的字段分布統計。
  • agg_filter:非必須參數,表示僅統計滿足特定條件的文檔;
  • agg_sampler_threshold:非必須參數,抽樣統計的閾值。表示該值之前的文檔會依次統計,該值之後的文檔會進行抽樣統計;
  • agg_sampler_step:非必須參數,抽樣統計的步長。表示從agg_sampler_threshold後的文檔將間隔agg_sampler_step個文檔統計一次。對於sum和count類型的統計會把閾值後的抽樣統計結果最後乘以步長進行估算,估算的結果再加上閾值前的統計結果就是最後的統計結果。
  • max_group:最大返回組數,默認為1000。

注意事項

  1. aggregate為非必選子句;
  2. 在aggregate中出現的字段必須在定義應用結構的時候配置為屬性字段;
  3. aggregate結果會在搜索節點facet節點中展示出來,具體值字段名為agg_fun的名字,如sum、count等
  4. aggregate支持多個key的統計,多個統計中間用英文分號(;)分隔。

示例

搜索包含“浙大”的文檔,並按照group_id字段進行統計,統計維度包含對price字段進行求和及計算最大值;並對company_id進行統計個數:

  1. query=default:'浙大'&&aggregate=group_key:group_id,agg_fun:sum(price)#max(price);group_key:company_id,agg_fun:count()

返回結果為:

  1. {
  2.   status: "OK",
  3.   result: {
  4.     searchtime: 0.015634,
  5.     total: 5,
  6.     num: 1,
  7.     viewtotal: 5,
  8.     items: [ //具體搜索結果
  9.       { ... }
  10.     ],
  11.     facet: [
  12.       {
  13.         key: "group_id",
  14.         items: [
  15.           {
  16.             value: 43,
  17.             sum: 81,
  18.             max: 20,
  19.           },
  20.           {
  21.             value: 63,
  22.             sum: 91,
  23.             max: 50,
  24.           },
  25.         ],
  26.       },
  27.       {
  28.         key: "company_id",
  29.         items: [
  30.           {
  31.             value: 13,
  32.             count: 4,
  33.           },
  34.           {
  35.             value: 10,
  36.             count: 1,
  37.           },
  38.         ],
  39.       },
  40.     ],
  41.   },
  42.   errors: [ ],
  43.   tracer: "",
  44. },

搜索包含“浙大”的文檔,並按照group_id字段進行統計,統計維度包含對price字段進行求和。其中10000以後的文檔進行抽樣,步長為5:

  1. query=default:'浙大'&&aggregate=group_key:group_id,agg_fun:sum(price), agg_sampler_threshold:10000, agg_sampler_step:5

搜索包含“浙大”的文檔,並按照group_id字段進行統計個數,統計維度為小於10、10~50、及大於50的文檔數;

  1. query=default:'浙大'&&aggregate=group_key:group_id,agg_fun:count(),range:10~50

搜索包含“浙大”的文檔,並按照group_id字段進行統計hits及replies的和的最大值,僅統計create_timestamp大於1423456781的文檔;

  1. query=default:'浙大'&&aggregate=group_key:group_id,agg_fun:max(hits+replies),agg_filter:create_timestamp>1423456781

最後更新:2016-11-23 16:04:03

  上一篇:go 排序sort子句__搜索子句介紹_API參考手冊_開放搜索-阿裏雲
  下一篇:go 聚合distinct子句__搜索子句介紹_API參考手冊_開放搜索-阿裏雲