问题与解答
编辑问题与解答
编辑使用 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
是一个 object
,则您不能在同一个索引中将其用作 keyword
类型,例如 {"user": "nicolas ruflin"}
。此限制在某些数据集中可能是一个问题。对于 ECS 数据本身,这不是问题,因为所有字段都是预定义的。
如果我已使用下划线表示法怎么办?
编辑只要没有冲突,下划线表示法和 ECS 点表示法就可以在同一文档中共存。
如果我想使用来自相同字段类型族的不同数据类型怎么办?
编辑在 Elasticsearch 中,字段类型按族分组。同一族中的类型支持相同的搜索功能,但可能具有不同的空间使用率或性能特征。例如,keyword
和 wildcard
类型都是 keyword
族的成员,text
和 match_only_text
是 text
族的成员。
ECS 中定义的字段类型为大多数用户提供了最佳的默认体验。但是,如果特定用例需要,则可以使用来自同一族的不同类型替换 ECS 中定义的默认类型。在更改默认字段类型之前,用户应了解任何潜在的性能或存储差异。
Elasticsearch 映射类型 部分提供了有关类型族的更多信息。