Elasticsearch 时间序列数据流(TSDS)深度解析

Elasticsearch 时间序列数据流(TSDS)深度解析

elasticsearch elasticsearch 项目地址: https://gitcode.com/gh_mirrors/elas/elasticsearch

什么是时间序列数据流

时间序列数据流(Time Series Data Stream, TSDS)是Elasticsearch中专门为存储时间序列指标数据而设计的一种数据结构。它将带有时间戳的指标数据建模为一个或多个时间序列,相比普通数据流可以显著提高存储效率。根据官方基准测试,使用TSDS存储指标数据可以节省高达70%的磁盘空间。

TSDS适用场景

TSDS最适合满足以下特征的场景:

  • 数据是近实时写入的指标数据
  • 数据按照@timestamp时间戳顺序写入
  • 数据具有明显的时序特征

对于日志、追踪等非指标类时间序列数据,建议使用普通数据流而非TSDS。

TSDS核心特性

1. 维度与指标字段

TSDS文档必须包含:

  • 一个或多个维度字段:用于标识时间序列的字段,通常是描述被测量实体的属性(如设备ID、位置等)
  • 一个@timestamp字段:记录数据点的时间
  • 通常还包含一个或多个指标字段:包含数值测量值

维度字段需要使用time_series_dimension参数标记,支持keyword、ip和数值类型字段。指标字段则使用time_series_metric参数标记,支持数值类型和特定聚合类型。

2. 时间序列模式

TSDS的索引模板必须包含data_stream对象并设置index_mode: time_series选项。这会启用TSDS相关功能,包括:

  • 自动生成_tsid元数据字段
  • 基于时间的索引管理
  • 维度路由等特性

3. 时间边界索引

TSDS中的每个后备索引都有明确的时间范围(通过index.time_series.start_timeindex.time_series.end_time设置)。写入时,Elasticsearch会根据文档的@timestamp将其路由到合适的时间范围内索引中。

4. 维度路由

通过index.routing_path设置,TSDS可以将具有相同维度的文档路由到相同的分片上,提高查询效率和压缩率。路由路径必须由keyword类型的维度字段组成。

5. 索引排序优化

TSDS内部使用索引排序,按_tsid@timestamp对分片段进行排序,使得相同时间序列的数据存储在一起,提高压缩效率。

TSDS高级配置

前瞻时间(Look-ahead time)

通过index.look_ahead_time设置可以配置索引能接受未来多长时间的数据。计算公式为:

index.time_series.end_time = now + index.look_ahead_time

回溯时间(Look-back time)

通过index.look_back_time设置可以配置索引能接受过去多长时间的数据。计算公式为:

index.time_series.start_time = now - index.look_back_time

最佳实践

  1. 维度设计:选择能够唯一标识时间序列的字段作为维度,通常是被测量实体的ID或属性
  2. 指标类型:正确标记指标类型(counter或gauge)以获得最佳聚合效果
  3. 时间范围:合理配置look-ahead和look-back时间以适应业务场景
  4. 路由路径:选择高基数维度作为路由路径以提高查询性能

总结

Elasticsearch的TSDS为时间序列指标数据提供了高度优化的存储和查询方案。通过理解其核心概念和配置选项,可以构建出高效的时间序列数据处理系统。对于监控、IoT等产生大量时间序列数据的场景,TSDS是理想的选择。

elasticsearch elasticsearch 项目地址: https://gitcode.com/gh_mirrors/elas/elasticsearch

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水鲁焘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值