You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kafka管道Regex匹配异常求助:Schema映射函数正则不匹配

问题解决步骤

核心问题分析

你的正则在Kafka管道中失效,主要有三个原因:

  • 字段路径错误:日志中message是嵌套结构体,实际字符串内容存储在message.string字段,而非直接的message字段
  • 正则转义缺失:JSON配置中反斜杠需双重转义(如\d要写成\\d),否则转义符会被JSON解析器忽略
  • 配置语法错误:原mapping.config存在括号不闭合、格式不完整的问题

修正后的完整配置

"mapping.config": "fields = [ { 
    condition { 
        function = \"MATCHES_REGEX\", 
        args = [ \"message.string\", \"\\[Error \\d{4}\\]\" ] 
    }, 
    mapping { 
        \"timestamp\" = \"timestamp\", 
        \"host\" = \"host\", 
        \"service\" = \"service\", 
        \"message.errorcode\" = { 
            function = \"REGEX_EXTRACT\", 
            args = [ \"message.string\", \"\\[Error (\\d{4})\\]\", 1 ] 
        } 
    } 
} ]"

关键修改点说明

  1. 字段路径修正:将所有正则操作的目标字段从message改为message.string,确保指向真正的日志字符串内容
  2. 正则转义修正:
    • 匹配方括号[/]时,需写成\\[/\\](JSON双重转义)
    • 数字匹配\d需写成\\d
  3. 语法修正:补全缺失的闭合括号,确保JSON格式合法
  4. 正则精准度优化:直接匹配[Error XXXX]格式,避免误匹配其他位置的"Error"字符串

验证说明

针对你提供的日志条目:

"message": {"string": "<userId xmlns=\"\">xxxxxxxxx</userId><command type=\"Error\" echo=\"test\" xsi:type=\"c:ErrorResponse\" xmlns:c=\"C\" xmlns=\"\"><summary>[Error 4007] Invalid login ID: xxxxxx</summary><summaryEnglish>[Error 4007] Invalid login ID: xxxxx</summaryEnglish></command>"}

修正后的配置会成功匹配,并提取出错误码4007,最终在topic2生成:

"message": {"errorcode": "4007"}

内容的提问来源于stack exchange,提问作者user11189194

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 14:07:23