2015-07-20 70 views
0

我有一个JSON日志文件,其中我正在作为输入与这个配置logstash发生变异滤波器总是stringifies散列和阵列

input { 
    file { filename } 
    codec { json_lines } 
} 

每一行是一个深度嵌套JSON。

在过滤器,

当我说

mutate { add_field => { "new_field_name" => "%{old_field_name}"} 
  • 如果old_field是嵌套散列/阵列它被转换成一个字符串,然后加入。无论如何,我可以保留该类型而不是将其串化?

回答

2

你可能会考虑使用红宝石滤波复制数组:

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

我不认为这是一个清晰的解决方案。

除此之外,你真的使用带有文件输入的json_lines编解码器吗?从logstash DOC:

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

+1

json_lines是一个错误。 json是我们使用的实际代码。 – tamizhgeek