logstash - 使用mutate中的convert将所有以 "id"结尾的字段转换为整数?

标签 logstash logstash-grok elastic-stack logstash-configuration

目前我在我的 logstash 配置文件中做这样的事情:

filter {
    ...
    mutate {
        ...
        convert => {
            "blahId" => "integer"
            "blahblahId" => "integer"
            ...
            ...
            "b...blahId" => "integer"
        }
        ...
    }
    ...
}

所以基本上我想将所有以“Id”结尾的字段转换为整数类型。有没有办法在一行中做到这一点?类似 "*Id" => "integer"哪个呢?

编辑 : 我试过
convert => {
    "*Id" => "integer"
}

正如我所料,没有奏效。

也许使用 ruby​​ 过滤器?

最佳答案

不是具体的答案,但这就是我最终要做的:

ruby {
        code => "
            fieldArray = event['kvmess'].split('|');
            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
        "
    }

我的 kvmess 就像“blahId=123|blahblahId=456|some=thing|b..blahId=789”。
因此,这将所有具有数值的键转换为整数类型。

有一个插件 - kv 专门用于此,但它没有将数据类型更改为 int 的功能,所以我最终使用了这个 ruby​​ 插件。

关于logstash - 使用mutate中的convert将所有以 "id"结尾的字段转换为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38177877/

相关文章:

elasticsearch - 如何删除json。我的Elasticsearch字段上的前缀

php - 从php存储Logstash日志的最简单方法是什么

elasticsearch - 如何基于2个 token 之一将消息拆分为2个属性?

regex - Logstash Grok 匹配到 UserAgent 开始前的最后一个索引

elasticsearch - 关于Elasticsearch json dsl查询结构的困惑

logstash - 日期格式 YYYY/MM/DD HH :mm:ss? 是否有任何现有的 grok{} 模式

json - Logstash不解析JSON

elasticsearch - grok模式从日志消息中提取数据

json - Filebeat 和 LogStash——多种不同格式的数据

docker - 在 Docker 上运行 ELK 堆栈比在 VM 上运行有什么好处