Elasticsearch是一款功能强大的开源软件,不仅可以检索排序,还可以对文档进行更复杂的操作–聚合。
单值聚合
Sum求和
1 2 3 4 5 6 7 8 9 10
| { "size": 0, "aggs": { "return_balance": { "sum": { "field": "balance" } } } }
|
返回balance之和,其中size=0 表示不需要返回参与查询的文档。
Min求最小值
1 2 3 4 5 6 7 8 9 10
| { "size": 0, "aggs": { "return_min_balance": { "min": { "field": "balance" } } } }
|
返回结果:
Max求最大值
1 2 3 4 5 6 7 8 9 10
| { "size": 0, "aggs": { "return_max_balance": { "max": { "field": "balance" } } } }
|
返回结果:
AVG求平均值
1 2 3 4 5 6 7 8 9 10
| { "size": 0, "aggs": { "return_avg_balance": { "avg": { "field": "balance" } } } }
|
返回结果:
Cardinality 求基数
如下示例,查找性别的基数 M、F,共两个
1 2 3 4 5 6 7 8 9 10
| { "size": 0, "aggs": { "return_cardinality": { "cardinality": { "field": "gender" } } } }
|
结果为:
多值聚合
percentiles 求百分比
查看官方文档时候,没看懂,下面是自己测试时的例子,按照性别(F,M)查看工资范围的百分比
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| { "size": 0, "aggs": { "states": { "terms": { "field": "gender" }, "aggs": { "banlances": { "percentile_ranks": { "field": "balance", "values": [ 20000, 40000 ] } } } } }
|
结果:
stats 统计
查看balance的统计情况:
1 2 3 4 5 6 7 8 9 10
| { "size": 0, "aggs": { "balance_stats": { "stats": { "field": "balance" } } } }
|
返回结果:
extended_stats 扩展统计
1 2 3 4 5 6 7 8 9 10
| { "size": 0, "aggs": { "balance_stats": { "extended_stats": { "field": "balance" } } } }
|
结果:

更加复杂的查询,后续慢慢在实践中道来。