
5.Elasticsearch 3分でやるBulk API
Author:Makito
HP:Walker Industries LCC
過去にデータ登録をcurl -XPUTなどで入れていたと思いますが、一括で入れる手法をやります。(シンプルに)
Bulk APIを使う理由
Bulk API
create/index, delete, updateのアクションを一括してまとめてElasticsearchへ送信する仕組み
1度のリクエストで、複数のドキュメントに対する追加・更新・削除をが可能
大量のデータを追加・更新・削除する場合は、この Bulk API を使用したほうがパフォーマンスが良い
How big is Too big?
Google先生に訳してもらうと
バルク要求全体が、要求を受信したノードによってメモリにロードされる必要があるため、要求が大きければ大きいほど、他の要求に使用できるメモリは少なくなります。バルクリクエストの最適なサイズがあります。そのサイズを超えると、パフォーマンスは向上せず、低下することさえあります。ただし、最適なサイズは固定数ではありません。ハードウェア、ドキュメントのサイズと複雑さ、およびインデックスと検索の負荷に完全に依存します。
幸いなことに、このスイートスポットを見つけるのは簡単です。一般的な文書をサイズの大きなバッチで索引付けしてみてください。パフォーマンスが低下し始めると、バッチサイズが大きすぎます。開始するのに適した場所は、1,000〜5,000個の文書のバッチであり、文書が非常に大きい場合はさらに小さなバッチでもあります。バルク要求の物理的な大きさに注目することはしばしば役に立ちます。 1000個の1KB文書は1000個の1MB文書とは非常に異なっています。再生を開始するのに適したバルクサイズは、サイズが約5〜15MBです。
実際にBulk API登録するためのJsonを作ってみた
{"index":{"_id":"1","_index":"tweets","_type":"tweet_param"}}{"tweet_id": "1878237564","user_name": "@hoge","tweet": "#bulkapi テストでーブッ込むー ","tweet_create_at": "2017-03-09 18:00:00"}
注:データの最後の行は、改行文字\ nで終わる必要があります。
このJson形式の状態で行います。
データをぶっこんでみる
適当に名前を下記のようなファイル名にします。
bulk_tweets.json
jsonデータがあるディレクトリに移動して下記のコマンドを叩く
curl -XPOST 'http://localhost:9200/_bulk?pretty' --data-binary @bulk_tweets.json
curl -XGET'http://localhost:9200/{INDEX}/{TYPE}/_search?pretty'
で、データを確認してみてください。
WalkerIndustries
+++++++++++++++++++++++++++++++++++++++++++++++++++
Walker Industries LCC
PROFESSIONAL OF AMAZON WEB SERVICE.
WEB SYSTEM DEVELOPMENT
導入から運用までのスピード、多様な柔軟性、最新のサービス、
目的に合わせた環境構築を提供します。
AWS(Amazon Web Services)を得意とするエンジニアチームの為、迅速・柔軟な対応が可能です。
運用負担の軽減、急激なトラフィックに耐えうる設計、固定資産から経費計上化、etc... AWS運用・構築はお任せ下さい。