下采样索引 API编辑

聚合时间序列 (TSDS) 索引,并存储按配置的时间间隔分组的每个指标字段的预先计算的统计汇总(minmaxsumvalue_countavg)。例如,包含每 10 秒采样一次指标的 TSDS 索引可以下采样为每小时索引。一小时间隔内的所有文档都将汇总并存储为下采样索引中的单个文档。

response = client.indices.downsample(
  index: 'my-time-series-index',
  target_index: 'my-downsampled-time-series-index',
  body: {
    fixed_interval: '1d'
  }
)
puts 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 索引并执行以下步骤

  1. _tsid 字段的每个值和每个舍入到下采样配置中定义的 fixed_interval@timestamp 值创建一个新文档。
  2. 对于每个新文档,将所有时间序列维度从源索引复制到目标索引。TSDS 中的维度是常量,因此每个桶只执行一次。
  3. 对于每个时间序列指标字段,计算桶中所有文档的聚合。根据每个指标字段的指标类型,将存储一组不同的预聚合结果

    • gauge:存储 minmaxsumvalue_countvalue_count 存储为类型 aggregate_metric_double
    • counter:存储 last_value
  4. 对于所有其他字段,最新值将复制到目标索引。

源索引和目标索引字段映射编辑

目标下采样索引中的字段是根据原始源索引中的字段创建的,如下所示

  1. 使用 time-series-dimension 参数映射的所有字段都在目标下采样索引中创建,其映射与源索引中的映射相同。
  2. 使用 time_series_metric 参数映射的所有字段都在目标下采样索引中创建,其映射与源索引中的映射相同。例外情况是,对于映射为 time_series_metric: gauge 的字段,字段类型将更改为 aggregate_metric_double
  3. 所有既不是维度也不是指标的其他字段(即标签字段)都在目标下采样索引中创建,其映射与它们在源索引中的映射相同。

查看下采样文档,了解概述以及手动运行下采样和作为 ILM 策略的一部分运行下采样的示例。