提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- ES的聚合查询(SUM、MAX、MIN、AVG)
- 1.求和查询
- 2.求平均值
- 3.最大最小值查询
- 4.唯一值查询 (类似于sql中的==distinct 去重==)
- 5.stats聚合
ES的聚合查询(SUM、MAX、MIN、AVG)
1.求和查询
- 例如查询cust_name_s为张三的txn_amt_d的和,sql语句是
select sum(txn_amt_d) as sum_number from trade_info.csrcb where cust_name_s = '张三'
对应的es的查询就是(此处与sql中的sum一样,也有起别名以及聚合方式的参数,其中的aggs可以写全,写成aggregatins)
curl -XPOST "http://192.168.236.131:9200/trade_info/csrcb/_search" -H "Content-Type:application/json" -d '{"query": {"term": {"cust_name_s.keyword": "张三"}},"aggs": {"sum_number": {"sum": {"field": "txn_amt_d"}}}
} '
2.求平均值
- 例如查询cust_name_s为张三的txn_amt_d的平均值
select avg(txn_amt_d) as avg_number from trade_info.csrcb where cust_name_s = '张三'
同样在es的查询中只要指定聚合方式为avg即可
curl -XPOST "http://192.168.236.131:9200/trade_info/csrcb/_search" -H "Content-Type:application/json" -d '{"query": {"term": {"cust_name_s.keyword": "张三"}},"aggregations": {"avg_number": {"avg": {"field": "txn_amt_d"}}}
} '
3.最大最小值查询
- 查询cust_name_s为张三的txn_amt_d的最大值和最小值,sql语句是
select max(txn_amt_d) as max_number, min(txn_amt_d) as min_number
from trade_info.csrcb where cust_name_s = '张三'
同样只要指定最大最小的别名,并且指定聚合方式为max以及min即可
curl -XPOST "http://192.168.236.131:9200/trade_info/csrcb/_search" -H "Content-Type:application/json" -d '{"query": {"term": {"cust_name_s.keyword": "张三"}},"aggregations": {"max_number": {"max": {"field": "txn_amt_d"}},"min_number": {"min": {"field": "txn_amt_d"}}}
} '
4.唯一值查询 (类似于sql中的distinct 去重)
- 使用cardinality求唯一值,即不重复的字段有多少,同样,统计的字段不能分词,例如统计cust_name_s字段的不重复的值
curl -XPOST "http://192.168.236.131:9200/trade_info/csrcb/_search" -H "Content-Type:application/json" -d '{"size": 0,"query": {"match_all": {}},"aggregations": {"unique_num": {"cardinality": {"field": "cust_name_s.keyword"}}}
} '
5.stats聚合
使用stats聚合,可以将满足条件的记录直接统计最大最小、平均值、总和、记录数结果
- 例如查询cust_name_s为张三的统计,统计的字段为txn_amt_d
curl -XPOST "http://192.168.236.131:9200/trade_info/csrcb/_search?pretty" -H "Content-Type:application/json" -d '{"size": 0,"query": {"term": {"cust_name_s.keyword": "张三"}},"aggregations": {"count_nums": {"stats": {"field": "txn_amt_d"}}}
} '