Я спробую пояснити справжнім прикладом, оскільки відповіді та відповіді, які ви отримали, не допомагають вам.
Завантажуючи еластичний пошук і запускаючи його, ви створюєте вузол еластичного пошуку, який намагається приєднатись до існуючого кластеру, якщо він наявний, або створює новий. Скажімо, ви створили свій власний новий кластер з одним вузлом, тим, що ви тільки що запустили. У нас немає даних, тому нам потрібно створити індекс.
Коли ви створюєте індекс (індекс автоматично створюється і при індексації першого документа), ви можете визначити, з яких частинок буде складено. Якщо ви не вкажете номер, у нього буде за замовчуванням кількість фрагментів: 5 праймерів. Що це означає?
Це означає, що еластичний пошук створить 5 первинних фрагментів, які містять ваші дані:
____ ____ ____ ____ ____
| 1 | | 2 | | 3 | | 4 | | 5 |
|____| |____| |____| |____| |____|
Кожен раз, коли ви індексуєте документ, еластичний пошук вирішить, який основний фрагмент повинен містити цей документ, і індексуватиме його там. Первинні осколки не є копією даних, це дані! Наявність декількох черепок допомагає скористатися паралельною обробкою на одній машині, але вся справа в тому, що якщо ми запустимо інший еластичний екземпляр на тому самому кластері, осколки будуть розподілятися рівномірно по кластеру.
Тоді вузол 1 вмістить, наприклад, лише три черепки:
____ ____ ____
| 1 | | 2 | | 3 |
|____| |____| |____|
Оскільки решту двох черепків переміщено до нещодавно запущеного вузла:
____ ____
| 4 | | 5 |
|____| |____|
Чому це відбувається? Оскільки elastsesearch - це розподілена пошукова система, і таким чином ви можете використовувати декілька вузлів / машин для управління великими обсягами даних.
Кожен індекс еластичного дослідження складається щонайменше з одного первинного фрагмента, оскільки там зберігаються дані. Кожен осколок витрачається, однак, тому якщо у вас є один вузол і немає передбачуваного зростання, просто дотримуйтесь одного основного осколка.
Ще один тип осколка - це репліка. За замовчуванням - 1, що означає, що кожен основний фрагмент буде скопійований в інший фрагмент, який буде містити ті самі дані. Репліки використовуються для підвищення продуктивності пошуку та для відмови. Штрих реплік ніколи не буде виділятися на тому самому вузлі, де є пов'язаний первинний (це було б майже як розміщення резервної копії на той же диск, що і вихідні дані).
Повернувшись до нашого прикладу, з 1 реплікою у нас буде весь індекс на кожному вузлі, оскільки по першому вузлу буде виділено 2 реплік-фрагменти, і вони будуть містити точно такі ж дані, як і первинні черепки на другому вузлі:
____ ____ ____ ____ ____
| 1 | | 2 | | 3 | | 4R | | 5R |
|____| |____| |____| |____| |____|
Те ж саме для другого вузла, який буде містити копію первинних фрагментів на першому вузлі:
____ ____ ____ ____ ____
| 1R | | 2R | | 3R | | 4 | | 5 |
|____| |____| |____| |____| |____|
При такому налаштуванні, якщо вузол опускається, у вас ще є весь індекс. Осколки репліку автоматично стануть праймерізмом, і кластер буде працювати належним чином, незважаючи на вихід з ладу вузла, як це:
____ ____ ____ ____ ____
| 1 | | 2 | | 3 | | 4 | | 5 |
|____| |____| |____| |____| |____|
Оскільки у вас є "number_of_replicas":1, репліки більше не можна призначати, оскільки вони ніколи не виділяються на тому ж вузлі, де є їх основним. Ось чому у вас буде 5 непризначених фрагментів, репліки та статус кластера YELLOWзамість GREEN. Без втрати даних, але це може бути краще, оскільки деякі фрагменти не можуть бути призначені.
Як тільки вузол, що залишився, буде створено резервну копію, він знову приєднається до кластеру, і репліки будуть призначені знову. Існуючий фрагмент на другому вузлі може бути завантажений, але їх потрібно синхронізувати з іншими фрагментами, оскільки операції запису, швидше за все, відбувалися під час роботи вузла. Після закінчення цієї операції стане статусом кластера GREEN.
Сподіваюсь, це пояснить вам речі.