Как работает график эластичного поиска для запроса - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть кластер с 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 какие-либо другие соображения, чтобы он не мог планировать другим способом?

Спасибо,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...