重新路由处理器
编辑重新路由处理器
编辑reroute
处理器允许将文档路由到另一个目标索引或数据流。它有两种主要模式
当设置 destination
选项时,目标被显式指定,并且不能设置 dataset
和 namespace
选项。
当 destination
选项未设置时,此处理器处于数据流模式。请注意,在这种模式下,reroute
处理器只能在遵循数据流命名方案的数据流上使用。尝试在名称不合规的数据流上使用此处理器将引发异常。
数据流的名称由三部分组成:<type>-<dataset>-<namespace>
。有关更多详细信息,请参阅数据流命名方案文档。
此处理器可以使用静态值或引用文档中的字段来确定新目标的 dataset
和 namespace
组件。有关更多详细信息,请参阅表 39,“重新路由选项”。
无法使用 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]"}
表 39. 重新路由选项
名称 | 必需 | 默认 | 描述 |
---|---|---|---|
|
否 |
- |
目标的静态值。当设置 |
|
否 |
|
数据流名称的 dataset 部分的字段引用或静态值。除了 索引名称 的标准之外,不能包含 支持带有类似 Mustache 语法的字段引用(表示为 |
|
否 |
|
数据流名称的 namespace 部分的字段引用或静态值。有关允许的字符,请参阅 索引名称 的标准。长度不得超过 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" } }