number_of_shards
この数で1つのindexが複数のshardに分割される
デフォルト値は1
あとから変更不可能
index template作成後〜データを投入する前までに設定する
data nodeが3つあってもnumber_of_shardsが1だと単一のdata nodeにすべてのデータが乗る
他2nodeはreplicationになるだけ
number_of_shardsを大きくしすぎても負荷が高まる
index処理、検索処理はshard単位で行われる
各nodeに小さなshardが大量にある状態はよくない
経験上、ログと時系列データでは、1 shardは10GBから50GB程度にするべき
あらゆるshardで10〜50GB程度が適切なのかと思っていたが、よく読んだらログと時系列データだけと書いてあったshokai.icon
data nodeの数の倍数するべきらしいshokai.icon
yuiseki.iconが調査していて、知った
倍数になってないと、shardの配置が特定のnodeに偏ってしまう
データ配置が偏ると、CPUコストも偏る
例
shard数が偏る
node A = 1 shard 30GB
node B = 2 shards 60GB
という状態で
検索のリクエストが来る
node Aは30GBから検索する
node Bは60GBから検索する事になる
よく考えたらそりゃそうだよなという感じshokai.icon