Fluentdのout_fileプラグインで出力したファイルからElasticsearchにbulkインポートしたくなることってよくありますよね?

※当記事は2016年にQiitaに投稿した記事を再編集したものです

書き換え

bashのワンライナーで強引にbulkインポート用のフォーマットに書き換えちゃいます。
以下のコマンド結果をファイルにリダイレクトするとか、curlの引数にコマンド置換で渡すでもいいです。コマンドが長いのでたいていファイルに書きだしちゃいますが。
全部同じインデックス、ドキュメントタイプにすることを前提にしてます
あと、時刻のフォーマットを書き換えてる正規表現については必要があれば変えてください。(3つ目の-eのとこです)

$ awk -F '\t' '{print $1","$3}' <対象ファイル> | \
	sed -e 's/{//g' \
		-e 's/^/{"@timestamp":/g' \
		-e 's/\([0-9]\{4\}\)\/\([0-9]\{2\}\)\/\([0-9]\{2\}\) \([0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}\) \(+[0-9]\{4\}\)/"\1-\2-\3T\4\5"/g' \
		-e 'i\{"index":{}}\'

まぁ、他にいくらでも方法あると思いますが…

fluent-plugin-elasticsearchとかで最初から入れろよって話もありますが、それはそれ。

コメント

タイトルとURLをコピーしました