このページでは、Alibaba Cloud Elasticsearch で使用されるコア用語を定義します。
クラスター
Elasticsearch クラスターは、1 つ以上のノードで構成されます。クラスター内のすべてのノードは連携してデータを保存します。各クラスターには一意の名前が必要です。同じ環境で 2 つのクラスターが同じ名前を共有している場合、不明な例外が発生する可能性があります。
ノード
ノードは、クラスター内のサーバー上で実行されます。ノードはデータを保存し、インデックス作成およびクエリ操作をサポートします。ノードはさまざまなロールを引き受けることができます。
-
データノードはインデックスを保存します。データノードを使用して、ドキュメントの追加、削除、変更、データの検索と集計を行います。
-
専用マスターノードは、クラスターレベルの操作 (インデックスの作成と削除、ノードの追跡、シャードの割り当てなど) を管理します。専用マスターノードの安定性は、クラスターの健全性にとって重要です。デフォルトでは、クラスター内の任意のノードが専用マスターノードとして機能できます。
-
クライアントノードは、データノードからの CPU オーバーヘッドをオフロードし、計算パフォーマンスとクラスターの安定性を向上させます。
インデックス
インデックスは、リレーショナルシステムにおけるデータベースに類似した、類似の特性を持つドキュメントのコレクションです。たとえば、顧客データ、製品カタログデータ、注文データを保存するために、3 つの個別のインデックスを作成できます。
各インデックスは小文字の名前で識別されます。ドキュメントのインデックス作成、クエリ、更新、または削除を行う際は、ドキュメントが属するインデックスの名前を指定します。
タイプ
タイプは、リレーショナルデータベースにおけるテーブルに類似した、インデックス内の論理パーティションです。インデックスには、user タイプや blog タイプなど、異なるタイプのドキュメントを含めることができます。
タイプのサポートは段階的に削除されています。
-
Elasticsearch 5.x — インデックスには複数のタイプのドキュメントを含めることができます。
-
Elasticsearch 6.x — インデックスには 1 つのタイプのドキュメントのみを含めることができます。タイプという概念は非推奨です。
-
Elasticsearch 7.x 以降 — インデックスのタイプは
_docに固定されています。
詳細については、「Elasticsearch documentation on removal of types」をご参照ください。
ドキュメント
ドキュメントは、リレーショナルデータベーステーブルにおける行に類似した、インデックス付け可能な情報の基本単位です。たとえば、ドキュメントは単一の顧客または単一の製品を表す場合があります。各ドキュメントは JSON オブジェクトです。インデックスには無制限の数のドキュメントを含めることができます。
フィールド
フィールドは、リレーショナルデータベーステーブルにおける列に類似した、ドキュメント内の最小単位です。
マッピング
マッピングは、ドキュメントとそのフィールドがどのように保存およびインデックス付けされるかを定義します。これには、フィールド名、フィールドタイプ、使用するトークナイザーが含まれます。マッピングは、リレーショナルデータベーステーブルのスキーマに類似しています。
以下の表は、Elasticsearch の概念がリレーショナルデータベースの概念にどのようにマッピングされるかを示しています。
| Elasticsearch | リレーショナルデータベース |
|---|---|
| index | database |
| type | table |
| document | row |
| field | column |
| mapping | schema |
シャードとレプリカシャード
インデックスは複数のシャードに分割でき、これらは分散検索をサポートするためにノード全体に分散されます。シャードには、プライマリシャードとレプリカシャードの 2 種類があります。
インデックスを作成する際は、プライマリシャードとレプリカシャードの数を指定します。プライマリシャードの数は、インデックス作成後に変更できません。
デフォルトのシャード構成:
-
Elasticsearch 7.0 より前: インデックスごとに 5 つのプライマリシャードと、各プライマリシャードに 1 つのレプリカシャード。
-
Elasticsearch 7.0 以降: インデックスごとに 1 つのプライマリシャードと 1 つのレプリカシャード。
以下の表は、プライマリシャードとレプリカシャードの違いをまとめたものです。
| シャードタイプ | サポートされているリクエスト | 作成後に変更可能か | 備考 |
|---|---|---|---|
| プライマリシャード | クエリとインデックス作成 | いいえ — インデックス作成時に設定されます。「Step 3: Create an index」をご参照ください。 | 各ドキュメントは、正確に 1 つのプライマリシャードに属します。プライマリシャードの数は、インデックスが保持できる最大データ量を決定します。プライマリシャードが増えると、クラスターのパフォーマンスオーバーヘッドが増加します。 |
| レプリカシャード | クエリのみ | はい — いつでも変更できます。「Index templates」をご参照ください。 | レプリカシャードはフォールトトレランスを向上させます。プライマリシャードが失われた場合、レプリカから復元できます。また、クエリ負荷を分散することで検索スループットも向上させます。 |
プライマリシャードまたはレプリカシャードに対してデータをクエリできます。
書き込み操作: クラスターが書き込みリクエストを受信すると、関連するプライマリシャードに操作を適用し、そのシャードのレプリカにデータを複製します。多数のレプリカシャードは、書き込み時のデータ同期負荷を増加させます。
シャード数と各シャードのサイズは、どちらもクラスターの安定性とパフォーマンスに影響します。大規模なパフォーマンス低下を避けるため、デプロイメント前にすべてのインデックスのシャードを計画してください。サイジングのガイダンスについては、「Evaluate specifications and storage capacity」をご参照ください。
ゲートウェイ
ゲートウェイはインデックスのスナップショットを保存します。デフォルトでは、ノードはすべてのインデックスをメモリに保持します。ノードメモリが満杯になると、インデックスはローカルディスクにスピルします。クラスターが再起動すると、ローカルディスクから読み取るのではなく、ゲートウェイスナップショットからインデックスを復元します。これは大幅に高速です。
サポートされているゲートウェイタイプ: ローカルファイルシステム (デフォルト)、分散ファイルシステム、Hadoop 分散ファイルシステム (HDFS)、および Alibaba Cloud Object Storage Service (OSS)。
discovery.zen
discovery.zen は、Elasticsearch で使用される自動ノード検出メカニズムです。Elasticsearch は、ブロードキャストを送信してノードを検出するピアツーピア (P2P) システムです。ノードはマルチキャストおよび P2P プロトコルを使用して通信します。
トランスポート
トランスポートは、Elasticsearch クラスター (またはそのノード) とクライアント間の通信レイヤーです。TCP がデフォルトで使用されます。HTTP over JSON、Thrift、Memcached、ZeroMQ などの追加プロトコルをサポートするには、プラグインを統合します。