【Elasticsearch】Data Streams

Elasticsearch 的Data Streams是一种用于高效管理和存储时间序列数据(如日志、事件、指标等)的机制。它通过将数据分散到多个后端索引中,同时提供一个统一的接口,使得用户可以像操作单个索引一样操作整个数据流。以下是关于 Data Streams 的详细说明:


1.Data Streams 的核心概念

• 时间序列数据的优化存储:Data Streams 专为时间序列数据设计,适合处理持续生成的数据(如日志、监控指标等)。它通过自动分片到多个后端索引,优化了数据的存储和检索性能。

• 追加写入模式:Data Streams 是追加写入的,即数据一旦写入后很少被更新或删除。这种设计使得数据流非常适合日志和事件数据,这些数据通常只在生成时写入一次。

• 索引生命周期管理(ILM)集成:Data Streams 与 ILM(Index Lifecycle Management)紧密集成,可以自动化管理后端索引的生命周期,例如根据索引的大小或年龄自动滚动(rollover)到新的索引,或者将旧索引移动到低成本存储。


2.Data Streams 的结构

• 后端索引(Backing Indices):Data Streams 由一个或多个隐藏的、自动生成的后端索引组成。每个后端索引存储数据流的一部分数据。这些索引是隐藏的,用户通常不需要直接与它们交互。

• 写入索引(Write Index):Data Streams 的写入索引是当前用于存储新文档的后端索引。所有新文档都会被写入到写入索引中,直到该索引达到指定的大小或年龄,触发滚动操作。

• 索引模板(Index Template):每个 Data Stream 都需要一个匹配的索引模板,用于定义后端索引的映射(mappings)和设置(settings)。模板确保了所有后端索引具有一致的结构。


3.Data Streams 的操作

• 索引操作:

• 数据流支持直接向其提交索引请求,新文档会被自动路由到当前的写入索引。

• 数据流不支持直接更新或删除现有文档。如果需要更新或删除文档,必须直接操作后端索引,或者使用`update_by_query`和`delete_by_query`API。

• 滚动操作(Rollover):

• 当写入索引达到预设的大小或年龄时,Data Stream 会自动滚动到一个新的后端索引。滚动操作会创建一个新的后端索引,并将其设置为新的写入索引。

• 滚动操作可以通过 ILM 自动触发,也可以手动执行。

• 搜索操作:

• 数据流支持直接向其提交搜索请求,请求会被路由到所有相关的后端索引,从而返回整个数据流的搜索结果。


4.Data Streams 的命名和版本管理

• 后端索引的命名规则:

• 后端索引的名称遵循以下格式:`.ds-<数据流名称>-<yyyy.MM.dd>-<版本>`。

• `<版本>`是一个六位零填充的整数,从`000001`开始,用于标识数据流的版本。版本较高的索引通常包含更新的数据。

• 版本管理:

• 数据流的版本会随着滚动操作而递增。某些操作(如索引缩减)可能会导致版本号变化,但不会创建新的索引。

• 用户不应依赖后端索引的名称来推断数据流的状态。


5.适用场景

• 时间序列数据:Data Streams 最适合处理时间序列数据,如日志、事件、监控指标等。这些数据通常具有时间戳字段,并且主要以追加写入的方式存储。

• 大规模数据管理:通过 ILM 自动化管理后端索引的生命周期,Data Streams 可以有效降低存储成本和管理开销。

• 不频繁更新的数据:如果数据在写入后很少更新或删除,Data Streams 是一个理想的选择。


6.限制和注意事项

• 更新和删除操作:Data Streams 不支持直接对现有文档进行更新或删除。如果需要执行这些操作,需要直接操作后端索引。

• 索引模板的依赖性:Data Streams 依赖索引模板来配置后端索引。一旦模板被创建并关联到数据流,就无法删除。

• 写入索引的限制:写入索引不能执行可能阻碍索引操作的命令,如克隆、删除、缩减或拆分。


7.与传统索引的对比

• 传统索引:单个索引适合存储结构化数据,支持频繁的更新和删除操作。

• Data Streams:更适合时间序列数据,通过自动分片和生命周期管理,优化了大规模数据的存储和检索性能。


8.总结

Elasticsearch 的 Data Streams 是一种高效管理时间序列数据的机制,通过自动分片到多个后端索引,优化了存储和检索性能。它与 ILM 紧密集成,支持自动化的生命周期管理,非常适合处理日志、事件和监控指标等持续生成的数据。然而,Data Streams 也有一些限制,例如不支持直接更新或删除文档,因此在选择使用时需要根据具体需求进行权衡。

相关推荐
Elastic 中国社区官方博客1 天前
不到 5 分钟完成本地部署:Jina embedding 模型现已支持本地部署
大数据·人工智能·elasticsearch·搜索引擎·embedding·jina
二进制流水搬运工1 天前
入职第一天拉了23个仓库,我写了个脚本解放双手
大数据·elasticsearch·搜索引擎
Elasticsearch1 天前
在不到一小时内将 Datadog Kubernetes 仪表板迁移到 Elastic Observability
elasticsearch
.柒宇.1 天前
Elasticsearch 核心概念与系统架构详解
elasticsearch·系统架构
风行無痕1 天前
单机Elasticsearch 8.19.18安全升级到9.4.3的过程
大数据·elasticsearch·搜索引擎
Elastic 中国社区官方博客1 天前
使用重新设计的 AutoOps 更快地进行 Elasticsearch 问题排查
大数据·运维·前端·人工智能·elasticsearch·搜索引擎·全文检索
阿拉雷️1 天前
【搜索实战】Spring Boot 3.3 + AI Agent × Elasticsearch:让AI自动优化搜索策略,查询速度从2秒压到50毫秒
人工智能·spring boot·elasticsearch
阿里云大数据AI技术2 天前
阿里云 ES AI 引擎版:面向 Agent 场景,为亿级租户、千亿规模向量设计的搜索引擎
人工智能·elasticsearch·agent
阿里云大数据AI技术2 天前
FalconSeek 技术解析:阿里云 Elasticsearch 云原生内核如何让查询性能飙升600%
人工智能·elasticsearch
Elastic 中国社区官方博客2 天前
将你的 Grafana Kubernetes 仪表板迁移到 Elastic Observability:相同的 PromQL,30 倍更快的查询
大数据·人工智能·elasticsearch·搜索引擎·容器·kubernetes·grafana