微服务框架
【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】
SpringCloud微服务架构
文章目录
- 微服务框架
- SpringCloud微服务架构
- 26 数据聚合
- 26.3 DSL 实现Metrics 聚合
- 26.3.1 DSL 实现Metrics 聚合
26 数据聚合
26.3 DSL 实现Metrics 聚合
26.3.1 DSL 实现Metrics 聚合
例如,我们要求获取每个品牌的用户评分的min、max、avg等值.
我们可以利用stats聚合:
GET /hotel/_search
{
"size": 0,
"aggs": {
"brandAgg": {
"terms": {
"field": "brand",
"size": 20
},
"aggs": { // 是brands聚合的子聚合,也就是分组后对每组分别计算
"score_stats": { // 聚合名称
"stats": { // 聚合类型,这里stats可以计算min、max、avg等
"field": "score" // 聚合字段,这里是score
}
}
}
}
}
}
试试
# 嵌套聚合metric
GET /hotel/_search
{
"size": 0,
"aggs": {
"brandAgg": {
"terms": {
"field": "brand",
"size": 10
},
"aggs": {
"scoreAgg": {
"stats": {
"field": "score"
}
}
}
}
}
}
运行结果
效果很明显,在桶聚合的基础上,进行又一次聚合
- count:计数
- min:最小值
- max:最大值
- avg:平均值
- sum:总和
如果我还想在此基础上,根据平均值排个序
# 嵌套聚合metric
GET /hotel/_search
{
"size": 0,
"aggs": {
"brandAgg": {
"terms": {
"field": "brand",
"size": 10,
"order": {
"scoreAgg.avg": "desc"
}
},
"aggs": {
"scoreAgg": {
"stats": {
"field": "score"
}
}
}
}
}
}
运行结果
OK, 可以看到“万丽” 品牌酒店的平均分最高
【记住三要素】
- 聚合名称
- 聚合类型
- 聚合字段