提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
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"
}
}
}
} '
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » Elastic Stack--15--聚合查询(SUM、MAX、MIN、AVG)案例
发表评论 取消回复