利用logstash-output-jdbc从mysql导入数据到es中,如何构建多级节点的JSON

需求场景:

1:  利用logstash-output-jdbc从mysql导入数据到es(elasticsearch版本5.4.1)中,如何构建构建一对一多级节点的JSON.  如产品表,需要关联产品品牌,产品供应商。 

解决方法:

filter {
if [type] == "product"{
mutate {
add_field => {
"[provider][id]" => "%{provider_id}"
"[provider][code]" => "%{provider_code}"
   "[provider][name]" => "%{provider_name}"
}
add_field => {
"[brand][id]" => "%{brand_id}"
"[brand][name]" => "%{brand_name}"
    
}

remove_field => [ "provider_id", "provider_code","provider_name"]
remove_field => [ "brand_id","brand_name"]
}
}
}

2:  构建一对多级节点的JSON.  如产品品牌,对应多个产品。 

解决方法:

filter {
if [type] == "product1"{
aggregate {
task_id => "%{brand_id}"
code => "
map[' brandId'] = event.get(' brand_id') #品牌ID
map[' brandName'] = event.get('brand_name') #品牌名称
map['products'] ||= []
map[' products'] << {
'id' => event.get('id'),
'code' => event.get('code'), #产品编码
' name' => event.get('name'),#产品名称
}
event.cancel()
"
push_previous_map_as_event => true
}
}

 }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值