ESクラスタの動作原理

ルーティング

ときあなたは、インデックス別のマスタスライスに格納された文書を、。どのようにElasticsearchそれをスライスに属する文書知っていますか?新しいドキュメントを作成する場合、どのようにそれは上のスライス1または2つのスライスに格納する必要があります知っているのですか?
  我々は将来的にドキュメントを取得したいので、プロセスは、ランダムではありません。
 
アルゴリズムは、決定しました:
  シャード=ハッシュ(ルーティング)%のnumber_of_primary_shards
  値をルーティングすることはデフォルトであるが、_idカスタマイズすることができる任意の文字列です。
 
なぜインデックスを作成する際に、一次断片の数だけ定義することができるされており、変更することができないのですか?
  将来の主要なフラグメンテーション変化の数は、以前のすべてのルーティング値が無効になった場合、文書が見つかりされることはありません。
すべての文書のAPIは(取得、インデックス、削除、バルク、更新、MGET)それはスライスを定義するドキュメントからのマッピングを使用して、ルーティングパラメータを受け取ります。例えば、同じ個々のドキュメントに属し - - 同じスライスに格納されているカスタムルーティング値は、すべての関連文書があることを保証することができます。
 
操作データノードのワークフロー
各ノードは、すべての要求を処理する能力を持っています。各ノードは、ドキュメント内の場所の任意のノードを知っているので、所望のノードに要求を転送することができます。
新しい、インデックス作成と削除の要求が書かれている(書き込み)動作、彼らは成功し、マスタースライススライスに関連する複製にコピーするために完了する必要があります。
  1.新しいノード1、インデックス、または削除要求にクライアントに送信します。
  2.ノード1は、文書_idスライス0を決定するためにドキュメントに属するノード。それはノード3へ要求を転送し、マスタ・スライスのスライス0は、ノード上に配置されています。
  マスタースライス3.ノード3つの行う要求が成功すると、それは、ノード1および複製のノード2上に位置する適切なノードに要求を転送します。すべてのノードがレポートの成功を複製する場合は、要求元ノードにノード3レポートの成功には、ノードを要求して、クライアントに報告します。
 
レプリケーション
  デフォルト値は同期がコピーされます。これは、断片化の成功応答が返された後に得られた一次コピーの断片が発生します。
  あなたは非同期にレプリケーションを設定した場合、マスタースライスの要求が実行された後、クライアントに返されます。それはまだ、ノードをコピーするための要求を転送しますが、ノードの成功を複製知ることができません。
  このオプション上記の推奨されていません。デフォルトの同期コピー許可Elasticsearch力のフィードバック送信。なぜならレプリケーションの非同期は、他のフラグメント準備Elasticsearch過負荷を待たずに、あまりにも多くのリクエストを送信することができます。
 
検索プロセス
断片は、メイン文書または検索された断片のコピーであることができます。
ノード1 get要求1.クライアントに送信します。
ノード2ノード1は、文書を使用して文書が_idスライス0に属して決定されます。スライス0は、コピーの3つのノードに対応するスライスを持っています。この場合、ノード2に要求を転送します。
ノード1に3.ノード2戻る文書(ドキュメント)をクライアントに返します。
   リード要求に対して、負荷を分散するために、要求ノードは、各スライスのさまざまなオプションを要求する - それのコピーサイクルのすべての部分。
   これは、インデックス付き文書がすでに複製断片に同期する時間がなかった主なオンチップ部門に存在している可能性があります。その後、文書を報告しますフラグメンテーションが見つからない場合、コピー、メインの断片は、文書に成功したリターンとなります。インデックスは、ユーザの要求に返されると成功し、メインと断片化で文書やコピー用紙が用意されています。
 
 

おすすめ

転載: www.cnblogs.com/sx66/p/11886955.html