基于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的字段。