Logstash проверяет наличие полей во вложенном json - PullRequest
0 голосов
/ 11 октября 2018

Я хочу проверить наличие поля MD5 в фильтре Logstash 6.4.

"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 голосов
/ 12 октября 2018

Проблема в том, что file содержит массив json.Так что вам нужно будет использовать индекс элемента массива, чтобы это работало.

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