Query DSL 指标 metric 聚合和案例
什么是指标聚合
- 对数据集求最大、最小、和、平均值等指标的聚合,称为 指标聚合 metric
- 比如 max、min、avg、sum等函数使用
聚合查询 max 应用案例
数据准备:假设有一个电商网站的销售记录索引,包含商品名称和销售价格字段
shell
POST /sales_v1/_doc
{ "product_name": "手机", "price": 1000 }
POST /sales_v1/_doc
{ "product_name": "电视", "price": 1500 }
POST /sales_v1/_doc
{ "product_name": "小滴课堂老王的黑丝", "price": 4500 }案例说明:使用 max 聚合查询来获取产品价格的最高值。
shell
GET /sales_v1/_search
{
"size": 0,
"aggs": {
"max_price": {
"max": {
"field": "price"
}
}
}
}聚合查询 min 应用案例
数据准备:一个学生考试成绩索引,包含学生姓名和考试分数字段。
shell
POST /exam_scores/_doc
{ "student_name": "张三", "score" : 80 }
POST /exam_scores/_doc
{ "student_name": "李四", "score" : 90 }
POST /exam_scores/_doc
{ "student_name": "王五", "score" : 40 }案例说明:使用 min 聚合查询来获取学生的最低考试分数。
shell
GET /exam_scores/_search
{
"size": 0,
"aggs": {
"min_score": {
"min": {
"field": "score"
}
}
}
}聚合查询 avg 应用案例
数据准备(同上):一个学生考试成绩索引,包含学生姓名和考试分数字段。
使用 avg 聚合查询来计算学生的平均考试分数
shell
GET /exam_scores/_search
{
"size": 0,
"aggs": {
"avg_score": {
"avg": {
"field": "score"
}
}
}
}聚合查询 sum 应用案例
数据准备:假设有一个电商网站的销售记录索引,包含商品名称和销售数量字段。
shell
POST /sales_order/_doc
{ "product_name": "手机", "sales_count" : 100 }
POST /sales_order/_doc
{ "product_name": "电视", "sales_count" : 50 }
POST /sales_order/_doc
{ "product_name": "电影", "sales_count" : 999 }案例说明:使用 sum 聚合查询来计算销售记录的总销售数量。
shell
GET /sales_order/_search
{
"size": 0,
"aggs": {
"total_sales": {
"sum": {
"field": "sales_count"
}
}
}
}
朔风