问答编辑

使用 ECS 有什么好处?编辑

在集群中采用这些字段和名称对用户的好处是

  • 数据关联。 能够轻松关联来自相同或不同来源的数据,包括

    • 来自指标、日志和应用程序性能管理 (apm) 工具的数据
    • 来自相同机器/主机的数据
    • 来自相同服务的数据
  • 易于回忆。 提高记忆常用字段名称的能力(因为只有一组,而不是每个数据源一组)
  • 易于推断。 提高推断字段名称的能力(因为字段命名遵循少量规则,几乎没有例外)
  • 重复使用。 能够跨多个数据源重复使用分析内容(搜索、可视化、仪表板、警报、报告和机器学习作业)
  • 面向未来。 能够在您的环境中使用任何未来 Elastic 提供的分析内容,而无需修改

如果我的字段与 ECS 冲突怎么办?编辑

您可以使用重命名处理器来解决字段冲突。例如,假设您已经有一个名为“user”的字段,但 ECS 使用 user 作为对象。您可以在摄取时使用重命名处理器将您的字段重命名为匹配的 ECS 字段。如果您的字段与 ECS 不匹配,您可以将您的字段重命名为 user.value

如果我的事件有额外的字段怎么办?编辑

事件除了包含 ECS 字段外,还可以包含其他字段。这些字段可以遵循 ECS 命名和编写规则,但这不是必需的。

为什么 ECS 使用点符号而不是下划线符号?编辑

将数据摄取到 Elasticsearch 中有两种常见的键格式

  • 点符号:user.firstname: Nicolasuser.lastname: Ruflin
  • 下划线符号:user_firstname: Nicolasuser_lastname: Ruflin

ECS 使用点符号来表示嵌套对象。

两种符号有什么区别?编辑

摄取 user.firstname: Nicolasuser.lastname: Ruflin 等同于摄取以下 JSON

    "user": {
      "firstname": "Nicolas",
      "lastname": "Ruflin"
    }

在 Elasticsearch 中,user 表示为对象数据类型。在下划线符号的情况下,两者都只是字符串数据类型

点符号的优点编辑

使用点符号,Elasticsearch 中的每个前缀都是一个对象。每个对象都可以有参数来控制对象内部字段的处理方式。例如,在 ECS 的上下文中,这些参数允许您禁用某些前缀的动态属性创建。

单个对象在摄取和事件方面都为您提供了更大的灵活性。例如,在 Elasticsearch 中,您可以使用 remove 处理器删除完整的对象,而不是选择对象内的每个键。您不必事先知道对象中将有哪些键。

在 Beats 中,您可以简化事件的创建。例如,您可以将每个对象视为一个对象(或 Golang 中的结构体),这使得构造和修改最终事件的每个部分更容易。

点符号的缺点编辑

在 Elasticsearch 中,每个键只能有一种类型。例如,如果 userobject,则不能在同一索引中将其用作 keyword 类型,例如 {"user": "nicolas ruflin"}。此限制在某些数据集中可能是一个问题。对于 ECS 数据本身,这不是问题,因为所有字段都是预定义的。

如果我已经使用了下划线符号怎么办?编辑

只要没有冲突,下划线符号和 ECS 点符号可以共存于同一文档中。

如果我想使用来自同一字段类型系列的不同数据类型怎么办?编辑

在 Elasticsearch 中,字段类型按系列分组。同一系列中的类型支持相同的搜索功能,但可能具有不同的空间使用量或性能特征。例如,keywordwildcard 类型都是 keyword 系列的成员,textmatch_only_texttext 系列的成员。

ECS 中定义的字段类型为大多数用户提供了最佳的默认体验。但是,如果特定用例需要,可以使用来自同一系列的不同类型来替换 ECS 中定义的默认类型。在从默认字段类型更改之前,用户应该了解任何潜在的性能或存储差异。

Elasticsearch 映射类型部分包含有关类型系列的更多信息。