- es は near realtime 検索プラットフォーム
- 文章を検索するまでのインデックスを作成する時間がわずか
- cluster は1つもしくは複数からなるノード
- cluster 全体でデータを保持し、フェデレートインデックス付与と検索機能を提供する
- cluster の default name は “elasticsearch”
- 異なるクラスタ環境で同じクラスタ名を使うべきではない
- 意図しないクラスタにノードが追加される可能性があるため
- prefix を付けるなどして対応する
- ノードはクラスタの一部のサーバ
- データの保持や、インデックスの作成、検索機能を提供する
- クラスタのようにランダムな uuid で識別される
- default で “elasticsearch” cluster に参加するようになっている
- 類似した特性をもつ文書の集合
- カスタマーデータを保持している場合の例
- 他のプロダクトカタログのもう1つインデックス
- 注文データの更に別のインデックス
- インデックスは名前によって識別される
- 名前はすべて小文字
- 名前は文書に対しての操作を実行する時に参照される
- 操作の例
- 索引付与
- 検索
- 更新
- 削除
- 操作の例
- document は索引付けできる情報の基本単位
- 単一顧客の document を持っている場合
- 他の単一製品のもう1つの document
- 単一注文の更に別の document
- この document は json で表現される
- インデックスには単一ノードのハードウェア制限を超える可能性のあるデータが格納される可能性がある
- ディスクフルになった単一ノードだけの場合、検索が非常に遅くなる
- この問題を解決するために ES は index を shards と呼ばれる複数のピースに分割する機能がある
- インデックスを作成するときに、シャードの数を単純に指定できる。
- それぞれのシャード自体が完全に機能的で独立した “index”
- それはクラスタ内の任意のノードでホストできる
- シャードが重要な2つの主要な理由
- コンテンツの量を水平に分割、拡大ができる
- シャードにまたがった操作を分散及び並列化できるため、パフォーマンスが向上する
- 障害がいつでも発生する可能性があるネットワークやクラウド環境
- シャードやノードがなんらかの理由でオフラインになったり消えたりした場合
- フェイルオーバーメカニズムが有用で、強く推奨される
- このようなバイのために ES はインデックスのシャードのコピーをする
- これはレプリカシャードであり、レプリカと短く呼ぶ
- レプリケーションが重要な2つの主要な理由
- シャードやノードに障害が発生した場合に備えて HA を提供する
- レプリカシャードはオリジナルや主要なシャードと同じノードに決して割り当てられないようにするのが重要
- 検索容量やスループットをスケールアウトできる
- シャードやノードに障害が発生した場合に備えて HA を提供する
- 各インデックスは複数のシャードに分割できる
- インデックスは 1回以上複製することができる
- 複製すると、各インデックスにプライマリーシャードとレプリカシャードが保持される
- インデックスを作成した後でも動的にレプリカの数を変更できる
- しかし簡単な作業ではないため、事前に計画するのが最適
- default では primary/replica が1つずつ
- 2ノードのクラスタの場合、1つのノードにプライマリ、もう1つレプリカが保持されることを意味している