加载中

配置时间序列数据流以进行降采样

要对时间序列数据流 (TSDS) 进行降采样,您可以使用索引生命周期管理 (ILM) 或数据流生命周期。(您也可以对单个时间序列索引使用 降采样 API,但大多数用户无需使用此 API。)

开始之前,请参阅 降采样概念

重要提示

降采样需要只读数据。

在大多数情况下,您可以选择数据流生命周期选项。如果您在 Elastic Stack 中使用 数据层,请选择索引生命周期选项。

要使用 数据流生命周期 对时间序列进行降采样,请将 降采样 (downsampling) 部分添加到数据流生命周期(针对现有数据流)或索引模板(针对新数据流)中。

  • fixed_interval 设置为您所需的粒度级别。原始时间序列数据将按此间隔进行聚合。
  • after 设置为索引滚动更新后运行降采样前等待的最短时间。
  • (可选)将 downsampling_method 设置为您首选的 降采样方法,如果不指定,将使用默认方法 (aggregate)。
				PUT _data_stream/my-data-stream/_lifecycle
					{
  "data_retention": "7d",
  "downsampling_method": "aggregate",
  "downsampling": [
     {
       "after": "1m",
       "fixed_interval": "10m"
      },
      {
        "after": "1d",
        "fixed_interval": "1h"
      }
   ]
}
		

降采样操作在 索引时间序列结束时间 过去后运行。

要作为索引生命周期管理 (ILM) 的一部分对时间序列数据进行降采样,请在您的 ILM 策略中包含 降采样操作 (downsample actions)。您可以跨不同阶段配置多个降采样操作,以随着时间的推移逐步降低数据粒度。

此示例显示了一个包含滚动更新和两个降采样操作的策略:一个在热阶段 (hot phase) 进行 5 分钟间隔的初始聚合,另一个在温阶段 (warm phase) 进行 1 小时间隔的进一步聚合

				PUT _ilm/policy/datastream_policy
					{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover" : {
            "max_age": "5m"
          },
          "downsample": {
  	        "fixed_interval": "5m",
  	        "sampling_method": "aggregate"
  	      }
        }
      },
      "warm": {
        "actions": {
          "downsample": {
            "fixed_interval": "1h",
  	        "sampling_method": "aggregate"
          }
        }
      }
    }
  }
}
		
  • fixed_interval 设置为您所需的粒度级别。原始时间序列数据将按此间隔进行聚合。降采样操作在索引滚动更新且 索引时间序列结束时间 过去后运行。
  • (可选)将 sampling_method 设置为您首选的 降采样方法,如果不指定,将使用默认方法 (aggregate)。

本节提供了一些降采样的最佳实践。

在选择降采样间隔时,请务必考虑测量值的原始采样率。使用一个能显著减少文档数量的间隔。例如,如果传感器每 10 秒发送一次数据,降采样到 1 分钟会将文档数量减少 83%。降采样到 5 分钟则会将文档数量减少 96%。

这同样适用于对已经过降采样的数据进行再次降采样。

使用 索引生命周期管理 (ILM) 时,您可以在以下每个阶段中最多定义一轮降采样

阶段不需要匹配的分层。如果该阶段存在匹配的分层,ILM 会自动将数据迁移到相应的分层。为防止这种情况,请添加 迁移操作 (migrate action) 并指定 enabled: false

如果您保持默认的迁移操作启用状态,降采样将在源索引所在的分层上运行,该分层通常具有更多资源。然后,较小的降采样数据会被迁移到下一个分层。

由于降采样操作会一次性处理整个索引,因此它会增加集群的负载。较小的索引可以改善任务分配,从而有助于最大程度地减少降采样对集群性能的影响。

要减小索引大小,请

  • 限制主分片的数量,或
  • (仅限 ILM)在 hot 阶段的 滚动更新操作 中使用 max_primary_shard_docs 来限制每个分片的文档数量。指定一个低于默认值 2 亿的值,以帮助防止因降采样导致的负载峰值。
© . This website operates independently and is not affiliated with or endorsed by Elasticsearch B.V. All brand names, logos, and trademarks are the property of their respective owners.