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" } } } }
结果:
更加复杂的查询,后续慢慢在实践中道来。
时间: 2024-11-08 21:32:28