编辑字段映射
编辑编辑字段映射
编辑摄取管道在 Elasticsearch 索引中创建字段,但不会定义字段本身。相反,每个字段都需要定义一个数据类型或映射。
在集成中,fields
目录用作用于为集成创建组件模板的蓝图。构建集成时,将统一来自此目录中所有文件的内容,因此映射需要针对每个数据流数据集唯一。
与摄取管道类似,映射仅适用于数据流数据集,例如我们的示例 apache.access
数据集。
+ 注意:这些文件的名称是约定,任何具有 .yml
扩展名的文件名都可以。
集成在如何定义 ECS 字段方面进行了重大增强。以下是根据您的集成将支持的 Elastic 版本,关于使用哪种方法的指南。
+ . ECS 映射组件模板(>=8.13.0)仅支持 8.13.0 及更高版本的集成可以使用 Fleet 安装的 ecs@mappings 组件模板。这使得显式声明 ECS 字段成为不必要的操作;Elasticsearch 中的 ecs@mappings
组件模板将自动检测并配置它们。但是,如果显式定义了 ECS 字段,它们将覆盖 ecs@mappings
组件模板提供的动态映射。它们也可以使用如下所示的 external
声明导入。
+ . 动态映射导入(<8.13.0 & >=8.13.0)支持低于 8.13.0 版本的 Elastic Stack 的集成仍然可以通过在包目录根目录下的 _dev/build/build.yml
文件的 ECS 部分中定义 import_mappings: true
来动态导入 ECS 字段映射。这引入了 动态映射,其中包含大多数 ECS 定义。使用此方法意味着,就像以前的方法一样,不需要在集成中定义 ECS 字段,它们在构建时会动态集成到包中。可以并且将覆盖此机制使用显式定义的 ECS 字段。
上述 build.yml
文件的示例,用于此方法
+
dependencies: ecs: reference: [email protected] import_mappings: true
+ . 显式 ECS 映射如前两种方法中所述,ECS 映射仍然可以显式设置,并将覆盖动态映射。这可以通过两种方式完成:- 使用 external: ecs
引用来导入特定字段的定义。- 直接定义 ECS 字段。
external: ecs
定义指示 elastic-package
命令行工具参考外部 ECS 引用以解析特定字段。默认情况下,它会查看托管在 Github 上的 ECS 引用 文件。此外部引用文件由包目录根目录下的 _dev/build/build.yml
文件中找到的 Git 引用确定。为外部引用设置的 build.yml
文件
+
dependencies: ecs: reference: [email protected]
ECS 字段的直接定义
- name: cloud.acount.id level: extended type: keyword ignore_above: 1024 description: 'The cloud account or organ....' example: 43434343
-
本地 ECS 引用文件(断开连接的设置)通过将
_dev/build/build.yml
中的 Git 引用更改为已下载的 ECS 引用 文件的路径,elastic-package
命令行工具可以本地查找此文件。请注意,路径应为引用文件的完整路径。这样做,我们的build.yml
文件如下所示dependencies: ecs: reference: file:///home/user/integrations/packages/apache/ecs_nested.yml
Apache 集成的 access
数据流数据集有四个不同的字段定义
+ 注意:以下的 apache
集成尚未更新为使用动态 ECS 字段定义,并且使用 external
引用在 ecs.yml
中定义 ECS 字段。
+
apache └───data_stream │ └───access │ │ └───elasticsearch/ingest_pipeline │ │ │ default.yml │ │ └───fields │ │ agent.yml │ │ base-fields.yml │ │ ecs.yml │ │ fields.yml │ └───error │ │ └───elasticsearch/ingest_pipeline │ │ │ default.yml │ │ └───fields │ │ agent.yml │ │ base-fields.yml │ │ ecs.yml │ │ fields.yml │ └───status
agent.yml
编辑agent.yml
文件定义了默认处理器使用的字段。例如:cloud.account.id
、container.id
、input.type
base-fields.yml
编辑在此文件中,data_stream
子字段 type
、dataset
和 namespace
定义为类型 constant_keyword
,这些字段的值由集成添加。 event.module
和 event.dataset
字段定义为特定于此集成的固定值:- event.module: apache
- event.dataset: apache.access
字段 @timestamp
在此处定义为类型 date
。