Elasticsearch 的写入流程(Indexing)是其核心机制之一,理解这个流程对于优化写入性能、保证数据一致性以及排查问题至关重要。 ES 的写入流程可以分为两个层面来理解: 1. 宏观层面(集群与路由):数据如何在节点之间传输。 2. 微观层面(分片与存储):数据如何在底层 Lucene 和磁盘中处理。 --- 一、 宏观层面:集群与路由流程 当客户端发起一个 Index(写入)请求时,流程如下: 1. 客户端请求 (Request) 客户端向集群中的任意一个节点发送写入请求。 接收请求的节点被称为 协调节点 (Coordinating Node)。 2. 路由计算 (Routing) 协调节点负责确定该文档应该存储在哪个分片(Shard)上。路由公式如下: $$shard = hash(routing) \% number\of\primary\shards$$ 默认情况下, 值是文档的 。 计算结果指向一个特定的 主分片 (Primary Shard)。 3. 转发至主分片 (Forwarding) 协调节点将请求转发给持有该主分片的节点。 4. 主分片写入 (P...