logstash mutate过滤器总是将哈希和数组字符串化

时间:2015-07-20 13:41:29

标签: logstash logstash-configuration

我有一个json日志文件,我将其作为此配置的输入

input {
   file { filename }
   codec { json_lines }
}

每一行都是深层嵌套的JSON。

在过滤器中,

当我说

mutate { add_field => { "new_field_name" => "%{old_field_name}"}
  • 如果old_field是嵌套的散列/数组,则将其转换为字符串然后添加。无论如何我可以保留类型而不是字符串吗?

1 个答案:

答案 0 :(得分:3)

您可以考虑使用ruby过滤器复制数组:

filter  {
    ruby { code => "event['newhash'] = event['myhash']" }
}

我认为没有更清洁的解决方案。

除此之外,你真的在​​文件输入中使用json_lines编解码器吗?来自logstash doc:

  

如果您的源输入是面向行的JSON,请不要使用此编解码器   例如,redis或文件输入。相反,使用json编解码器。