문서를 인덱싱 하면 단일 기본 샤드에 저장된다.
샤드 = 해시(라우팅) % number_of_primary_shards
라우팅 문자열은 해싱 함수를 통해 전달되어 숫자를 생성,
이를 기본 샤드 수로 나누어 나머지를 반환.

동일한 샤드의 복사본은 동일한 노드에 할당되지 않으므로 클러스터 위와 같다.
두개의 레플리카 샤드와 2개의 프라이머리 샤드
클러스터의 모든 노드에 요청을 보낼 수 있습니다. 모든 노드는 모든 요청을 완벽하게 처리할 수 있습니다. 모든 노드는 클러스터에 있는 모든 문서의 위치를 알고 있으므로 요청을 필요한 노드에 직접 전달할 수 있습니다. 다음 예에서는 모든 요청을 코디네이팅 노드 라고 하는 노드 1로 보냅니다 .

생성, 인덱싱 및 삭제 요청은 쓰기 작업 위와 같이 연결된 복제본 샤드에 복사하기 전에 기본 샤드에서 성공적으로 완료되어야 합니다 .
클라이언트는 생성, 색인 또는 삭제 요청을 에 보냅니다 Node 1
노드는 문서 _id를 사용하여 문서가 shard 에 속하는지 확인합니다. 0
프라이머리 샤드 0이 할당되어 있는 node3으로 요청을 전달한다.
Node 3 프라이머리 샤드에서 요청을 실행합니다.
노드 1과 노드 2의 복제본 샤드에 요청을 병렬로 전달합니다. 모든 복제본 샤드가 성공을 보고하면 노드 3이 조정 노드에 성공을 보고하고 클라이언트에 성공을 보고합니다.

문서를 검색하는 단계는 다음과 같다.
읽기 요청의 경우 코디네이터 노드는 로드 균형을 맞추기 위해 모든 요청에 대해 다른 샤드 복사본을 선택합니다. 모든 샤드 복사본을 통해 라운드 로빈됩니다.
문서가 인덱싱되는 동안 문서가 이미 프라이머리 샤드에 있지만 복제본 샤드에는 아직 복사되지 않았을 수 있습니다. 이 경우 복제본은 문서가 존재하지 않는다고 보고할 수 있지만 기본은 문서를 성공적으로 반환했을 것입니다. 인덱싱 요청이 사용자에게 성공을 반환하면 기본 및 모든 복제본 샤드에서 문서를 사용할 수 있습니다.

문서기반 업데이트
기본 샤드는 복제본 샤드에 변경 사항을 전달할 때 업데이트 요청을 전달하지 않습니다. 대신 전체 문서의 새 버전을 전달합니다. 이러한 변경 사항은 복제본 샤드에 비동기식으로 전달되며 전송된 순서대로 도착한다는 보장은 없습니다. Elasticsearch가 변경 사항만 전달한 경우 변경 사항이 잘못된 순서로 적용되어 문서가 손상될 수 있습니다.
The bulk API allows the execution of multiple create, index, delete, and update requests within a single bulk request.
대량 API를 사용하면 단일 대량 요청 내에서 여러 작성, 색인, 삭제 및 업데이트 요청을 실행할 수 있습니다.

출처
https://www.elastic.co/guide/en/elasticsearch/guide/current/distributed-docs.html