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

来源:互联网 发布:北京华宇软件 编辑:程序博客网 时间:2024/06/04 18:30

需求场景:

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 0
原创粉丝点击