ElasticSearch 接口:文档聚合查询

2022-04-22 0 By admin

聚合允许使用者对 es 文档进行统计分析,类似与关系型数据库中的 group by,当然还有很多其他的聚合,例如取最大值max、平均值avg等等。

一、分组聚合查询 terms

接下来按price字段进行分组:
GET请求 : http://127.0.0.1:9200/shopping/_search
附带JSON体如下:

{
  "aggs":{//聚合操作
    "price_group":{//名称,随意起名
    "terms":{//分组
    "field":"price"//分组字段
    }
  }
  }
}

返回结果如下:

{
  "took": 63,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 6,
      "relation": "eq"
    },
    "max_score": 1,
    "hits": [
      {
        "_index": "shopping",
        "_type": "_doc",
        "_id": "ANQqsHgBaKNfVnMbhZYU",
        "_score": 1,
        "_source": {
          "title": "小米手机",
          "category": "小米",
          "images": "http://www.gulixueyuan.com/xm.jpg",
          "price": 3999
        }
      },
      {
        "_index": "shopping",
        "_type": "_doc",
        "_id": "A9R5sHgBaKNfVnMb25Ya",
        "_score": 1,
        "_source": {
          "title": "小米手机",
          "category": "小米",
          "images": "http://www.gulixueyuan.com/xm.jpg",
          "price": 1999
        }
      },
      {
        "_index": "shopping",
        "_type": "_doc",
        "_id": "BNR5sHgBaKNfVnMb7pal",
        "_score": 1,
        "_source": {
          "title": "小米手机",
          "category": "小米",
          "images": "http://www.gulixueyuan.com/xm.jpg",
          "price": 1999
        }
      },
      {
        "_index": "shopping",
        "_type": "_doc",
        "_id": "BtR6sHgBaKNfVnMbX5Y5",
        "_score": 1,
        "_source": {
          "title": "华为手机",
          "category": "华为",
          "images": "http://www.gulixueyuan.com/xm.jpg",
          "price": 1999
        }
      },
      {
        "_index": "shopping",
        "_type": "_doc",
        "_id": "B9R6sHgBaKNfVnMbZpZ6",
        "_score": 1,
        "_source": {
          "title": "华为手机",
          "category": "华为",
          "images": "http://www.gulixueyuan.com/xm.jpg",
          "price": 1999
        }
      },
      {
        "_index": "shopping",
        "_type": "_doc",
        "_id": "CdR7sHgBaKNfVnMbsJb9",
        "_score": 1,
        "_source": {
          "title": "华为手机",
          "category": "华为",
          "images": "http://www.gulixueyuan.com/xm.jpg",
          "price": 1999
        }
      }
    ]
  },
  "aggregations": {
    "price_group": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": 1999,
          "doc_count": 5
        },
        {
          "key": 3999,
          "doc_count": 1
        }
      ]
    }
  }
}

1.1、只要聚合数据,不要原始数据

上面返回结果会附带原始数据的。若不想要不附带原始数据的结果:
GET请求 : http://127.0.0.1:9200/shopping/_search
附带JSON体如下:

{
  "aggs":{
  "price_group":{
    "terms":{
    "field":"price"
    }
  }
  },
  "size":0
}

二、平均值 AVG聚合

若想对所有手机价格求平均值。
GET请求 :http://127.0.0.1:9200/shopping/_search
附带JSON体如下:

{
  "aggs":{
  "price_avg":{//名称,随意起名
    "avg":{//求平均
    "field":"price"
    }
  }
  },
  "size":0
}