Elasticsearch如何计划查询分片

时间:2018-11-04 02:22:32

标签: elasticsearch

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

谢谢

0 个答案:

没有答案