30
- 1月
2017
No Comments
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