我有一个包含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是否还有其他考虑因素,因此它不能以其他方式进行计划?
谢谢