将 json 嵌套字符串数组转换为平面字符串日志



我有这个JSON

{
"users":"[{"id":1,"name":"bob"},{"id":2,"name":"alice"},{"id":3,"name":"david"}]",
"date":"23/01/2017"
}

即使我使用的是 logstash 过滤器:

filter {
    split {
        field => "users"
    }
}

消息作为单个事件存储在 Elastic 中

users => [{"id":1,"name":"bob"},{"id":2,"name":"alice"},

{"id":3,"name":"david"}]date=> 23/01/2017

问题1:如何将用户字段从字符串转换为json数组以使其具有此

"users":[{"id":1,"name":"bob"},{"id":2,"name":"alice"},{"id":1,"name":"david"}],
"date":"23/01/2017"

问题 2:如何在 Elastic 中将此嵌套 JSON 存储为多个 JSON 事件

预期产出:

{
"id":1,
"name":"bob",
"date":"23/01/2017"
}
{
"id":2,
"name":"alice",
"date":"23/01/2017"
}
{
"id":3,
"name":"david",
"date":"23/01/2017"
}

提前感谢您的回答

对于问题 1,您可以使用 Logstash JSON 过滤器插件来转换 JSON 格式。

https://www.elastic.co/guide/en/logstash/current/plugins-filters-json.html

对于问题2,我认为从一行你不能制作多个文档,你需要为新文档放置日志新行。

Logstath 可以解析一行或多条日志来准备一个 elasticsearch 文档。但是从一行它不能创建多个文档。

相关内容

最新更新