質問: elasticsearchのレプリケーションの挙動について詳しくご存じの方いらっしゃいましたら下記1点についてご教示頂けませんでしょうか? 下図のように、タイミングによっては正常にレプリカされない時があるかと思われるのですが、その場合の救済といいますか対処法みたいなものはありますでしょうか? それとも、elasticsearchの特性としてレプリカは100%かならずデータ保証されているものなのでしょうか? ![画像の説明をここに入力](https://i.stack.imgur.com/ZoOTc.jpg) mysqlで例えるならば、マスターとスレーブで齟齬が出た場合はバイナリログから復旧できるだったり、そもそもレプリケーションを準同期で行っている等の救済処置(対処)。
回答: 僕も人に説明できるほど厳密には知りませんが、Elasticsearchドキュメントのインデックスの章のWrite Consistencyによれば、ノードが落ちた、ネットワークが切れたという状態の時に、repliacas/2 + 1個のシャードがある側が有効となり、かつそこに含まれる全てのアクティブなシャードに書き込みが完了した時点でインデックスが完了となります。 > > To prevent writes from taking place on the "wrong" side of a network partition, by default, index operations only succeed if a quorum (>replicas/2+1) of active shards are available. > > > The index operation only returns after all active shards within the replication group have indexed the document (sync replication). > > > 質問の内容に戻ると、伝播する前に落ちたら2番目の条件からそのインデックスは完了せず、エラーになると思います。