Logstash的KV模式自动将数字转换成整数

logstash的kv模式分割后的全部字符在Elasticsearch里面的数据类型全都是string,这样聚合搜索很不方便,于是利用ruby插件实现一下自动转整数的kv模式

## logstash 5.x,由于logstash5.x不支持直接修改值,直接把值copy出来修改然后重新写进去
filter {
    ruby {
        code => "
            fieldArray = event.get('[message][message]').split(/\u001F/);
            kv = {};
            for field in fieldArray
                name = field.split('=')[0];
                value = field.split('=')[1];
                if value =~ /\A\d+\Z/
                    kv[name]=value.to_i
                else
                    kv[name]=value
                end
            end
            event.set('[monitor]',kv);
        "
    remove_field => ["[message][message]"]
    }
}
### logstash 2.x
filter{
    ruby {
        code => "
            fieldArray = event['message'].split(/\u001F/);
            for field in fieldArray
                name = field.split('=')[0];
                value = field.split('=')[1];
                if value =~ /\A\-?\d+\Z/
                    event[name] = value.to_i
                else
                    event[name] = value
                end
            end
        "
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值