Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Elasticsearch クラスタ概説

Elasticsearch クラスタ概説

Node and Cluster

  • ノード
    • 起動した Elasticsearch のインスタンス
    • 普通は1台のサーバに1インスタンス起動するので、 Elasticsearch の起動しているサーバのイメージ
  • クラスタ
    • 相互に接続したノードの集合

Index and Shard

緑の本に詳しく書いてある。

インデックス

  • RDB でいうところのテーブル

シャード

  • インデックスを分割したもの
  • プライマリシャードとレプリカシャードがある
  • プライマリシャードは更新操作を受ける
  • レプリカシャードはプライマリシャードのコピー
  • シャード単位でノード上に配置される

Node

ここに詳しく書いてある。ノードにはいくつかの種類がある。

Master (eligible) node

  • Master node はクラスタ全体の処理(シャードの配置等)を行うノード
  • Master eligible node は master に候補になるノード
  • Master node が死んだときには master eligible node から新たな master が選ばれる

Data node

  • シャードを保管するノード
  • データにまつわる操作 (CRUD, search, etc...) を扱う

Client node

  • Master eligible node でも data node でもないノード
  • 各種リクエストを受けるだけのロードバランサー的な何か

(Tribe node)

小規模なクラスタなら Master eligible node 兼 Data node のノード * n台で構成できる。

Index Settings

ここに詳しく書いてある。

number_of_shards

  • インデックスが持つプライマリシャードの数。
  • インデックス作成時に設定。インデックス作成時以外変更不可。

number_of_replicas

  • プライマリシャードが持つレプリカシャードの数。
  • いつでも変更できる。

設定のポイント

  • スケールアウトしていく場合、 number_of_shards * (1 + number_of_replicas) 以上のノード (data node) にはシャードが配置されず無意味になるので、設定を決めるときに考慮する必要がある。
  • レプリカシャードは自身のプライマリシャードや同じプライマリシャードを持つレプリカシャードと同一ノードには配置されない。

Cluster Health

  • ここに詳しく書いてある。
  • API http://elasticsearch_host/_cluster/health

cluster health status

  • green: すべてのシャードがクラスタ上に配置されている。
  • yellow: プライマリシャードはクラスタ上に配置されているが、配置されていないレプリカシャードが存在している。
  • red: (プライマリもレプリカも)クラスタ上に配置されていないシャードが存在している。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment