The Open Distro project is archived. Open Distro development has moved to OpenSearch. The Open Distro plugins will continue to work with legacy versions of Elasticsearch OSS, but we recommend upgrading to OpenSearch to take advantage of the latest features and improvements.
Index Rollups API
Use the index rollup operations to programmatically work with index rollup jobs.
Table of contents
- Create or update an index rollup job
- Get an index rollup job
- Delete an index rollup job
- Start or stop an index rollup job
- Explain an index rollup job
Create or update an index rollup job
Creates or updates an index rollup job. You must provide the seq_no
and primary_term
parameters.
Request
PUT _opendistro/_rollup/jobs/<rollup_id> // Create
PUT _opendistro/_rollup/jobs/<rollup_id>?if_seq_no=1&if_primary_term=1 // Update
{
"rollup": {
"source_index": "nyc-taxi-data",
"target_index": "rollup-nyc-taxi-data",
"schedule": {
"interval": {
"period": 1,
"unit": "Days"
}
},
"description": "Example rollup job",
"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": {}
}
]
}
]
}
}
}
You can specify the following options.
Options | Description | Type | Required |
---|---|---|---|
source_index | The name of the detector. | string | Yes |
target_index | Specify the target index that the rolled up data is ingested into. You could either create a new target index or use an existing index. The target index cannot be a combination of raw and rolled up data. | string | Yes |
schedule | Schedule of the index rollup job which can be an interval or a cron expression. | object | Yes |
schedule.interval | Specify the frequency of execution of the rollup job. | object | No |
schedule.interval.start_time | Start time of the interval. | timestamp | Yes |
schedule.interval.period | Define the interval period. | string | Yes |
schedule.interval.unit | Specify the time unit of the interval. | string | Yes |
schedule.interval.cron | Optionally, specify a cron expression to define therollup frequency. | list | No |
schedule.interval.cron.expression | Specify a Unix cron expression. | string | Yes |
schedule.interval.cron.timezone | Specify timezones as defined by the IANA Time Zone Database. Defaults to UTC. | string | No |
description | Optionally, describe the rollup job. | string | No |
enabled | When true, the index rollup job is scheduled. Default is true. | boolean | Yes |
continuous | Specify whether or not the index rollup job continuously rolls up data forever or just executes over the current data set once and stops. Default is false. | boolean | Yes |
error_notification | Set up a Mustache message template sent for error notifications. For example, if an index rollup job fails, the system sends a message to a Slack channel. | object | No |
page_size | Specify the number of buckets to paginate through at a time while rolling up. | number | Yes |
delay | Specify time value to delay execution of the index rollup job. | time_unit | No |
dimensions | Specify aggregations to create dimensions for the roll up time window. | object | Yes |
dimensions.date_histogram | Specify either fixed_interval or calendar_interval, but not both. Either one limits what you can query in the target index. | object | No |
dimensions.date_histogram.fixed_interval | Specify the fixed interval for aggregations in milliseconds, seconds, minutes, hours, or days. | string | No |
dimensions.date_histogram.calendar_interval | Specify the calendar interval for aggregations in minutes, hours, days, weeks, months, quarters, or years. | string | No |
dimensions.date_histogram.field | Specify the date field used in date histogram aggregation. | string | No |
dimensions.date_histogram.timezone | Specify the timezones as defined by the IANA Time Zone Database. The default is UTC. | string | No |
dimensions.terms | Specify the term aggregations that you want to roll up. | object | No |
dimensions.terms.fields | Specify terms aggregation for compatible fields. | object | No |
dimensions.histogram | Specify the histogram aggregations that you want to roll up. | object | No |
dimensions.histogram.field | Add a field for histogram aggregations. | string | Yes |
dimensions.histogram.interval | Specify the histogram aggregation interval for the field. | long | Yes |
dimensions.metrics | Specify a list of objects that represent the fields and metrics that you want to calculate. | nested object | No |
dimensions.metrics.field | Specify the field that you want to perform metric aggregations on. | string | No |
dimensions.metrics.field.metrics | Specify the metric aggregations you want to calculate for the field. | multiple strings | No |
Sample response
{
"_id": "rollup_id",
"_seqNo": 1,
"_primaryTerm": 1,
"rollup": { ... }
}
Get an index rollup job
Returns all information about an index rollup job based on the rollup_id
.
Request
GET _opendistro/_rollup/jobs/<rollup_id>
Sample response
{
"_id": "my_rollup",
"_seqNo": 1,
"_primaryTerm": 1,
"rollup": { ... }
}
Delete an index rollup job
Deletes an index rollup job based on the rollup_id
.
Request
DELETE _opendistro/_rollup/jobs/<rollup_id>
Sample response
200 OK
Start or stop an index rollup job
Start or stop an index rollup job.
Request
POST _opendistro/_rollup/jobs/<rollup_id>/_start
POST _opendistro/_rollup/jobs/<rollup_id>/_stop
Sample response
200 OK
Explain an index rollup job
Returns detailed metadata information about the index rollup job and its current progress.
Request
GET _opendistro/_rollup/jobs/<rollup_id>/_explain
Sample response
{
"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
}
}
}