Downsamples a time series (TSDS) index and reduces its size by keeping the last value or by pre-aggregating metrics:
- When running in
aggregatemode, it pre-calculates and stores statistical summaries (min,max,sum,value_countandavg) for each metric field grouped by a configured time interval and their dimensions. - When running in
last_valuemode, it keeps the last value for each metric in the configured interval and their dimensions.
For example, a TSDS index that contains metrics sampled every 10 seconds can be downsampled to an hourly index. All documents within an hour interval are summarized and stored as a single document in the downsample index.
NOTE: Only indices in a time series data stream are supported. Neither field nor document level security can be defined on the source index. The source index must be read-only (index.blocks.write: true).
POST /{index}/_downsample/{target_index}
Console
POST /my-time-series-index/_downsample/my-downsampled-time-series-index { "fixed_interval": "1d" } resp = client.indices.downsample( index="my-time-series-index", target_index="my-downsampled-time-series-index", config={ "fixed_interval": "1d" }, ) const response = await client.indices.downsample({ index: "my-time-series-index", target_index: "my-downsampled-time-series-index", config: { fixed_interval: "1d", }, }); response = client.indices.downsample( index: "my-time-series-index", target_index: "my-downsampled-time-series-index", body: { "fixed_interval": "1d" } ) $resp = $client->indices()->downsample([ "index" => "my-time-series-index", "target_index" => "my-downsampled-time-series-index", "body" => [ "fixed_interval" => "1d", ], ]); curl -X POST -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type: application/json" -d '{"fixed_interval":"1d"}' "$ELASTICSEARCH_URL/my-time-series-index/_downsample/my-downsampled-time-series-index" client.indices().downsample(d -> d .index("my-time-series-index") .targetIndex("my-downsampled-time-series-index") .config(c -> c .fixedInterval(f -> f .time("1d") ) ) ); Request example
{ "fixed_interval": "1d" }