如何在设置处理器中设置条件(摄取节点管道)

How to set a condition in set processor (ingest node pipeline)

我的文档看起来像这样,我需要访问 log.level 这是一个嵌套字段。有人可以帮我吗,因为我需要一个条件来设置一个名为 statuscode 的新字段 if log.level=error.

{
"docs": [
{
  "doc": {
    "_index": "filebeat-mycluster",
    "_type": "_doc",
    "_id": "Xdffefepodmlajddwq",
    "_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"
      }
      
    }
  }
 ]
}

就是这样:

{
  "set": {
    "if": "ctx.messageinfo['log.level'] == 'error'",
    "field": "statuscode",
    "value": "whatever"
  }
}

请注意,如果您的 log.level 字段已正确去点化,您可以这样做:

{
  "set": {
    "if": "ctx.messageinfo.log.level == 'error'",
    "field": "statuscode",
    "value": "whatever"
  }
}