问题与解答

编辑

使用 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: Nicolasuser.lastname: Ruflin 与摄取以下 JSON 相同

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

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

点表示法的优势
编辑

使用点表示法,Elasticsearch 中的每个前缀都是一个对象。每个对象都可以具有 参数,用于控制如何处理对象内的字段。例如,在 ECS 的上下文中,这些参数将允许您禁用某些前缀的动态属性创建。

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

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

点表示法的缺点
编辑

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

如果我已经使用下划线表示法怎么办?
编辑

只要没有冲突,下划线表示法和 ECS 点表示法就可以在同一文档中共存。

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

编辑

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

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

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