基于logstash中的模式将字符串转换为数组
我的原始数据基于logstash中的模式将字符串转换为数组,logstash,logstash-grok,logstash-configuration,logstash-filter,Logstash,Logstash Grok,Logstash Configuration,Logstash Filter,我的原始数据 { message: { data: "["1,2","3,4","5,6"]" } } 现在我想将数据字段的值转换为数组。 因此,它应该成为: { message: { data: ["1,2", "3,4", "5,6"] } } 利用 mutate { gsub => ["data", "[\[\]]", ""] } 我去掉了方括号 之后,我尝试使用逗号进行拆分。但那是行不通的。因为我的数据也有逗号 我试着写了一
{
message: {
data: "["1,2","3,4","5,6"]"
}
}
现在我想将数据字段的值转换为数组。
因此,它应该成为:
{
message: {
data: ["1,2", "3,4", "5,6"]
}
}
利用
mutate {
gsub => ["data", "[\[\]]", ""]
}
我去掉了方括号
之后,我尝试使用逗号进行拆分。但那是行不通的。因为我的数据也有逗号
我试着写了一封信,但没有用
那么我应该如何继续呢?您尝试过json过滤器了吗?如果数据字段始终包含有效的json数据,则可以使用如下json过滤器:
json {
source => "data"
target => "data"
}
使用
target=>“data”
将覆盖数据字段。将尝试此操作并回复我已经有了json{source=>“message”}
。我应该在我的代码片段之后添加您的代码片段吗?在添加了json{source=>“message”}
和json{source=>“data”target=>“data”}
之后,它工作正常。您可以添加一个示例说明为什么这样做吗。另外,在摆弄之后,我发现移除2个过滤器中的任何一个或移除第2个过滤器中的target
,都会产生不想要的结果。请您解释一下为什么会这样做。使用json过滤器中的`target=>“data”`选项,json过滤器会将结果json添加为字段数据的子项,替换之前存在的任何内容:在您的情况下,它会将字符串替换为数组。我不确定我是否理解您的意思。当json{source=>“message”}
parse{“key”:“val”}
时,它将在根级别向logstash事件添加一个名为key of value val的字段。