ElasticSearchデータストア

1486 ワード

Esクラスタデータストレージ
  • は、文書を異なるコンテナまたはスライスに割り当てる、文書は、1つまたは複数のノードに格納することができる
  • .
  • は、これらのスライスをクラスタノードによって均等に割り当てることで、インデックスおよび検索プロセスの負荷均等化
  • を行う.
  • 各スライスは、ハードウェア障害によるデータ損失を防止するためにデータ冗長性をサポートするために複製される
  • .
  • は、クラスタ内のいずれかのノードの要求を、関連データが格納ノード
  • にルーティングする.
  • クラスタ拡張時に新しいノードをシームレスに統合し、クラスタ外ノードから
  • を回復するためにスライスを再割り当てする.
    Esクラスタの作成時にデフォルトで初期化されるスライスは5つであり、インタフェースを呼び出してスライス数を設定することができ、1つのスライスはLuceneインスタンスに対応し、それ自体が完全な検索エンジンであり、ドキュメントはスライス内に格納され、インデックスされているが、アプリケーションはスライスとインタラクティブではなくインデックスに直接接続されている.
    Elasticsearchは,スライスを用いてクラスタ内の各所にデータを配布する.スライスはデータのコンテナであり,ドキュメントはスライス内に保存され,スライスはクラスタ内の各ノードに割り当てられる.クラスタの規模が拡大または縮小されると、Elasticsearchは各ノードに自動的にスライスを移行し、データがクラスタに均一に分布するようにします.
    1つのスライスは、プライマリスライスまたはレプリカスライスであってもよい.インデックス内のいずれのドキュメントも1つのプライマリ・スライスに属するため、プライマリ・スライスの数はインデックスが保存できる最大データ量を決定します.
    ドキュメントをスライスにルーティングするルーティングルール.
    shard = hash(routing) % number_of_primary_shards

    routingは可変値であり、デフォルトはドキュメントの_idは、カスタム値に設定することもできます.routingはhash関数で数値を生成し、number_で除算します.of_primary_shards(主成分の数)後に残数を得る.この分布は0からnumber_of_primary_shards-1間の余剰数は、私たちが求めているドキュメントがスライスされている場所です.
    これは、インデックスを作成するときにプライマリ・スライスの数を決定し、この数を変更しない理由を説明します.数が変化すると、以前のルーティングの値はすべて無効になり、ドキュメントも見つかりません.
    スライスを設定した後に保存されるドキュメントは、一定のアルゴリズムに従ってドキュメントをスライス内に保存し、スライスの下に複数のコピーが存在し、複数のコピーが冗長に存在します.
    次にドキュメントをクエリーすると、クラスタmasterは、以上のアルゴリズムとクエリードキュメントのIDに基づいて、ドキュメントを保存するスライスにナビゲートし、スライスしてからその下のコピー内のドキュメントをクエリーしてmasterに戻り、最後にクライアント呼び出し者に戻ります.