操作方法

Elastic 数据流命名方案简介

随着 Elastic 7.9 版本的发布,[Elastic Agent 和 Fleet] (https://www.elastic.co/blog/introducing-elastic-agent-and-ingest-manager)已推出,同时还引入了一种用于在 Elasticsearch 中对时序数据的索引和数据流进行结构化的新方法。在这篇博客文章中,我们将概述 Elastic 数据流命名方案及其工作原理。这是关于 Elastic 数据流命名方案系列博客文章的第一篇。

Elastic 数据流命名方案

Elastic 数据流命名方案专为时序数据设计,使用以下命名规范将数据集分割成不同的数据流。

  • 类型:描述数据的通用类型
  • 数据集:描述已采集的数据及其结构
  • 命名空间:用户可配置的任意分组

这三个部分由“-”组合在一起,生成了类似“logs-nginx.access-production”的数据流。在这三个部分中,都不允许使用“-”字符。这意味着所有数据流都按以下方式命名:

{type}–{dataset}–{namespace}

数据集和命名空间都有默认值,分别为“dataset=generic”和“namespace=default”。对于 Elastic Agent 而言,如果用户刚刚开始摄取日志文件,则数据会以“logs-generic-default”形式出现。

为了充分发挥 Elastic 数据流命名方案的优势,每个文档必须包含以下三个字段:

  • data_stream.type
  • data_stream.dataset
  • data_stream.namespace

有关这些字段 的更多详细信息,请参阅 Elastic Common Schema (ECS)。上述字段映射为 constant_keyword字段,通过减少需要查询的分片数量,使查询效率更高。

Elastic 数据流命名方案的优势

与 Beats 和 Logstash 之前使用的索引策略相比,Elastic 数据流命名方案有一些优势。它不再使用极少数大型索引,而是使用许多更小但更密集的数据流。简要总结其优势:

  • 减少了每个索引的字段数:由于数据按数据集分成多个数据流,因此每个数据流包含最少的字段集。这样可以提高空间利用率加快查询速度
  • 更精细的数据控制:通过按数据集和“命名空间”对数据进行划分,可实现对轮换、保留策略和安全权限的精细化管理。
  • 灵活性:用户可以使用“命名空间”以任何他们想要的方式划分和组织数据。
  • 更优质的精选体验:由于 Elastic 数据流命名方案具有通用结构,因此可以在数据流之上构建更优质的精选体验。
  • 所需的摄取权限更少:以前,模板和摄取管道的设置由 Elastic Agent 执行。由于现在数据集中进行处理,因此数据摄取工具只需具备追加数据的权限即可。

Elastic 数据流命名方案的使用

Elastic 数据流命名方案从 Elastic Stack 7.9 版本及更高版本开始受支持,因为该功能需要支持数据流、新的 Elasticsearch 组件模板,以及恒定的关键词。“logs--”和“metrics--”的索引模板随 Elasticsearch >=7.9 一起发布。[Elastic Agent] 附带的所有数据 (https://www.elastic.co/blog/introducing-elastic-agent-and-ingest-manager)都使用 Elastic 数据流命名方案。要将其用于任何其他数据采集器,只需遵循命名结构并添加 data_stream 字段即可使其正常工作。

结论

这是 Elastic 数据流命名方案的简短摘要。在后续的博客文章中,我们将深入探讨其幕后工作原理的技术细节,详细介绍 Elastic Agent 的使用方法,以及如何利用它为您带来益处。如需更多见解,请观看 Elastic Community YouTube 频道上的 深入了解新的 Elastic 索引策略