Stats Aggregation
這是一種多值指標聚合,用於計算聚合文檔提取值的統計數據。這些值既可通過文檔的數字字段提取,也可通過腳本來生成。
該聚合返回的統計信息包括: min,max,sum,count,avg.
假設文檔由學生的考試成績(0~100)所組成:
POST /exams/_search?size=0
{
"aggs" : {
"grades_stats" : { "stats" : { "field" : "grade" } }
}
}
上面的聚合會計算所有文檔的成績統計數據。聚合類型是stats,聚合字段是grade.
上述聚合會返回如下結果:
{
...
"aggregations": {
"grades_stats": {
"count": 2,
"min": 50.0,
"max": 100.0,
"avg": 75.0,
"sum": 150.0
}
}
}
聚合名稱(即上面的grades_stats)可作為檢索聚合結果的key.
Script
也可基於腳本來統計成績數據:
POST /exams/_search?size=0
{
"aggs" : {
"grades_stats" : {
"stats" : {
"script" : {
"lang": "painless",
"source": "doc['grade'].value"
}
}
}
}
}
這會使用painless腳本語言來將script參數解析為內聯腳本(不帶腳本參數).
可通過如下語法來使用存儲腳本:
POST /exams/_search?size=0
{
"aggs" : {
"grades_stats" : {
"stats" : {
"script" : {
"id": "my_script",
"params" : {
"field" : "grade"
}
}
}
}
}
}
Value Script
事實證明,考試難度高於學生水平,需要進行等級校正。
我們可以使用值腳本來獲取新的統計信息:
POST /exams/_search?size=0
{
"aggs" : {
"grades_stats" : {
"stats" : {
"field" : "grade",
"script" : {
"lang": "painless",
"source": "_value * params.correction",
"params" : {
"correction" : 1.2
}
}
}
}
}
}
Missing value
missing 參數用於定義如何處理文檔中的缺失值.
默認,它會忽略缺失值,但也可以將其視為有值字段.
POST /exams/_search?size=0
{
"aggs" : {
"grades_stats" : {
"stats" : {
"field" : "grade",
"missing": 0 #1
}
}
}
}
1.對於無值的grade字段,其所屬文檔會與值為0的文檔放在同一個桶內。
全部指標聚合,請參考
單值指標聚合
多值指標聚合
地理位置相關聚合
可執行Map-Reduce計算的聚合