這是一種多值指標聚合,用於對聚合文檔提取數值進行統計.
這些值即可從文檔中的特定數值字段提取,也可通過提供的腳本生成.
extended_stats聚合是stats 聚合的擴展版本,除了stats 聚合的基本統計信息外,extended_stats還會返回sum_of_squares(平方和), variance(方差), std_deviation(標準差)和std_deviation_bounds(標準差界限)等統計信息.
假設數據由學生考試成績(0到100)組成
GET /exams/_search
{
"size": 0,
"aggs" : {
"grades_stats" : { "extended_stats" : { "field" : "grade" } }
}
}
上述聚合會對所有文檔的成績進行統計.
聚合類型是extended_stats,field定義了參與統計的數值字段.
上述聚合返回如下結果:
{
...
"aggregations": {
"grades_stats": {
"count": 2,
"min": 50.0,
"max": 100.0,
"avg": 75.0,
"sum": 150.0,
"sum_of_squares": 12500.0,
"variance": 625.0,
"std_deviation": 25.0,
"std_deviation_bounds": {
"upper": 125.0,
"lower": 25.0
}
}
}
}
聚合名稱(上面的Grades_Stats)也可用作返回響應中的聚合結果檢索鍵.
Standard Deviation Bounds(標準偏差界限)
默認情況下,extended_stats指標會返回一個名為std_deviation_bounds的對象,該對象提供一個與均值正負兩個標準差的間隔。這是觀察數據差異的有用方法。
如果需要不同的邊界,例如三個標準偏差,可以在請求中設置Sigma:
GET /exams/_search
{
"size": 0,
"aggs" : {
"grades_stats" : {
"extended_stats" : {
"field" : "grade",
"sigma" : 3 #1
}
}
}
}
1.sigma控制應顯示多少文化與平均值標準偏差+/-
sigma只能是非負的double,例如1.5。 值0有效,但只返回上限和下限的平均值.
注意
Standard Deviation and Bounds require normality
默認會顯示標準偏差及其邊界,但這並不適用於所有數據集。數據只在正常分佈的情況下,指標才有意義。 標準偏差背後的統計數據假設是數據是正態分佈的,因此如果數據嚴重偏向左或右,則返回的值將會產生誤導。
Script
可基於腳本來計算成績統計信息:
GET /exams/_search
{
"size": 0,
"aggs" : {
"grades_stats" : {
"extended_stats" : {
"script" : {
"source" : "doc['grade'].value",
"lang" : "painless"
}
}
}
}
}
這會使用painless腳本語言來將script參數解析為內聯腳本(不帶腳本參數).
可通過如下語法來使用存儲腳本:
GET /exams/_search
{
"size": 0,
"aggs" : {
"grades_stats" : {
"extended_stats" : {
"script" : {
"id": "my_script",
"params": {
"field": "grade"
}
}
}
}
}
}
Value Script
事實證明,考試難度高於學生水平,需要進行等級校正,為此可使用值腳本來獲取新的統計信息:
GET /exams/_search
{
"size": 0,
"aggs" : {
"grades_stats" : {
"extended_stats" : {
"field" : "grade",
"script" : {
"lang" : "painless",
"source": "_value * params.correction",
"params" : {
"correction" : 1.2
}
}
}
}
}
}
Missing value
missing 參數用於定義如何處理文檔中的缺失值。
默認,它會忽略缺失值,但也可以將其視為有值字段。
GET /exams/_search
{
"size": 0,
"aggs" : {
"grades_stats" : {
"extended_stats" : {
"field" : "grade",
"missing": 0 #1
}
}
}
}
1.對於無值的grade字段,其所屬文檔會與值為0的文檔放在同一個桶內。
全部指標聚合,請參考
單值指標聚合
多值指標聚合
地理位置相關聚合
可執行Map-Reduce計算的聚合
閱讀更多 Java源 的文章