Downsample an index Technical preview; Added in 8.5.0
Aggregate a time series (TSDS) index and store pre-computed statistical summaries (min
, max
, sum
, value_count
and avg
) for each metric field grouped by a configured time interval. 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" }