Elasticsearch 的读取操作主要分为两种场景,流程有很大的区别: 1. 根据 ID 查询文档 (Get by ID):这是最简单的“读取”操作,类似于数据库的主键查询。 2. 搜索文档 (Search):这是复杂的查询操作(如关键词搜索、聚合),涉及“Query Then Fetch”两个阶段。 以下是这两种流程的详细解析。 --- 一、 根据 ID 读取文档 (Get Workflow) 当你发送 请求时,Elasticsearch 可以通过哈希计算直接定位到文档所在的分片。 核心公式: $$shard = hash(routing) \% number\of\primary\shards$$ (默认情况下,routing 就是文档的 ID) 详细步骤: 1. 客户端请求:客户端向集群中的任意节点发送读取请求。接收请求的这个节点成为协调节点 (Coordinating Node)。 2. 路由计算:协调节点根据文档 ID(或指定的 routing 值)进行哈希计算,确定该文档属于哪个主分片 (Primary Shard)。 3. 负载均衡: 协调节点查看集群状态,找到...