Logstashのfilterについて mutateの記載数 を減らしたい、デフォルトをintegerにする方法

(Tomomr) #1

はじめまして

Logstashについて、ぜひコメントをお願いします。

フィルタで以下のようにすると、price_eurの属性をintegerとすることは
理解できたのですが、

filter {
csv {
separator => ","
columns => [ "price_eur" ]
}
mutate {convert => ["price_eur", "integer"] }

    }

50個ほどあるデータのほとんどがintegerの場合、
defaultをintegerとして、残りを文字列としたいのです。

もしそのようなことが可能であれば、設定方法を教えてください。
よろしくお願いいたします。

#2
filter {
    csv { source => "message" }
    ruby {
        code => '
            event.to_hash.each { |k, v|
                if v.to_i.to_s == v
                    event.set(k, v.to_i)
                end
            }
        '
    }
}

Does that help?

(Tomomr) #3

Hi Badger,
Thank you for your prompt reply.
It will be effective for me.

But I do not have any knowledge of Ruby. But I understood "v.to_i" change value to integer. It is useful for my case.
Anyway, Can I change default value of receiving data as integer in logstash?

It will be better for me.

Thanks,
Tomo.