1

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

input {
   file { filename }
   codec { json_lines }
}

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

在过滤器中,

当我说

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

1 回答 1

3

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

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

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

除此之外,您真的将 json_lines 编解码器与文件输入一起使用吗?从logstash文档:

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

于 2015-07-24T11:10:33.430 回答