约定
编辑约定编辑
ECS 的实现遵循一些约定。了解这些约定将有助于您更好地理解 ECS。
整数的数据类型编辑
除非另有说明,否则用于整数字段的数据类型应为 long
。
ID 和大多数代码是关键词,而不是整数编辑
尽管 ID 和代码(如错误代码)通常是整数,但这并非总是如此。由于我们希望能够将尽可能多的系统和数据源映射到 ECS,因此我们默认使用 keyword
类型来表示 ID 和代码。
某些特定类型的代码始终是整数,例如 HTTP 状态代码。如果这些代码具有相应的特定字段(如 HTTP 状态代码),则其类型可以安全地设置为整数类型。但是,像 error.code
这样的通用字段无法保证这一点,因此它们是 keyword
类型。
文本索引和多字段编辑
Elasticsearch 可以使用以下数据类型索引文本
索引文本字段的默认 Elasticsearch 约定编辑
除非您的索引映射或索引模板另有说明(如 ECS 索引模板 所述),否则 Elasticsearch 会将文本字段索引为规范字段名称下的 text
,并在嵌套的多字段中将其再次索引为 keyword
。
默认 Elasticsearch 约定
- 规范字段:
myfield
为text
- 多字段:
myfield.keyword
为keyword
ECS 索引文本字段的约定编辑
ECS 反转了上述约定。
对于监控用例,几乎总是需要 keyword
索引,而只有很少的字段需要进行全文搜索。此外,在许多字段上进行全文搜索索引(而实际上并不需要)会浪费资源。
鉴于这两个前提,ECS 默认将所有文本索引设置为 keyword
数据类型(只有极少数例外)。任何需要在其他字段上进行全文搜索索引的用例都可以添加一个 多字段 来进行全文搜索。这样做不会与 ECS 冲突,因为规范字段名称将保留 keyword
索引。
因此,ECS 用于文本的多字段约定为
- 规范字段:
myfield
为keyword
- 多字段:
myfield.text
为text
例外
此约定的唯一例外是 message
和 error.message
字段,它们只针对全文搜索进行索引,没有多字段。这两个字段不遵循新的约定,因为在 Beats 中广泛使用这两个字段,更改它们会造成很大的破坏性。
然而,将来在 ECS 中针对全文搜索进行索引的任何字段都将遵循多字段约定,其中 text
索引嵌套在多字段中。