本番環境でのshardとreplica数について

terms aggregationの誤差はsizeおよびshard_sizeの設定により抑制/解消することができます。
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html#_shard_size_3

要するに全documentを集計対象に含めることができれば誤差はなくなります。
number_of_shards:1としてしまうと3ノードのうち1ノードでしか集計をできなくなるので誤差なく集計できるdocument数は逆に小さくなります。誤差を許さないのが重要な要件であれば、資源を無駄なく使うため、number_of_shards:3(もしくは3の倍数)とするのが良いと思います。

本番運用に載せるのであれば、number_of_replicasは1以上にするのが基本です。replicaが1あれば、1ノードの障害に耐えられます。dedicated master nodeを置かない場合、2ノードに障害が起きるとクラスタを保てなくなるため、耐障害性の観点からはnumber_of_replicasを2以上にする動機は小さいです。
replicaを増やすことでreadの性能が上がる場合もあるので、3以上のreplicaが無駄ということはありません。性能試験をしながら調整することになるかと思います。

shardとreplica、毎回悩みます。
結局は「ケースバイケース」で永遠のテーマ的なところありますね。

1 Like