Skip to content
章节导航

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"
      }
    }
  }
}