У меня есть кластер с 11 узлами и таблица с 16 шардами. Каждый осколок имеет одну реплику. Распределение осколков происходит следующим образом. Я добавил число с 'для реплики. Например, 4 является основным узлом, а 4 'является репликой 4.
node shards</br>
0 5' 11' 12'</br>
1 5 13 14'</br>
2 1' 4'</br>
3 6 7 8'</br>
4 10' 14 15'</br>
5 3' 6' 11</br>
6 2 9' 12</br>
7 0' 1 3</br>
8 0 . 2' . 8</br>
9 4 . 7' . 13'</br>
10 9 . 10 . 15</br>
Для запроса API профиля показывает, что он всегда выбирает между двумя планами запроса, как показано ниже:
node shards</br>
1 5 14'</br>
3 6 7</br>
5 11</br>
6 9' 12</br>
7 1 3</br>
8 0 . 2' . 8</br>
9 4 . 13'</br>
10 10 . 15</br>
node shards
0 5' 12'</br>
1 13</br>
2 1' 4'</br>
3 8'</br>
4 14</br>
5 3' 6' 11</br>
7 0' </br>
8 2' </br>
9 7' </br>
10 9 . 10 . 15</br>
Мы видим, что в первом расписании копии 0, 2 и 4 выполняются на узле 8, а во втором расписании также есть узлы, работающие по 3 копии.
На самом деле существует расписание, которое гарантирует, что каждый узел имеет максимум 2 шарда:
node shards</br>
1 5 14'</br>
2 1' 4'</br>
3 7 </br>
4 15'</br>
5 6 . 11</br>
6 9' 12</br>
7 0' 3</br>
8 2' 8</br>
9 4 . 13'</br>
10 10</br>
Почему ES не выбирает последнее расписание для уменьшения количества копий, запущенных на узле?
Есть ли у ES какие-либо другие соображения, чтобы он не мог планировать другим способом?
Спасибо,