elasticsearch rollup如何使用,提供示例
时间: 2023-07-18 16:39:51 浏览: 150
以下是使用 Elasticsearch rollup 的基本步骤,包括创建 rollup job、执行 rollup job 和查询 rollup 数据。
1. 创建 rollup job
首先,你需要创建一个 rollup job,定义要聚合的原始索引、聚合操作、聚合字段等信息。以下是一个示例 rollup job 配置文件:
```
PUT _rollup/job/my_rollup_job
{
"index_pattern": "my_index-*",
"rollup_index": "my_rollup_index",
"cron": "0 */5 * * * ?",
"groups": {
"date_histogram": {
"field": "timestamp",
"interval": "1h"
},
"terms": {
"fields": [
"category"
]
}
},
"metrics": [
{
"field": "value",
"metrics": [
"sum",
"max",
"min"
]
}
]
}
```
以上配置文件定义了一个名为 my_rollup_job 的 rollup job,它会聚合 my_index-* 索引中的数据,并将聚合结果存储到 my_rollup_index 索引中。聚合操作包括按小时聚合时间戳字段和按类别字段聚合,指标包括值字段的总和、最大值和最小值。
2. 执行 rollup job
一旦你创建了 rollup job,它就会按照预定的计划定期执行聚合操作,并将聚合结果存储到新的索引中。你可以使用以下 API 来启动或停止 rollup job:
- 启动 rollup job:
```
POST _rollup/job/my_rollup_job/_start
```
- 停止 rollup job:
```
POST _rollup/job/my_rollup_job/_stop
```
3. 查询 rollup 数据
一旦聚合数据存储在新索引中,你就可以像查询普通索引一样查询 rollup 数据。以下是一些示例查询:
- 查询所有数据:
```
GET my_rollup_index/_search
```
- 按时间聚合数据:
```
GET my_rollup_index/_search
{
"size": 0,
"aggs": {
"by_hour": {
"date_histogram": {
"field": "timestamp",
"interval": "1h"
},
"aggs": {
"sum_value": {
"sum": {
"field": "value.sum"
}
}
}
}
}
}
```
- 按类别聚合数据:
```
GET my_rollup_index/_search
{
"size": 0,
"aggs": {
"by_category": {
"terms": {
"field": "category"
},
"aggs": {
"sum_value": {
"sum": {
"field": "value.sum"
}
}
}
}
}
}
```
总之,Elasticsearch rollup 是一个非常实用的功能,可以帮助你轻松地聚合和汇总大量数据,并更方便地进行数据分析和可视化。
阅读全文