约定编辑

ECS 的实现遵循一些约定。了解这些约定将有助于您更好地理解 ECS。

整数的数据类型编辑

除非另有说明,否则用于整数字段的数据类型应为 long

ID 和大多数代码是关键词,而不是整数编辑

尽管 ID 和代码(如错误代码)通常是整数,但这并非总是如此。由于我们希望能够将尽可能多的系统和数据源映射到 ECS,因此我们默认使用 keyword 类型来表示 ID 和代码。

某些特定类型的代码始终是整数,例如 HTTP 状态代码。如果这些代码具有相应的特定字段(如 HTTP 状态代码),则其类型可以安全地设置为整数类型。但是,像 error.code 这样的通用字段无法保证这一点,因此它们是 keyword 类型。

文本索引和多字段编辑

Elasticsearch 可以使用以下数据类型索引文本

  • text 文本索引允许进行全文搜索,或搜索字段中包含的任意单词。有关 Elasticsearch 参考指南中的 文本数据类型,请参阅。
  • keyword 关键词索引提供了更快的精确匹配过滤、前缀搜索(如自动完成)以及聚合(如 Kibana 可视化)的功能。有关 Elasticsearch 参考指南中 精确匹配过滤前缀搜索聚合 的更多信息,请参阅。
索引文本字段的默认 Elasticsearch 约定编辑

除非您的索引映射或索引模板另有说明(如 ECS 索引模板 所述),否则 Elasticsearch 会将文本字段索引为规范字段名称下的 text,并在嵌套的多字段中将其再次索引为 keyword

默认 Elasticsearch 约定

  • 规范字段:myfieldtext
  • 多字段:myfield.keywordkeyword
ECS 索引文本字段的约定编辑

ECS 反转了上述约定。

对于监控用例,几乎总是需要 keyword 索引,而只有很少的字段需要进行全文搜索。此外,在许多字段上进行全文搜索索引(而实际上并不需要)会浪费资源。

鉴于这两个前提,ECS 默认将所有文本索引设置为 keyword 数据类型(只有极少数例外)。任何需要在其他字段上进行全文搜索索引的用例都可以添加一个 多字段 来进行全文搜索。这样做不会与 ECS 冲突,因为规范字段名称将保留 keyword 索引。

因此,ECS 用于文本的多字段约定为

  • 规范字段:myfieldkeyword
  • 多字段:myfield.texttext

例外

此约定的唯一例外是 messageerror.message 字段,它们只针对全文搜索进行索引,没有多字段。这两个字段不遵循新的约定,因为在 Beats 中广泛使用这两个字段,更改它们会造成很大的破坏性。

然而,将来在 ECS 中针对全文搜索进行索引的任何字段都将遵循多字段约定,其中 text 索引嵌套在多字段中。