фильтр logstash добавить текст в вывод - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь включить вход json в другой json.Я не могу понять, как работают фильтры, и мне нужен пример для моего приложения.

Мой вход json:

{
  "documents": {
      "name": "projects",
      "fields": {
        "done": {
          "booleanValue": false
        },
        "title": {
          "stringValue": "testtest"
        }
      },
      "createTime": "2018-10-09T10:16:45.835536Z",
      "updateTime": "2018-10-09T10:17:37.550249Z"
    }
}

И вывод должен быть:

{
 "fields": {
  "test": {
   "stringValue": "{\"documents\": {\"name\": \"projects\",\"fields\": {\"done\": {\"booleanValue\": false},\"title\": {\"stringValue\": \"testtest\"}},\"createTime\": \"2018-10-09T10:16:45.835536Z\",\"updateTime\": \"2018-10-09T10:17:37.550249Z\"}}"
  }
 }
}

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Решение:

filter {
  mutate {
        rename => ["\"", "\\""]
  }
  mutate {
        rename => { "message" => "[stringValue]" }
  }
  mutate {
        rename => { "stringValue" => "[test][stringValue]"}
  }
  mutate {
        rename => { "test" => "[fields][test]"}
  }
  mutate {
    remove_field => ["@timestamp", "@version"]
  }
}
0 голосов
/ 12 октября 2018

Предполагая, что у вас есть ввод, как вы показали, самым грязным решением было бы изменить JSON раньше.

#!/bin/bash
echo -e "{\"fields\":{\"test\":{\"stringValue\":\"" >> newjson.json
cat yourjson.json >> newjson.json
echo -e "\"}}}" >> newjson.json
...