0

私のアプリケーションでは、時々すべてのデータのインデックスを再作成する必要があります。初めて (バルク インデックスを介して) データのインデックスを作成するのにかかる時間は、その後の再インデックス作成よりも大幅に遅いことに気付きました。あるシナリオでは、最初のインデックス作成に約 2 時間かかり、2 回目以降のインデックス作成 (同じデータのインデックス作成) には約 15 分かかります。

初回のインデックス作成に 2 時間かかるのは妥当ですが、その後の再インデックス作成の反復が大幅に高速化される理由に興味があります。さらに、初めてインデックスを作成するときのパフォーマンスを改善するために何かできることはないかと考えています。たとえば、インデックスの大きさを示すなどです。

ありがとう、エリック

4

2 に答える 2

3

タイプのマッピングを定義しましたか? そうでない場合、ES が新しいフィールドを見つけるたびに、マッピングを更新する必要があります (これはインデックス全体に影響します)。

後続の索引付けでは、マッピングはすでに完了しています。したがって、できることは、型を明示的にマッピングすることです。

refresh_intervalまた、 をより高い値に設定することで、再インデックス作成の速度を向上させることができます。このベンチマークを見てください

于 2013-08-20T07:53:39.817 に答える
2

ES 2.0 で削除されたmerge_factorため、参照を削除するように編集: https://www.elastic.co/guide/en/elasticsearch/reference/current/breaking_20_setting_changes.html#_merge_and_merge_throttling_settings


ダミアンが示すように、実際に (一括) インデックス設定に影響を与えることがrefresh_intervalできます。一時的に設定して、一括インデックス作成が完了した後に -1既定値に戻すことができます。変更する別の設定は; などのより高い値に設定し、一度完了したデフォルトに戻します。1smerge.policy.merge_factor3010

バルク インデックス作成の最適化に関するチュートリアルやメーリング リストのディスカッションは多数ありますが、ここにいくつかの公式ドキュメント リンクを示します。

http://www.elasticsearch.org/guide/reference/index-modules/merge/ http://www.elasticsearch.org/guide/reference/api/admin-indices-update-settings/

JVM のメモリ設定をまだ調整していない場合は、調整する必要があります。Ubuntu 10.04 サーバーを実行している 512 MB の VPS に固有ですが、これらの設定 ( http://pastebin.com/mNUGQCLY ) は正しい方向を示しているはずです。基本的に、起動時に必要な量の RAM を Elasticsearch に割り当てると、JVM メモリ割り当て/GC タイミングを改善できます。

于 2013-08-20T15:58:05.887 に答える