Elasticsearchのデータをファイルへ書き出し

Elasticsearchに格納されたレコードをファイルに書き出す. 簡易的に書き出す場合はKibanaの機能が使える. 大量にあるレコードをまとめて書き出したい場合は,コマンドラインツールの利用が適している. ここではElasticsearch向けのコマンドラインツールの1つであるelasticdumpコマンドを使う.

以下はelasticdumpコマンドの例をあらわす.

elasticdump \
  --input="http://elastic-user:elastic-password@192.168.201.47:9200/filebeat*" \
  --output=out.json \
  --type=data \
  --fileSize=10mb \
  --retryAttempts=2 \
  --maxSockets=5 \
  --searchBody="{\"query\": {\"range\": { \"@timestamp\": { \"gte\": \"2022-05-01T00:00:00+09:00\", \"lte\": \"2022-06-01T00:00:00+09:00\"} } }}"

コマンドライン引数とその意味を以下に示す.

名前意味
inputhttp://elastic-user:elastic-password@192.168.201.47:9200/filebeat*Elasticsearchのアドレスとポート(192.168.201.47:9200),ユーザ名(elastic-user),パスワード(elastic-password),インデックス名(filebeat*)
outputout.json書き出すファイルの名前
typedataレコードの中身を書き出す
fileSize10mbファイルを分割するサイズ
retryAttemps2失敗した場合に再試行する回数
maxSockets5最大のソケット数(並列数)
searchBody{\"query\": {\"range\": { \"@timestamp\": { \"gte\": \"2022-05-01T00:00:00+09:00\", \"lte\": \"2022-06-01T00:00:00+09:00\"} } }}ElasticsearchのAPIが受け付けるクエリ. ここではタイムスタンプを2022年5月1日から6月1日までに限定している.

参考資料