このトピックでは、Alibaba Cloud Elasticsearch に関連する用語を紹介します。
クラスター
Elasticsearch クラスターは、1 つ以上の Elasticsearch ノードで構成されます。クラスター内のすべてのノードは連携してデータを格納します。各クラスターには一意の名前があります。環境内の 2 つのクラスターの名前が同じ場合、不明な例外が発生する可能性があります。
ノード
ノードは、クラスター内のサーバー上で実行されます。ノードは、データを格納し、クラスター内のインデックス作成アクティビティとクエリ アクティビティをサポートするために使用されます。クラスターは 1 つ以上のノードで構成され、ノードは異なるロールを果たすことができます。
データ ノードは、インデックスを格納するために使用されます。データ ノードを使用して、ドキュメントの追加、削除、変更、検索、および集約を行うことができます。
専用マスター ノードは、クラスターに対する操作を実行するために使用されます。専用マスター ノードを使用して、インデックスの作成または削除、ノードの追跡、およびシャードの割り当てを行うことができます。専用マスター ノードの安定性は、クラスターの正常性にとって重要です。デフォルトでは、クラスター内の各ノードは専用マスター ノードとして使用できます。
クライアント ノードは、データ ノードの CPU オーバーヘッドを共有するために使用されます。クライアント ノードは、クラスターの計算パフォーマンスとサービスの安定性を向上させることができます。
インデックス
インデックスとは、類似した特徴を持つドキュメントの集合です。インデックスはリレーショナル データベースに似ています。たとえば、顧客データ、商品カタログ データ、注文データをそれぞれ格納するために 3 つのインデックスを作成できます。ほとんどの場合、識別のために小文字の名前がインデックスに割り当てられます。ドキュメントのインデックス作成、クエリ、更新、または削除を行う場合は、ドキュメントが属するインデックスの名前を指定する必要があります。
タイプ
タイプとは、インデックスの論理クラスまたはパーティションです。タイプはリレーショナル データベースのテーブルに似ています。インデックスには、ユーザー タイプやブログ タイプなど、さまざまなタイプのドキュメントを格納できます。 Elasticsearch V6.X 以降では、インデックスに 1 つのタイプしか作成できません。したがって、Elasticsearch V6.X 以降では、タイプの概念については言及されていません。 Elasticsearch V5.X では、インデックスにさまざまなタイプのドキュメントを格納できます。 Elasticsearch V6.X では、インデックスには 1 つのタイプのドキュメントしか格納できません。 Elasticsearch V7.X では、インデックスのタイプは _doc のみです。詳細については、オープンソースの Elasticsearch ドキュメントをご参照ください。
ドキュメント
ドキュメントとは、インデックスを作成できる基本的な情報単位です。ドキュメントはリレーショナル データベースのテーブルの行に似ています。たとえば、顧客または商品のドキュメントを作成できます。各ドキュメントは JSON オブジェクトです。インデックスに格納されるドキュメントの数に制限はありません。ドキュメントはインデックス化する必要があります。
フィールド
フィールドとは、ドキュメントに含まれる最小単位です。フィールドはリレーショナル データベースのテーブルの列に似ています。
マッピング
マッピングとは、ドキュメントとドキュメントに含まれるフィールドの格納方法とインデックス作成方法を定義するものです。たとえば、マッピングを使用して、フィールド名、フィールド タイプ、および使用するトークナイザーを定義できます。マッピングはリレーショナル データベースのテーブルのスキーマに似ています。
次の表に、Elasticsearch の用語とリレーショナル データベースのマッピングを示します。
Elasticsearch | リレーショナル データベース |
インデックス | データベース |
タイプ | テーブル |
ドキュメント | 行 |
フィールド | 列 |
マッピング | スキーマ |
シャードとレプリカ シャード
インデックスは複数のシャードに分割できます。これらのシャードは、分散検索をサポートするために異なるノードに分散できます。シャードは、プライマリ シャードとレプリカ シャードに分類されます。インデックスを作成するときは、インデックスのプライマリ シャードとレプリカ シャードの数を指定する必要があります。インデックスを作成した後、プライマリ シャードの数を変更することはできません。
レプリカ シャードは、インデックスのプライマリ シャードのコピーです。プライマリ シャードに複数のレプリカ シャードを設定できます。クラスターが書き込み操作の要求を受信すると、クラスターは関連するプライマリ シャードで操作を実行します。操作が完了すると、クラスターは操作に関連するデータをプライマリ シャードのレプリカ シャードにコピーします。プライマリ シャードまたはレプリカ シャードにデータをクエリできます。レプリカ シャードは、クラスターの高可用性と検索中のクラスターの同時実行パフォーマンスを向上させることができます。ただし、クラスター内のインデックスに多数のレプリカ シャードが設定されている場合、書き込み操作中のクラスターのデータ同期負荷が増加します。
Elasticsearch V7.0 より前のバージョンでは、各インデックスはデフォルトで 5 つのプライマリ シャードで構成され、各プライマリ シャードは 1 つのレプリカ シャードで構成されます。 Elasticsearch V7.0 以降では、各インデックスはデフォルトで 1 つのプライマリ シャードと 1 つのレプリカ シャードで構成されます。次の表に、プライマリ シャードとレプリカ シャードの違いを示します。
シャード タイプ | サポートされているリクエスト タイプ | シャードの数を変更できるかどうか | 備考 |
プライマリ シャード | クエリとインデックス作成リクエスト | インデックスのプライマリ シャードの数は変更できません。この数は、インデックスの作成時に指定されます。詳細については、手順 3: インデックスを作成するをご参照ください。 | インデックス内の各ドキュメントは 1 つのプライマリ シャードに属します。プライマリ シャードの数は、インデックスが格納できるデータの最大量を決定します。 重要 プライマリ シャードが多いほど、Elasticsearch クラスターのパフォーマンス オーバーヘッドが増加します。 |
レプリカ シャード | クエリ リクエスト | レプリカ シャードの数はいつでも変更できます。詳細については、インデックス テンプレートをご参照ください。 | レプリカ シャードは検索パフォーマンスにとって重要であり、次の利点があります。
|
シャードの数と各シャードのサイズはどちらも、Elasticsearch クラスターの安定性とパフォーマンスに影響します。 Elasticsearch クラスター内のすべてのインデックスのシャードを適切に計画する必要があります。これにより、ビジネス シナリオを定義することが難しい場合に、多数のシャードがクラスターのパフォーマンスに影響を与えることを防ぎます。詳細については、仕様とストレージ容量を評価するをご参照ください。
ゲートウェイ
ゲートウェイは、インデックスのスナップショットを格納するために使用されます。デフォルトでは、ノードはそのメモリにすべてのインデックスを格納します。ノード メモリがいっぱいになると、ノードはインデックスをローカル ディスクに格納します。 Elasticsearch クラスターが再起動されると、そのインデックスはゲートウェイに格納されているスナップショットから復元されます。スナップショットからのインデックスの復元は、ローカル ディスクからのインデックスの読み取りよりも高速です。 Elasticsearch は、ローカル ファイル システム、分散ファイル システム、Hadoop Distributed File System (HDFS)、Alibaba Cloud Object Storage Service (OSS) など、複数のタイプのゲートウェイをサポートしています。デフォルトでは、ローカル ファイル システムがゲートウェイとして使用されます。
discovery.zen
discovery.zen は、自動ノード検出メカニズムです。 Elasticsearch は、ノードを検出するためにブロードキャストを送信するピアツーピア (P2P) システムです。ノードは、マルチキャストと P2P テクノロジーを使用して相互に通信します。
トランスポート
トランスポートとは、Elasticsearch クラスターまたはクラスター内のノードがクライアントと通信するために使用される方法です。デフォルトでは、通信に TCP が使用されます。 HTTP over JSON、Thrift、Memcached、ZeroMQ などの他のプロトコルを使用するために、プラグインを Elasticsearch クラスターに統合できます。