logstash过滤器修改数组字段

时间:2016-03-29 21:17:42

标签: arrays json logstash logstash-configuration

我正在寻找一个可以修改数组字段的logstash过滤器。

例如,我想要一个可以改变这个JSON文档的修饰符

{
  arrayField: [
    {
      subfield: {
        subsubfield: "value1"
      }
    },
    {
      subfield: {
        subsubfield: "value2"
      }
    }
  ]
}

进入这个JSON文档

{
  arrayField: [
    {
      subfield: "value1"
    },
    {
      subfield: "value2"
    }
  ]
}

我尝试过以下输入

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

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

1 个答案:

答案 0 :(得分:0)

感谢Alain Collins指出红宝石过滤器。以下输入就是诀窍。

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