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

はじめまして

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

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

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

    }

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

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

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?

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.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.