用於對聚合文檔提取值進行求和的單值指標聚合。
這些值既可通過文檔的數字字段提取,也可通過腳本來生成。
假設數據由銷售記錄所組成,那麼我們可使用下面的請求來計算所有帽子的總銷售價格:
POST /sales/_search?size=0
{
"query" : {
"constant_score" : {
"filter" : {
"match" : { "type" : "hat" }
}
}
},
"aggs" : {
"hat_prices" : { "sum" : { "field" : "price" } }
}
}
響應為:
{
...
"aggregations": {
"hat_prices": {
"value": 450.0
}
}
}
聚合名稱(即上面的intraday_return)也可作為檢索聚合結果的key。
Script
也可通過腳本來獲取總銷售價:
POST /sales/_search?size=0
{
"query" : {
"constant_score" : {
"filter" : {
"match" : { "type" : "hat" }
}
}
},
"aggs" : {
"hat_prices" : {
"sum" : {
"script" : {
"source": "doc.price.value"
}
}
}
}
}
它會使用painless腳本語言來將script參數解析為內聯腳本(不帶參數)。
可通過如下語法來使用存儲腳本:
POST /sales/_search?size=0
{
"query" : {
"constant_score" : {
"filter" : {
"match" : { "type" : "hat" }
}
}
},
"aggs" : {
"hat_prices" : {
"sum" : {
"script" : {
"id": "my_script",
"params" : {
"field" : "price"
}
}
}
}
}
}
Value Script
在腳本中,也可使用_value來訪問字段值.例如,下面的請求會對所有帽子價格的平方進行求和:
POST /sales/_search?size=0
{
"query" : {
"constant_score" : {
"filter" : {
"match" : { "type" : "hat" }
}
}
},
"aggs" : {
"square_hats" : {
"sum" : {
"field" : "price",
"script" : {
"source": "_value * _value"
}
}
}
}
}
Missing value
missing參數用於定義如何處理文檔中的缺失值。
默認情況下,缺失值文檔會被忽略。若不想忽略,則可以使用missing參數定義缺失值。
例如,下面的聚合請求會將price字段的缺失值視為100.
POST /sales/_search?size=0
{
"query" : {
"constant_score" : {
"filter" : {
"match" : { "type" : "hat" }
}
}
},
"aggs" : {
"hat_prices" : {
"sum" : {
"field" : "price",
"missing": 100 #1
}
}
}
}
1.price字段中無值的文檔會與值為100的文檔放在同一個桶中.
全部指標聚合,請參考
單值指標聚合
多值指標聚合
地理位置相關聚合
可執行Map-Reduce計算的聚合
閱讀更多 Java源 的文章