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

时间:2019-07-18 08:00:38

标签: unicode logstash gsub

我使用了logstash jdbc语句 “从表中选择utl_raw.cast_to_varchar2(dbms_lob.substr(field,length(field)));” 获取blob字段。在logstash中输出的是unicode字符,例如“ \ v \ u0004 \ u0000 \ u0000 \ u0000 \ u0001 \ u0001 \ u0005 \ u0001 \ u0004 \ u0019 \ u0000c \ u0000o \ u0000m \ u0000。\ u0000w \ u0000m \ u0000。\ u0000d \ u0000a \ u0000t \ u0000a \ u0000。\ u0000I \ u0000S \ u0000M \ u0000e \ u0000m“' 实际值为“ com.wm.da​​ta.ISMem” 我需要替换所有unicode字符并解析我的数据。 任何人都建议如何修改它以及在这里可以使用哪种logstash过滤器来解析SQL输出

2 个答案:

答案 0 :(得分:1)

您可以从 Session session = entityManager.unwrap(Session.class); CallableStatement callableStatement = session.doReturningWork(new ReturningWork<CallableStatement>() { @Override public CallableStatement execute(Connection connection) throws SQLException { CallableStatement function = connection.prepareCall( "{ ? = call package_name.function_name(?,?) }"); function.registerOutParameter(1, Types.INTEGER); function.setLong(2, 56); function.setString(3,"some text"); function.execute(); return function; } }); try { return callableStatement.getBigDecimal(1); } catch (SQLException e) { e.printStackTrace(); return null; } 过滤器中使用gsub

mutate

第一个将删除mutate { gsub ["field-name","\v\u0004\u0001\u0005\u0001\u0004\u0019",""] gsub ["field=name","\u0000",""] } ,它似乎是某种标题。

第二个将从您的字符串中删除其余的\v\u0004\u0001\u0005\u0001\u0004\u0019

答案 1 :(得分:1)

您可以使用

对其进行变异
    mutate {
        gsub => [
            "message", "[\\]u0000", "",
            "message", "[\\]v[\\]u0004[\\]u0001[\\]u0005[\\]u0001[\\]u0004[\\]u0019", ""]
    }

我希望有一种方法可以将编码固定在红宝石过滤器中,但我不知道它是什么。