You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ingest Node管道Set处理器中设置条件,当log.level为error时新增字段

实现方案

1. 管道配置

你可以直接使用以下配置创建Ingest管道,核心是在Set处理器中通过Painless表达式配置判断条件:

PUT _ingest/pipeline/add_statuscode_pipeline
{
  "processors": [
    {
      "set": {
        "field": "statuscode",
        "value": 500,
        "if": "ctx?.messageinfo != null && ctx.messageinfo['log.level'] == 'error'",
        "ignore_failure": true
      }
    }
  ]
}

2. 配置说明

  • 条件判断中增加了ctx?.messageinfo != null的非空校验,避免messageinfo字段不存在时管道执行报错
  • 因为log.level本身是带点的字段名,不是嵌套对象,所以用ctx.messageinfo['log.level']的方式访问字段值
  • value可以根据你的业务需求自定义修改,示例中设置为500
  • ignore_failure设置为true后,即使该处理器执行失败也不会中断整个管道流程
  • 如果你需要把statuscode字段放到messageinfo嵌套结构下,只需要将Set处理器的field参数值改为messageinfo.statuscode即可

3. 效果测试

你可以通过Ingest管道的模拟接口验证效果,测试请求如下:

POST _ingest/pipeline/add_statuscode_pipeline/_simulate
{
  "docs": [
    {
      "_source": {
        "messageinfo": {
          "log.origin": {
            "file.line": 131
          },
          "@timestamp": "2021-11-15T10:07:36.125Z",
          "service.name": "my-server",
          "ecs.version": "1.6.0",
          "log.level": "error",
          "message": "Failed"
        }
      }
    }
  ]
}

返回结果中可以看到文档已经自动新增了statuscode字段,值为你配置的数值。

内容的提问来源于stack exchange,提问作者sidharth vijayakumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 09:15:02