Logstash检查嵌套json

时间:2018-10-11 13:36:15

标签: elasticsearch logstash

我想检查Logstash 6.4过滤器中是否存在MD5字段。

"files": [
  {
    "SHA256": "DA3662E34C66D770F28D23A26980B31245753049E55B0348D51B22524C00EE1C",
    "filesize": "8732",
    "MD5": "0551229E1E1180F5BF5513222C75412A"
  },
  {
    "SHA256": "ADA57125645BE67E7DB885D4DF8EBBC46B7CA8F54258EEC510ECDCC9350FCB43",
    "filesize": "433433",
    "MD5": "ADF322D0711E22BDFAA60E3503621292"
  }]

首次尝试使用过滤器:

filter {
if ("" in [files][MD5]) {
    mutate {
     add_field => { "md5_num" => "50"}
    }
}
}

第二个尝试的过滤器:

filter {
if [files][MD5]{
    mutate {
     add_field => { "md5_num" => "50"}
    }
}
}

这两个过滤器中的任何一个为什么不能按预期工作?

1 个答案:

答案 0 :(得分:2)

问题是file包含一个json数组。因此,您需要使用数组元素的索引才能正常工作。

if [files][0][MD5]{
    mutate {
        add_field => { "md5_num" => "50"}
    }
}