Arrays 用于修改数组字段的logstash筛选器

Arrays 用于修改数组字段的logstash筛选器,arrays,json,logstash,logstash-configuration,Arrays,Json,Logstash,Logstash Configuration,我正在寻找一个日志存储过滤器,可以修改数组字段 例如,我希望有一个修饰符可以转换这个JSON文档 { arrayField: [ { subfield: { subsubfield: "value1" } }, { subfield: { subsubfield: "value2" } } ] } { arrayField: [ { subfield:

我正在寻找一个日志存储过滤器,可以修改数组字段

例如,我希望有一个修饰符可以转换这个JSON文档

{
  arrayField: [
    {
      subfield: {
        subsubfield: "value1"
      }
    },
    {
      subfield: {
        subsubfield: "value2"
      }
    }
  ]
}
{
  arrayField: [
    {
      subfield: "value1"
    },
    {
      subfield: "value2"
    }
  ]
}
进入这个JSON文档

{
  arrayField: [
    {
      subfield: {
        subsubfield: "value1"
      }
    },
    {
      subfield: {
        subsubfield: "value2"
      }
    }
  ]
}
{
  arrayField: [
    {
      subfield: "value1"
    },
    {
      subfield: "value2"
    }
  ]
}
我尝试了以下输入

input {
  mutate {
    replace => ["[arrayField][subfield]", "%{[arrayField][subField][subsubField]}"]
  }
}

但是输入只是重写数组字段,而不是对数组的每个元素进行操作。如何设置修改器来操作数组中的每个元素?

感谢Alain Collins指出ruby过滤器。下面的输入成功了

input {
  ruby {
    code => "
      event['arrayField'].each{|subdoc| subdoc['subfield'] = subdoc['subfield']['subsubfield']}
    "
  }
}

要在logstash中的字段之间进行一般性循环,需要进入ruby{}过滤器。在其他SO帖子中也有这样的例子。谢谢,ruby过滤器工作得很好。