es 按条件聚合查询
时间: 2023-06-28 07:08:27 浏览: 81
组合条件查询
在Elasticsearch中,我们可以使用聚合(aggregation)来统计和分析数据。聚合可以根据不同的条件对数据进行分组、过滤、排序等操作,从而得到各种统计结果。下面是一个按条件聚合查询的示例:
假设我们有一个名为“sales”的索引,其中包含了每个销售员在每个月份的销售额。我们可以使用以下查询来按月份分组,并计算每个月份的总销售额:
```
GET /sales/_search
{
"size": 0,
"aggs": {
"sales_by_month": {
"date_histogram": {
"field": "date",
"interval": "month"
},
"aggs": {
"total_sales": {
"sum": {
"field": "sales"
}
}
}
}
}
}
```
解释一下这个查询:
- `size: 0` 表示我们不需要返回 hits(匹配文档),只需要返回聚合结果。
- `aggs` 是一个聚合查询的关键字。它下面可以有多个聚合操作。
- `sales_by_month` 是我们给这个聚合操作取的名字。
- `date_histogram` 是一个按时间间隔分组的聚合操作。它会将所有文档按日期字段(这里是 `date`)分组,每个分组的时间间隔是 `month`(月份)。
- `total_sales` 是我们给这个子聚合操作取的名字。
- `sum` 是一个求和聚合操作。它会将子分组中的所有文档的 `sales` 字段相加。
最终的结果会是一个按月份分组的列表,每个分组包含了这个月份的 `total_sales`(总销售额)。
阅读全文