【问题标题】:convert string to array based on pattern in logstash根据logstash中的模式将字符串转换为数组
【发布时间】:2019-06-23 13:01:02
【问题描述】:

我的原始数据。

{
  message: {
      data: "["1,2","3,4","5,6"]"
  }
}

现在我想将数据字段的值转换为数组。 所以它应该变成:

{
  message: {
      data: ["1,2", "3,4", "5,6"]
  }
}

通过使用

mutate {
    gsub => ["data", "[\[\]]", ""]
  }

我去掉了方括号。

在此之后,我尝试基于逗号进行拆分。但这行不通。因为我的数据也有逗号。

我尝试写一个dissect block,但这没有用。

那我应该怎么做呢?

【问题讨论】:

    标签: logstash logstash-grok logstash-configuration logstash-filter


    【解决方案1】:

    你试过 json 过滤器吗?如果数据字段总是包含有效的 json 数据,你可以像这样使用 json 过滤器:

    json {
        source => "data"
        target => "data"
    }
    

    使用target => "data" 将覆盖数据字段。

    【讨论】:

    • 会试试这个并回复
    • 我已经有json{ source => "message" }。我应该在我的后面加上你的 sn-p 吗?
    • 在添加 json{ source => "message" } 和 json { source => "data" target => "data" } 后它可以正常工作你能否添加一个解释为什么这样有效。此外,在摆弄之后,我发现删除 2 个过滤器中的任何一个或从第二个过滤器中删除 target 都会产生不希望的结果。您愿意解释一下为什么会这样吗?
    • 在 json 过滤器中使用 `target => "data"` 选项,json 过滤器会将生成的 json 添加为字段数据的子项,替换之前的任何内容:在您的情况下,它用数组替换字符串。
    • 我不确定我理解你的意思。当json{ source => "message" }解析{"key":"val"}时,它会在logstash事件的根级别添加一个名为key of value val的字段。
    猜你喜欢
    • 2022-01-16
    • 1970-01-01
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 2016-03-07
    • 2014-07-03
    • 1970-01-01
    相关资源
    最近更新 更多