Elasticsearch是一款功能強大的開源軟件,不僅可以檢索排序,還可以對文檔進行更復雜的操作--聚合。
1、單值聚合
Sum求和,dsl參考如下:
{ "size": 0, "aggs": { "return_balance": { "sum": { "field": "balance" } } } }
返回balance之和,其中size=0 表示不需要返回參與查詢的文檔。
Min求最小值
{ "size": 0, "aggs": { "return_min_balance": { "min": { "field": "balance" } } } }
返回結果
Max求最大值
{ "size": 0, "aggs": { "return_max_balance": { "max": { "field": "balance" } } } }
返回結果:
AVG求平均值
{ "size": 0, "aggs": { "return_avg_balance": { "avg": { "field": "balance" } } } }
返回結果:
Cardinality 求基數(如下示例,查找性別的基數 M、F,共兩個)
{ "size": 0, "aggs": { "return_cardinality": { "cardinality": { "field": "gender" } } } }
結果為:
2、多值聚合
percentiles 求百分比
查看官方文檔時候,沒看懂,下面是自己測試時的例子,按照性別(F,M)查看工資范圍的百分比
{ "size": 0, "aggs": { "states": { "terms": { "field": "gender" }, "aggs": { "banlances": { "percentile_ranks": { "field": "balance", "values": [ 20000, 40000 ] } } } } }
結果:
stats 統計
查看balance的統計情況:
{ "size": 0, "aggs": { "balance_stats": { "stats": { "field": "balance" } } } }
返回結果:
extended_stats 擴展統計
{ "size": 0, "aggs": { "balance_stats": { "extended_stats": { "field": "balance" } } } }
結果:
更加復雜的查詢,后續慢慢在實踐中道來。