2

データベースなしで ES を使用し、Python アプリケーションからデータを構築し、リアルタイムで直接 ES に送信する可能性を検討しています。非常に複雑であると言われていますが、私の懸念は、ES がそれを受け入れる準備ができていない場合でも、データを非常に迅速に生成し、リクエストを容赦なく送信している可能性があることです。

私の質問は、この場合、2 つの間のバッファーとしてキュー システムを使用することは理にかなっているので、アプリケーションはすべてをキューに送信し、キューはそれを ES に追加しようとし、成功しない場合は再試行します。 .

これが最も論理的または効率的な方法であるかどうかはわかりません。どのキュー システムが適しているかについて情報やアイデアを持っている人がいる場合、または私がそれを必要としている場合は、非常に興味があります。

ジェームズ

4

2 に答える 2

4

Elasticsearch の一括インデックス作成 API は非常に効率的です。もちろん、ソース ドキュメントとアナライザーの複雑さに応じて、かなりの負荷を処理できます。適切なバルク バッチ サイズがハードウェアとユース ケース (前述の複雑さ) にとって最も効果的であることを必ずテストしてください。

別の方法として、Elasticsearch のriver概念 ( http://www.elasticsearch.org/guide/reference/river/、イントロ: http://www.elasticsearch.org/blog/the-river/ )を使用する方法があります。ある種のメッセージ ブローカー (redis、rabbitmq、couchdb などが存在します) をリッスンするクラスター内の1 つのノード。アプリケーションは、サポートする任意の速度 (通常は非常に高速) でメッセージ ブローカーにドキ​​ュメントをプッシュし、Elasticsearchriverはバッチでデータをプルし、一括インデックス作成を使用して内部的にインデックスを作成します。

正直なところ、よくわからない場合は、最初に最も簡単なソリューション (直接一括インデックス作成) を試してください。それがうまくいかない場合は、リバーサポートなどに移りましょう。

于 2013-08-30T15:24:29.237 に答える