热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何使用Logstash过滤器转换为elasticsearch输出的嵌套对象?

如何解决《如何使用Logstash过滤器转换为elasticsearch输出的嵌套对象?》经验,为你挑选了1个好方法。

我有来自JDBC输入的事件或行.

{"academic_session_id" : "as=1|dur=2015-16,as=2|dur=2016-17",
          "branch_id" : 1}

我想使用logstash过滤器将其转换或格式化为以下内容...

{"branch_id": 1,"sessions":[{"as":"1","dur":"2015-16"},{"as":"2","dur":"2016-17"}]}

如果您可以建议任何替代logstash.注意 - 我使用的是Elasticsearch 5.X版本



1> 小智..:

由于这是一个非常自定义的数据操作,我会使用ruby过滤器,只需使用code设置来编写脚本来解析数据.像这样的东西会起作用:

filter {
  ruby {
    code => "
      academic_session = event.get('academic_session_id').split(',').map{|data| data.split('|')}
      sessiOns= academic_session.map do |arr|
      temp_hash = {}
        arr.each do |kv|
          k,v = kv.split('=')
          temp_hash[k] = v
        end
        temp_hash
      end
      event.set('sessions', sessions)
    "  
    remove_field => ['academic_session_id']
  }
}


推荐阅读
author-avatar
liqiqinai
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有