30
- 1月
2017
Posted By : boomin
elasticsearchのshardとreplica
Advertisements

elasticsearchのパフォーマンス

elasticsearchのパフォーマンスが悪く、なんでかなー・・・といろいろ調べていたら、
shardとreplicaがいい感じに設定されていなかったのが一つの原因であった。

そこで、設定方法のメモ。

 

shard

elasticsearchのshardはluceneの1インスタンス。
shardを増やせば並列数があがって1ノードのパフォーマンスがあがるかもしれない。

デフォルト値は5だが、設定によって変えることもできる。
インデックスごとにshardsの数を設定することもできる。

ただし、shardの数はインデックス生成後に変更できない。

 

Advertisements

replica

一方のreplicaはノードのコピー。マスターノードを除いたクラスタ内でのコピー数。
ノードを増やして負荷を分散したり、ノードがダウンした際に代わりに頑張らせたりする。

デフォルトは1になっているので、何も考えずにelasticsearchを立ち上げると、
cluster health: yellowになる。(1ノードのみだとレプリカが配置されないため)

shardと同じようにreplica数もインデックスごとに設定できる。こちらは後から変更できる。

 

設定方法

mapping定義で、以下のようにAPIを叩いて設定する。
version4以前はconf/elasticsearch.ymlなどにデフォルト値を定義できたが、version5以降はconf/elasticsearch.ymlに書いておくと
/${index}/_settings APIを使えと怒られます。

ここでは、【twitter】というindexに対する設定。公式にあるやつそのまま。

PUT twitter
{
  "settings" : {
    "index" : {
      "number_of_shards" : 3,
      "number_of_replicas" : 2
    }
  }
}

 

まとめ

なるほど、という感じ。
Index Settingsの公式はこちら

Advertisements
Category:

コメントを残す