はじめに
Elasticsearchの用語や概念が幾分わかりにくくて個人的によく混乱するので、簡単にまとめてみました。
物理的なインデックス構成要素
クラスタ(Cluster)
n個のノードから構成されるノードの集合体、およびそれを構成するサーバー群のこと。設定ファイルにあるcluster.name
が同じなら同一クラスタと判定される。
ノード(Node)
Elasticsearchのプロセス単位にある実体(インスタンス)。基本的にはノード数=サーバ数となる。AWSがサポートしているAmazon Elasticsearch Service(Amazon ES)でもノード数=インスタンス数となっている。複数のサーバ群をクラスタ、個々のサーバー(ここでいうインスタンス)をノードという。
シャード(Shared)
多くのデータを処理する際、ノードのメモリ等が足りなくなる場合がある。その場合、シャードがインデックス(※後述)を分割して複数のサーバーに格納することでデータ処理を分散できる。
プライマリーシャード(Primary Shared)
インデックスの書き込みと参照処理で使用される。デフォルトでは5つのプライマリーシャードが作られる。
レプリカシャード(Replica Shared)
シャードのコピー。1シャードにつき1つのレプリカシャードを保持。プライマリーシャードが消えてしまった場合、該当のレプリカシャードが昇格する。同一プロセス上に同一シャードのレプリカとプライマリが乗らないようになっている
論理的なインデックス構成要素
インデックス(Index)
データを保存する場所。RDBでいうところのデータベースに相当。n個のシャードから構成され、シャード単位でノードに配置することで分散可能になる。
タイプ(Type)
RDBでいうところのテーブルに相当。
ドキュメント(Document)
RDBでいうところのレコードに相当。
フィールド(Field)
RDBでいうところのカラムに相当。