【问题标题】:Logstash filter parse json file result a double fieldsLogstash 过滤器解析 json 文件结果是双字段
【发布时间】:2015-05-08 09:11:02
【问题描述】:

我正在使用最新的 ELK(Elasticsearch 1.5.2、Logstash 1.5.0、Kibana 4.0.2) 我有一个问题

示例.json

{ "field1": "This is value1", "field2": "This is value2" }

longstash.conf

input {
   stdin{ }
}

filter {
        json {
                source => "message"
                add_field =>
                {
                        "field1" => "%{field1}"
                        "field2" => "%{field2}"
                }
        }
}

output {
   stdout { codec => rubydebug }
   elasticsearch {
      host => "localhost"
      index => "scan"
   }
}

输出:

{
       "message" => "{ \"field1\": \"This is value1\", \"field2\": \"This is value2\" }",
      "@version" => "1",
    "@timestamp" => "2015-05-07T06:02:56.088Z",
          "host" => "myhost",
        "field1" => [
        [0] "This is value1",
        [1] "This is value1"
    ],
        "field2" => [
        [0] "This is value2",
        [1] "This is value2"
    ]
}

我的问题是 1) 为什么字段结果在结果中出现双倍? 2)如果有嵌套数组,在logstash配置中应该如何引用?

非常感谢!

..彼得拉

【问题讨论】:

  • 每个问题最好问一件事。第二个问题似乎没有例子,因此难以理解。至于第一个问题,您添加一个具有相同名称的字段,这将导致一个数组。不带 add_field 试试看,你很可能会得到你想要的。
  • Jettro,感谢您的评论!我应该把 q2 放在这里还是用例子问另一个问题?
  • 我会从这里删除问题 2 并使其成为一个单独的问题。

标签: json logstash


【解决方案1】:

我认为您误解了 json 过滤器的作用。当您通过 json 过滤器处理字段时,它将查找字段名称和相应的值。

在你的例子中,你已经用这部分做到了:

filter {
        json {
                source => "message"

然后您添加了一个名为“field1”的字段,其中包含字段“field1”的内容,因为该字段已经存在,您刚刚将相同的信息添加到已经存在的字段中,它现在变成了一个数组:

                add_field =>
                {
                        "field1" => "%{field1}"
                        "field2" => "%{field2}"
                }
        }
}

如果您将代码简化为以下内容,您应该没问题:

filter {
        json {
                source => "message"
        }
}

我怀疑您关于数组的问题此时变得没有意义,因为您可能不需要嵌套数组,因此不需要解决它,但如果您这样做,我相信您可以这样做所以:

[field1][0]
[field1][1]

【讨论】:

    猜你喜欢
    • 2016-01-27
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多