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

Logstash管道JSON结构调整:移除result嵌套层级

如何在Logstash中将嵌套的result字段内容提升到_source根目录

要实现把_source下result嵌套的所有字段移到根层级,同时删除result字段,可以通过Logstash的filter插件完成,以下是两种适配不同场景的方案:

方案1:逐个字段迁移(适合字段数量少的场景)

使用mutate插件的rename和remove_field动作,直接指定需要迁移的字段:

filter {
  mutate {
    # 将result下的字段迁移到_source根目录
    rename => {
      "[result][incident_state]" => "incident_state"
      "[result][u_agent_name]" => "u_agent_name"
      "[result][number]" => "number"
      "[result][time_worked]" => "time_worked"
      "[result][problem_id]" => "problem_id"
      "[result][cause]" => "cause"
      "[result][assigned_to]" => "assigned_to"
    }
    # 删除不再需要的result字段
    remove_field => ["result"]
  }
}

方案2:批量迁移字段(适合字段数量多的场景)

如果result下包含大量字段,不想逐个手动指定,可以用ruby插件编写脚本批量处理:

filter {
  ruby {
    code => "
      result_data = event.get('result')
      # 确保result是哈希类型再执行后续操作
      if result_data.is_a?(Hash)
        # 遍历result的所有键值对,添加到_event根层级
        result_data.each do |field_key, field_value|
          event.set(field_key, field_value)
        end
        # 删除原result字段
        event.remove('result')
      end
    "
  }
}

注意事项

  • 需确保result字段的类型为哈希(Hash),脚本中的判断逻辑可避免因空值或非哈希类型导致的报错。
  • 如果_source根目录已存在与result下同名的字段,迁移时会直接覆盖原有字段,如有冲突需提前处理。

内容的提问来源于stack exchange,提问作者P N Jain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 14:02:31