索引汇总 API

使用索引汇总操作以编程方式处理索引汇总作业。

创建或更新索引汇总作业,必须提供 seq_noprimary_term 参数。

请求

PUT _plugins/_rollup/jobs/<rollup_id> // 创建
PUT _plugins/_rollup/jobs/<rollup_id>?if_seq_no=1&if_primary_term=1 // 更新
{
  "rollup": {
    "source_index": "nyc-taxi-data",
    "target_index": "rollup-nyc-taxi-data",
    "schedule": {
      "interval": {
        "period": 1,
        "unit": "Days"
      }
    },
    "description": "示例汇总作业",
    "enabled": true,
    "page_size": 200,
    "delay": 0,
    "roles": [
      "rollup_all",
      "nyc_taxi_all",
      "example_rollup_index_all"
    ],
    "continuous": false,
    "dimensions": [
      {
        "date_histogram": {
          "source_field": "tpep_pickup_datetime",
          "fixed_interval": "1h",
          "timezone": "America/Los_Angeles"
        }
      },
      {
        "terms": {
          "source_field": "PULocationID"
        }
      }
    ],
    "metrics": [
      {
        "source_field": "passenger_count",
        "metrics": [
          {
            "avg": {}
          },
          {
            "sum": {}
          },
          {
            "max": {}
          },
          {
            "min": {}
          },
          {
            "value_count": {}
          }
        ]
      }
    ]
  }
}

你可以指定以下选项。

选项 描述 类型 必需
source_index 检测器的名称。 字符串
target_index 指定汇总数据摄取到的目标索引。你可以创建新的目标索引或使用现有索引。目标索引不能是原始数据和汇总数据的组合。此字段支持动态生成的索引名称,如 rollup_{{ctx.source_index}},其中 source_index 不能包含通配符。 字符串
schedule 索引汇总作业的计划,可以是间隔或 cron 表达式。 对象
schedule.interval 指定汇总作业的执行频率。 对象
schedule.interval.start_time 间隔的开始时间。 时间戳
schedule.interval.period 定义间隔周期。 字符串
schedule.interval.unit 指定间隔的时间单位。 字符串
schedule.interval.cron (可选)指定 cron 表达式以定义汇总频率。 列表
schedule.interval.cron.expression 指定 Unix cron 表达式。 字符串
schedule.interval.cron.timezone 指定 IANA 时区数据库定义的时区。默认为 UTC。 字符串
description (可选)描述汇总作业。 字符串
enabled 当为 true 时,索引汇总作业被调度。默认值为 true 布尔值
continuous 指定索引汇总作业是连续汇总数据永远执行,还是在当前数据集上执行一次后停止。默认值为 false 布尔值
error_notification 设置错误通知的 Mustache 消息模板。例如,如果索引汇总作业失败,系统会向 Slack 频道发送消息。 对象
page_size 指定在汇总期间分页的存储桶数量。 数字
delay 索引汇总作业执行延迟的毫秒数。 长整数
dimensions 指定聚合以创建汇总时间窗口的维度。支持的分组有 termshistogramdate_histogram。有关更多信息,请参见 存储桶聚合 数组
metrics 指定代表要计算的字段和指标的列表。支持的指标有 summaxminvalue_countavg。有关更多信息,请参见 指标聚合 数组

示例响应

{
  "_id": "<rollup_id>",
  "_version": 3,
  "_seq_no": 1,
  "_primary_term": 1,
  "rollup": {
    "rollup_id": "<rollup_id>",
    "enabled": true,
    "schedule": {
      "interval": {
        "start_time": 1680159934649,
        "period": 1,
        "unit": "Days",
        "schedule_delay": 0
      }
    },
    "last_updated_time": 1680159934649,
    "enabled_time": 1680159934649,
    "description": "示例汇总作业",
    "schema_version": 17,
    "source_index": "nyc-taxi-data",
    "target_index": "rollup-nyc-taxi-data",
    "metadata_id": null,
    "page_size": 200,
    "delay": 0,
    "continuous": false,
    "dimensions": [
      {
        "date_histogram": {
          "fixed_interval": "1h",
          "source_field": "tpep_pickup_datetime",
          "target_field": "tpep_pickup_datetime",
          "timezone": "America/Los_Angeles"
        }
      },
      {
        "terms": {
          "source_field": "PULocationID",
          "target_field": "PULocationID"
        }
      }
    ],
    "metrics": [
      {
        "source_field": "passenger_count",
        "metrics": [
          {
            "avg": {}
          },
          {
            "sum": {}
          },
          {
            "max": {}
          },
          {
            "min": {}
          },
          {
            "value_count": {}
          }
        ]
      }
    ]
  }
}

获取索引汇总作业

根据 rollup_id 返回索引汇总作业的所有信息。

请求

GET _plugins/_rollup/jobs/<rollup_id>

示例响应

{
  "_id": "my_rollup",
  "_seqNo": 1,
  "_primaryTerm": 1,
  "rollup": { ... }
}

删除索引汇总作业

根据 rollup_id 删除索引汇总作业。

请求

DELETE _plugins/_rollup/jobs/<rollup_id>

示例响应

200 OK

启动或停止索引汇总作业

1.0 中引入

启动或停止索引汇总作业。

请求

POST _plugins/_rollup/jobs/<rollup_id>/_start
POST _plugins/_rollup/jobs/<rollup_id>/_stop

示例响应

200 OK

解释索引汇总作业

1.0 中引入

返回索引汇总作业的详细元数据信息及其当前进度。

请求

GET _plugins/_rollup/jobs/<rollup_id>/_explain

示例响应

{
  "example_rollup": {
    "rollup_id": "example_rollup",
    "last_updated_time": 1602014281,
    "continuous": {
      "next_window_start_time": 1602055591,
      "next_window_end_time": 1602075591
    },
    "status": "running",
    "failure_reason": null,
    "stats": {
      "pages_processed": 342,
      "documents_processed": 489359,
      "rollups_indexed": 3420,
      "index_time_in_ms": 30495,
      "search_time_in_ms": 584922
    }
  }
}