logstashでパースしたデータのうち、特定フィールドの値をコピーし指定した文字数だけを抜き出す方法を探しています。
ご存知の方がいればご教示いただけますでしょうか。
以下は取得したい結果の例です。
user-nameの値から5文字分抜き出したuser-name5フィールドを作成。
// "user-name":"hogehoge","user-name5":"hogeh"
以下の様にmutateのadd_fieldで単純なコピーを追加することはできたのですが、指定した文字数分だけ抽出するといったオプションが見つけられないため行き詰ってしまいました。
mutate {
add_field => ["User-Name5", "%{User-Name}"]
}
Badger
June 11, 2019, 10:01am
2
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" ]
}
system
(system)
Closed
July 10, 2019, 1:50am
4
This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.