コピーしたフィールドから〇文字抜き出す方法

logstashでパースしたデータのうち、特定フィールドの値をコピーし指定した文字数だけを抜き出す方法を探しています。
ご存知の方がいればご教示いただけますでしょうか。
以下は取得したい結果の例です。
user-nameの値から5文字分抜き出したuser-name5フィールドを作成。

// "user-name":"hogehoge","user-name5":"hogeh"

以下の様にmutateのadd_fieldで単純なコピーを追加することはできたのですが、指定した文字数分だけ抽出するといったオプションが見つけられないため行き詰ってしまいました。

mutate {
add_field => ["User-Name5", "%{User-Name}"]
}

You can use gsub to delete everything except the first five characters of a field

mutate { gsub => [ "user-name", "^(.{5}).*", "\1" ] }

以下の様に記載することで期待通りの結果を得ることができました。
本当にありがとうございました!

mutate {
        add_field => ["User-Name5", "%{User-Name}"]
}

mutate {
        gsub => ["User-Name5", "^(.{5}).*", "\1" ]
}

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