# Вопросы на понимание работы кластера es

**URL:** <https://discuss.elastic.co/t/es/77473>\
**Category:** Вопросы на русском языке\
**Created:** [March 6, 2017, 10:28am UTC](https://discuss.elastic.co/t/es/77473 "2017-03-06T10:28:05Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![aliksbright](https://avatars.discourse-cdn.com/v4/letter/a/c0e974/32.png) [@aliksbright](https://discuss.elastic.co/u/aliksbright)\
**Post date:** [March 6, 2017, 10:28am UTC](https://discuss.elastic.co/t/es/77473/1 "2017-03-06T10:28:05Z")

</div>

Недавно начал разбираться с работой кластера ES (5.2), и возникли вопросы

Как я понял, для каждого шарда есть всегда один работающая мастер нода, которая делает индексацию документа в шард. Каким образом изменения попадают в реплики (это дифф lucene сегментов или они передаются прямо документом и отдельно индексируются на каждой реплике) ?

как происходит операция optimize ? (опять же только на мастере, и как после этого заменяются файлы индекса на репликах, либо же на каждой реплике отдельно)

что происходит при отключения основного мастера, если например на новом мастере версия документа 1, а на репликах вдруг оказалась версия новее, например 2 ? (при этом все реплики с версией документа новее 'node.master=false', то есть не могут быть выбраны новым мастером)

Буду рад ссылкам где почитать, возможно пропустил при изучении вопроса, или где это можно посмотреть в коде

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [March 6, 2017, 7:06pm UTC](https://discuss.elastic.co/t/es/77473/2 "2017-03-06T19:06:27Z")

</div>

> [@aliksbright](#):
>
> Как я понял, для каждого шарда есть всегда один работающая мастер нода, которая делает индексацию документа в шард.

Почти. Для каждой шарды есть праймари и реплики. Праймари может находится где угодно - ей вовсе не обязательно быть на мастер ноде.

> [@aliksbright](#):
>
> (это дифф lucene сегментов или они передаются прямо документом и отдельно индексируются на каждой реплике) ?

Когда как. При нормальном индексировании, каждый документ индексируется отдельно на праймари и потом на все репликах. При перемещении шард и если например нод упал и потом поднялся - путем пересылки отличных сегментов.

> [@aliksbright](#):
>
> как происходит операция optimize ? (опять же только на мастере, и как после этого заменяются файлы индекса на репликах, либо же на каждой реплике отдельно)

Отдельно на праймари и репликах.

> [@aliksbright](#):
>
> что происходит при отключения основного мастера, если например на новом мастере версия документа 1, а на репликах вдруг оказалась версия новее, например 2 ? (при этом все реплики с версией документа новее 'node.master=false', то есть не могут быть выбраны новым мастером)

Как я сказал выше, мастер никакого отношения к процессу индексации не имеет. Он просто назначает где шарды будут находится, создает и удаляет индексы и т.д. Индексация всегда происходит сначала на праймари, потом на всех репликах, после этого клиент получает отзыв означающий, что документ проиндексирован. Если в этом процессе нод с праймари падает, то одна из реплик становится праймари и все остальные с ней синхронизируются путем сравнения сегментов.

> [@aliksbright](#):
>
> Буду рад ссылкам где почитать, возможно пропустил при изучении вопроса, или где это можно посмотреть в коде

Первые две про 2.x, но эта часть в 5.x существенно не изменилась - так что будет полезно ознакомится.

> **[Distributed Document Store | Elasticsearch: The Definitive Guide \[2.x\] | Elastic](https://www.elastic.co/guide/en/elasticsearch/guide/current/distributed-docs.html)**

> **[Life Inside a Cluster | Elasticsearch: The Definitive Guide \[2.x\] | Elastic](https://www.elastic.co/guide/en/elasticsearch/guide/current/distributed-cluster.html)**

> **[Reading and Writing documents | Elasticsearch Guide \[5.2\] | Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/5.2/docs-replication.html)**

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [April 3, 2017, 7:06pm UTC](https://discuss.elastic.co/t/es/77473/3 "2017-04-03T19:06:37Z")

</div>

Closed on April 3, 2017, 7:06pm UTC

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
