降采样索引 API
编辑降采样索引 API
编辑聚合时间序列 (TSDS) 索引,并存储按配置的时间间隔分组的每个指标字段的预计算统计摘要(min
、max
、sum
、value_count
和 avg
)。例如,一个包含每 10 秒采样一次的指标的 TSDS 索引可以被降采样为每小时索引。在一个小时间隔内的所有文档都会被汇总并作为单个文档存储在降采样索引中。
resp = client.indices.downsample( index="my-time-series-index", target_index="my-downsampled-time-series-index", config={ "fixed_interval": "1d" }, ) print(resp)
response = client.indices.downsample( index: 'my-time-series-index', target_index: 'my-downsampled-time-series-index', body: { fixed_interval: '1d' } ) puts response
const response = await client.indices.downsample({ index: "my-time-series-index", target_index: "my-downsampled-time-series-index", config: { fixed_interval: "1d", }, }); console.log(response);
POST /my-time-series-index/_downsample/my-downsampled-time-series-index { "fixed_interval": "1d" }
请求
编辑POST /<源索引>/_downsample/<输出降采样索引>
先决条件
编辑路径参数
编辑-
<源索引>
- (可选,字符串) 要降采样的时间序列索引的名称。
-
<输出降采样索引>
-
(必需,字符串) 要创建的索引的名称。
索引名称必须满足以下条件
- 仅限小写字母
- 不能包含
\
,/
,*
,?
,"
,<
,>
,|
, ` ` (空格字符),,
,#
- 7.0 之前的索引可以包含冒号 (
:
),但这已被弃用,并且在 7.0+ 中将不再支持 - 不能以
-
、_
、+
开头 - 不能为
.
或..
- 长度不能超过 255 字节(请注意,它是字节,因此多字节字符将更快地计入 255 限制)
- 以
.
开头的名称已被弃用,但 隐藏索引和插件管理的内部索引除外
查询参数
编辑-
fixed_interval
-
(必需,时间单位) 聚合原始时间序列索引的时间间隔。例如,
60m
会为每个 60 分钟(每小时)间隔生成一个文档。这遵循 Elasticsearch 中其他地方使用的标准时间格式语法。更小、更细粒度的间隔会占用成比例的更多空间。
降采样过程
编辑降采样操作遍历源 TSDS 索引并执行以下步骤
- 为
_tsid
字段的每个值和每个@timestamp
值创建一个新文档,并将其舍入为降采样配置中定义的fixed_interval
。 - 对于每个新文档,将所有时间序列维度从源索引复制到目标索引。TSDS 中的维度是常量,因此每个存储桶仅执行一次此操作。
-
对于每个时间序列指标字段,计算存储桶中所有文档的聚合。根据每个指标字段的指标类型,存储一组不同的预聚合结果
-
gauge
:存储min
、max
、sum
和value_count
;value_count
存储为aggregate_metric_double
类型。 -
counter
:存储last_value
。
-
- 对于所有其他字段,最新值将复制到目标索引。
源索引和目标索引字段映射
编辑目标降采样索引中的字段是根据原始源索引中的字段创建的,如下所示
- 所有使用
time-series-dimension
参数映射的字段都在目标降采样索引中创建,其映射与源索引中的相同。 - 所有使用
time_series_metric
参数映射的字段都在目标降采样索引中创建,其映射与源索引中的相同。例外情况是,对于映射为time_series_metric: gauge
的字段,字段类型更改为aggregate_metric_double
。 - 所有其他既不是维度也不是指标的字段(即,标签字段)都在目标降采样索引中创建,其映射与源索引中的相同。
查看降采样文档,了解手动运行降采样以及作为 ILM 策略一部分的概述和示例。