logstash mutate 插件 split 功能的使用

作者 helloworld1128 | 发布于2018年09月21日 | 阅读数:174

比如有一个json内容是这样的:  {"field1": "string1", "layers" : "a:b:c:d:e"}
 
我想对 layers 字段进行切分,导入ES 后,使文档变成这样:
{
    "field1":"string1",
    "layer1": "a",
    "layer2": "b", 
    "layer3": "c", 
    "layer4": "d", 
    "layer5": "e", 
    "layers": "a:b:c:d:e",
}
 
于是我使用了 logstash mutate插件的split功能:
mutate {
split => {"layers" => ":"}
add_field => {
"layer1" => "%{layers[0]}"
"layer2" => "%{layers[1]}"
"layer3" => "%{layers[2]}"
"layer4" => "%{layers[3]}"
"layer5" => "%{layers[4]}"
}
}



这样的设置,如果原始json中的的layers字段只有4个 :  是没有问题的,但如果少于 4 个,比如只有三个,即  "layers" : "a:b:c:d", 那经过处理后,文档就会变成这样:
{
"field1":"string1",
"layer1": "a",
"layer2": "b",
"layer3": "c",
"layer4": "d",
"layer5": "%{layers[4]}",
"layers": "[a,b,c,d,e]"
}
其中字段 layer5 的内容 不是我想要的。
再如果,原始 layers 中的 : 多于 4个,即 "layers": "a:b:c:d:e:f"  ,这样的设置又不能自动的添加 layer6 字段。
请问各位大神,有没有好的解决办法呢?
已邀请:

要回复问题请先登录注册