问答
编辑问答编辑
使用 ECS 有什么好处?编辑
在集群中采用这些字段和名称对用户的好处是
-
数据关联。 能够轻松关联来自相同或不同来源的数据,包括
- 来自指标、日志和应用程序性能管理 (apm) 工具的数据
- 来自相同机器/主机的数据
- 来自相同服务的数据
- 易于回忆。 提高记忆常用字段名称的能力(因为只有一组,而不是每个数据源一组)
- 易于推断。 提高推断字段名称的能力(因为字段命名遵循少量规则,几乎没有例外)
- 重复使用。 能够跨多个数据源重复使用分析内容(搜索、可视化、仪表板、警报、报告和机器学习作业)
- 面向未来。 能够在您的环境中使用任何未来 Elastic 提供的分析内容,而无需修改
如果我的字段与 ECS 冲突怎么办?编辑
您可以使用重命名处理器来解决字段冲突。例如,假设您已经有一个名为“user”的字段,但 ECS 使用 user
作为对象。您可以在摄取时使用重命名处理器将您的字段重命名为匹配的 ECS 字段。如果您的字段与 ECS 不匹配,您可以将您的字段重命名为 user.value
。
如果我的事件有额外的字段怎么办?编辑
事件除了包含 ECS 字段外,还可以包含其他字段。这些字段可以遵循 ECS 命名和编写规则,但这不是必需的。
为什么 ECS 使用点符号而不是下划线符号?编辑
将数据摄取到 Elasticsearch 中有两种常见的键格式
- 点符号:
user.firstname: Nicolas
、user.lastname: Ruflin
- 下划线符号:
user_firstname: Nicolas
、user_lastname: Ruflin
ECS 使用点符号来表示嵌套对象。
两种符号有什么区别?编辑
摄取 user.firstname: Nicolas
和 user.lastname: Ruflin
等同于摄取以下 JSON
"user": { "firstname": "Nicolas", "lastname": "Ruflin" }
在 Elasticsearch 中,user
表示为对象数据类型。在下划线符号的情况下,两者都只是字符串数据类型。
点符号的优点编辑
使用点符号,Elasticsearch 中的每个前缀都是一个对象。每个对象都可以有参数来控制对象内部字段的处理方式。例如,在 ECS 的上下文中,这些参数允许您禁用某些前缀的动态属性创建。
单个对象在摄取和事件方面都为您提供了更大的灵活性。例如,在 Elasticsearch 中,您可以使用 remove 处理器删除完整的对象,而不是选择对象内的每个键。您不必事先知道对象中将有哪些键。
在 Beats 中,您可以简化事件的创建。例如,您可以将每个对象视为一个对象(或 Golang 中的结构体),这使得构造和修改最终事件的每个部分更容易。
点符号的缺点编辑
在 Elasticsearch 中,每个键只能有一种类型。例如,如果 user
是 object
,则不能在同一索引中将其用作 keyword
类型,例如 {"user": "nicolas ruflin"}
。此限制在某些数据集中可能是一个问题。对于 ECS 数据本身,这不是问题,因为所有字段都是预定义的。
如果我已经使用了下划线符号怎么办?编辑
只要没有冲突,下划线符号和 ECS 点符号可以共存于同一文档中。
如果我想使用来自同一字段类型系列的不同数据类型怎么办?编辑
在 Elasticsearch 中,字段类型按系列分组。同一系列中的类型支持相同的搜索功能,但可能具有不同的空间使用量或性能特征。例如,keyword
和 wildcard
类型都是 keyword
系列的成员,text
和 match_only_text
是 text
系列的成员。
ECS 中定义的字段类型为大多数用户提供了最佳的默认体验。但是,如果特定用例需要,可以使用来自同一系列的不同类型来替换 ECS 中定义的默认类型。在从默认字段类型更改之前,用户应该了解任何潜在的性能或存储差异。
Elasticsearch 映射类型部分包含有关类型系列的更多信息。