重定向处理器
编辑重定向处理器编辑
reroute
处理器允许将文档路由到另一个目标索引或数据流。它有两种主要模式
设置 destination
选项时,将明确指定目标,并且不能设置 dataset
和 namespace
选项。
如果未设置 destination
选项,则此处理器处于数据流模式。请注意,在此模式下,reroute
处理器只能用于遵循 数据流命名方案 的数据流。尝试在名称不符合要求的数据流上使用此处理器将引发异常。
数据流的名称由三部分组成:<类型>-<数据集>-<命名空间>
。有关更多详细信息,请参阅 数据流命名方案 文档。
此处理器可以使用静态值或文档中的引用字段来确定新目标的 dataset
和 namespace
组件。有关更多详细信息,请参阅 表 38,“重定向选项”。
无法使用 reroute
处理器更改数据流的 type
。
执行 reroute
处理器后,当前管道的所有其他处理器都将被跳过,包括最终管道。如果当前管道是在 管道 的上下文中执行的,则调用管道也将被跳过。这意味着在管道中最多执行一个 reroute
处理器,从而允许定义互斥的路由条件,类似于 if、else-if、else-if、… 条件。
重定向处理器确保根据新目标设置 data_stream.<type|dataset|namespace>
字段。如果文档包含 event.dataset
值,则将更新该值以反映与 data_stream.dataset
相同的值。
请注意,客户端需要具有最终目标的权限。否则,文档将被拒绝,并显示如下所示的安全异常
{"type":"security_exception","reason":"action [indices:admin/auto_create] is unauthorized for API key id [8-dt9H8BqGblnY2uSI--] of user [elastic/fleet-server] on indices [logs-foo-default], this action is granted by the index privileges [auto_configure,create_index,manage,all]"}
表 38. 重定向选项
名称 | 必需 | 默认 | 描述 |
---|---|---|---|
|
否 |
- |
目标的静态值。设置 |
|
否 |
|
数据流名称的数据集部分的字段引用或静态值。除了 索引名称 的标准外,不能包含 支持使用类似 mustache 的语法(表示为 |
|
否 |
|
数据流名称的命名空间部分的字段引用或静态值。有关允许的字符,请参阅 索引名称 的标准。长度不能超过 100 个字符。 支持使用类似 mustache 的语法(表示为 |
|
否 |
- |
处理器的描述。用于描述处理器的用途或其配置。 |
|
否 |
- |
有条件地执行处理器。请参阅 有条件地运行处理器。 |
|
否 |
|
忽略处理器的故障。请参阅 处理管道故障。 |
|
否 |
- |
处理处理器的故障。请参阅 处理管道故障。 |
|
否 |
- |
处理器的标识符。用于调试和指标。 |
可以使用 if
选项定义应将文档重定向到新目标的条件。
{ "reroute": { "tag": "nginx", "if" : "ctx?.log?.file?.path?.contains('nginx')", "dataset": "nginx" } }
dataset 和 namespace 选项可以包含单个值或用作回退的值列表。如果字段引用解析为 null
,则表示文档中不存在该字段,将使用列表中的下一个值或字段引用。如果字段引用解析为非 String
值,则处理器将失败。
在以下示例中,处理器将首先尝试解析 service.name
字段的值以确定 dataset
的值。如果该字段解析为 null
、缺失或非字符串值,则它将尝试列表中的下一个元素。在这种情况下,这是静态值 "generic
"。使用单个静态值配置 namespace
选项。
{ "reroute": { "dataset": [ "{{service.name}}", "generic" ], "namespace": "default" } }