我有这个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 文档。但是从一行它不能创建多个文档。