问题与解答
编辑问题与解答
编辑使用 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 中,您可以使用删除处理器来删除完整的对象,而不是选择每个内部的键。您不必提前知道对象中将包含哪些键。
在 Beats 中,您可以简化事件的创建。例如,您可以将每个对象视为一个对象(或 Golang 中的结构),这使得构造和修改最终事件的每个部分变得更容易。
点表示法的缺点
编辑在 Elasticsearch 中,每个键只能有一种类型。例如,如果 user
是一个 对象
,则不能在同一索引中将其用作 keyword
类型,例如 {"user": "nicolas ruflin"}
。此限制在某些数据集中可能是一个问题。对于 ECS 数据本身,这不是问题,因为所有字段都是预定义的。
如果我已经使用下划线表示法怎么办?
编辑只要没有冲突,下划线表示法和 ECS 点表示法就可以在同一文档中共存。
如果我想使用同一字段类型系列中的不同数据类型怎么办?
编辑在 Elasticsearch 中,字段类型按系列分组。同一系列中的类型支持相同的搜索功能,但可能具有不同的空间使用或性能特征。例如,keyword
和 wildcard
类型都是 keyword
系列的成员,text
和 match_only_text
是 text
系列的成员。
ECS 中定义的字段类型为大多数用户提供了最佳的默认体验。但是,如果特定用例需要,可以使用同一系列中的不同类型替换 ECS 中定义的默认类型。用户应在更改默认字段类型之前了解任何潜在的性能或存储差异。
Elasticsearch 映射类型部分包含有关类型系列的更多信息。