Elastic data stream 命名方案介绍

本文介绍了Elasticsearch 7.9中ElasticDataStream的命名方案,包括其结构(type-dataset-namespace)、优势(如减少索引大小和精细化控制)以及在日志管理中的应用实例。同时概述了如何在实践中使用这一新策略和ElasticAgent。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 Elastic 7.9 中,发布了 Elastic Agent 和 Fleet,以及一种在 Elasticsearch 中为时间序列数据构建索引和数据流的新方法。 在这篇博文中,我们将概述 Elastic data stream 命名方案及其工作原理。 这是围绕 Elastic data stream 命名方案的一系列博客文章中的第一篇。

Elastic data stream 的命名方案

Elastic data stream 的命名方案是由时间序列数据,由数据集分割成不同的数据。它使用以下命名约定。

  • type(类型):通用类型描述数据,比如 logs, metrics, traces ... 
  • dataset(数据集):描述摄入的数据和它的结构,比如 nginx.access
  • namespace(命名空间):用户可配置的任意分组,比如 production, testing

各个部分由 “-” 结合在一起,这样就会导致像 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 data stream 命名方案的好处

与 Beats 和 Logstash 以前使用的索引策略相比,Elastic data stream 命名方案有一些优势。使用了许多更小但更密集的数据流,而不是很少的大索引。好处的简短摘要:

  • 减少每个索引的字段数:由于数据被拆分为跨多个数据流的单个数据集,因此每个数据流包含最少的字段集。这会带来更好的空间效率和更快的查询。
  • 对数据进行更精细的控制:通过数据集和命名空间拆分数据允许对翻转、保留和安全权限进行精细控制。
  • 灵活性:用户可以使用命名空间以任何他们想要的方式划分和组织数据。
  • 更好的策划体验:由于 Elastic 数据流命名方案的通用结构,可以在数据流之上构建更好的策划体验。
  • 需要更少的摄入权限:以前,模板和摄入管道的设置是由 Elastic Agent 执行的。由于这现在以集中方式发生,因此摄入工具只需要附加数据的权限。

我们以日志为例。日志的数据按照 app 及 env 来进行区分。每个数据流都可以有自己的单独的 Lifecycle,并且不同的数据集可以有不同的字段。假如我们的日志数据有如下的数据集:

我们可以通过如下的搜索来针对一个更小的数据集来进行有效地搜索:

GET  logs-*-*/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "data_stream.namespace": "prod"
          }
        }
      ]
    }
  }
}

在上面,我们只针对一个小的数据集 prod 来进行搜索。在很多的情况下,这个非常有效!

Elastic data stream 命名方案的使用

Elastic Stack 7.9 及更高版本支持 Elastic 数据流命名方案,因为它需要支持数据流、新的 Elasticsearch 组件模板和常量关键字。 logs-*-* 和 metrics-*-* 的索引模板随 Elasticsearch >=7.9 一起提供。 Elastic Agent 附带的所有数据都使用 Elastic data stream 命名方案。 要将它用于任何其他数据传送器,只需遵循命名结构并添加 data_stream 字段以使其工作。

概括

这是 Elastic data stream 命名方案的简短摘要。 在后续的博客文章中,我们将深入探讨它在幕后如何工作的技术细节,Elastic Agent 如何详细使用它,以及如何使用它来为自己谋取更多的好处。 如需更多见解,请观看 Elastic Community YouTube 频道上对新的 Elastic 索引策略的深入了解

跟多阅读:Observability:运用 Fleet 来轻松地导入 Nginx 日志

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值