如何使用 logstash 解析包含不同 unicode 字符串的字段

how to parse a field containing different unicode string with logstash

我使用了 logstash jdbc 语句 "select utl_raw.cast_to_varchar2(dbms_lob.substr(field,length(field))) from table;" 获取 blob 字段。 logstash 中的输出带有 unicode 字符,例如“\v\u0004\u0000\u0000\u0000\u0001\u0005\u0001\u0004\u0019\u0000c\u0000o\u0000m\u0000.\u0000w\u0000m\u0000.\u0000d\u0000a\u0000t\u0000a\u0000.\u0000I\u0000S\u0000M\u0000e\u0000m”' 哪个实际值为 "com.wm.data.ISMem" 我需要替换所有 unicode 字符并解析我的数据。 任何人都建议如何解决这个问题以及可以在此处使用哪个 logstash 过滤器来解析 SQL 输出

您可以使用 mutate 过滤器中的 gsub

mutate {
    gsub ["field-name","\v\u0004\u0001\u0005\u0001\u0004\u0019",""]
    gsub ["field=name","\u0000",""]
}

第一个将删除\v\u0004\u0001\u0005\u0001\u0004\u0019,这似乎是某种header。

第二个将从您的字符串中删除剩余的 \u0000

你可以使用

改变它
    mutate {
        gsub => [
            "message", "[\]u0000", "",
            "message", "[\]v[\]u0004[\]u0001[\]u0005[\]u0001[\]u0004[\]u0019", ""]
    }

我希望有一种方法可以修复 ruby 过滤器中的编码,但我不知道它是什么。