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

使用logstash-logback-encoder写入Kibana的JSON被扁平化,如何输出嵌套对象

问题根因

你遇到的嵌套Map被扁平化问题,是logstash-logback-encoder默认开启了Map值的扁平化配置,会把嵌套结构自动转为http.url、http.headers.X-Auth-Token这类点分隔的扁平字段。

解决方法

修改你的logback.xml配置,在LogstashEncoder节点下添加关闭Map扁平化的配置即可:

<appender name="STASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>${logstashHost}:${logstashPort}</destination>
        <encoder class="net.logstash.logback.encoder.LogstashEncoder">
            <!-- 关闭Map值扁平化,保留原始嵌套结构 -->
            <flattenMapValues>false</flattenMapValues>
            <provider class="net.logstash.logback.composite.loggingevent.ArgumentsJsonProvider" />
        </encoder>
</appender>

额外注意事项

  • 检查你的Logstash服务侧的处理配置,确保json解析过滤器没有开启flatten => true参数,否则会再次把嵌套结构压平。
  • 如果之前已经写入过扁平化的http.*字段到Elasticsearch索引中,需要先删除旧索引或者调整索引mapping,避免字段类型冲突导致嵌套结构写入失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:09:05