当前位置: 首页 > article >正文

【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 也有一些限制,例如不支持直接更新或删除文档,因此在选择使用时需要根据具体需求进行权衡。


http://www.kler.cn/a/570640.html

相关文章:

  • 03 HarmonyOS Next仪表盘案例详解(二):进阶篇
  • 【三.大模型实战应用篇】【6.自然语言转SQL:AI与数据库的无缝对接】
  • doris: Hive Catalog
  • 基于提示驱动的潜在领域泛化的医学图像分类方法(Python实现代码和数据分析)
  • unity pico开发 五 UI交互
  • io学习----->标准io
  • 【2025年2月28日稳定版】小米路由器4C刷机Immortalwrt 23.05.4系统搭载mentohust 0.3.1插件全记录
  • java中代理模式 之 静态代理模式
  • 2025GDC全球开发者大会 | 函子科技现场演示DeepSeek+OpenAI协同调用,手把手传授无代码+AI变现方案
  • SFP28(25 Gigabit Small Form-factor Pluggable)详解
  • C++(蓝桥杯常考点)
  • 开源嵌入式实时操作系统NuttX介绍
  • 【Java数据结构】Map Set
  • 【前端】HTML 备忘清单(超级详细!)
  • 《一个端粒到端粒的参考基因组为木瓜中五环三萜类化合物生物合成提供了遗传学见解》
  • 大语言模型学习--本地部署DeepSeek
  • 2025-03-02 学习记录--C/C++-PTA 7-36 复数四则运算
  • 登录服务器后如何找到对应的drupal所在的文件夹
  • 网上花店微信小程序+论文源码调试讲解
  • ICP-通过一组匹配的3D点估计相机运动