ES是大型架构核心,下面我详解ES如何支撑亿级检索@mikechen
ES亿级架构
Elasticsearch 能支撑亿级检索量,不是靠单点性能,而是靠以下四个核心设计。

┌─────────────┐ │ Client │ └──────┬──────┘ │ ┌──────▼──────┐ │ Coordinator │ ← 协调节点(无数据也可) └──────┬──────┘ ┌────────────┼────────────┐ │ │ │ ┌──────▼──────┐┌─────▼──────┐┌─────▼──────┐ │ Data Node A ││ Data Node B ││ Data Node C │ │ Shard 0P ││ Shard 1P ││ Shard 2P │ │ Shard 1R ││ Shard 2R ││ Shard 0R │ └─────────────┘└─────────────┘└─────────────┘
分片(Shard)水平拆分数据,天然横向扩展。
倒排索引 + Segment 不可变结构,保证查询效率。
分布式 Query/FETCH 两阶段执行模型。
多副本 + 协调节点(Coordinator)实现高并发与高可用。
水平拆分数据
首先,通过分片(Shard),把索引水平拆分为多个子索引,使数据天然能够横向扩展。

每个分片作为独立的倒排索引单元,可分布在不同节点上。
新增节点即可接管更多分片,从而线性提升处理能力与存储容量。
比如:当一个索引被拆分为: 10 个分片分布在 5 台机器上时。
一次查询请求,会被分发到这 10 个分片上并行执行,这相当于将检索压力平摊到了 5 台机器的 CPU 和磁盘上。
倒排索引
其次,倒排索引、与不可变的 Segment ,设计确保了高效查询。

倒排索引,提供快速的反向映射以定位文档,Segment 的不可变性简化了并发访问与合并策略。
从而,减少锁竞争并提高 IO 利用率,使查询在海量文档中仍能保持低延迟。
分布式模型
再次,Elasticsearch 采用分布式的两阶段执行模型(Query/FETCH)。

查询阶段,在各分片上并行执行以收集候选文档与评分。
随后集中汇总排序并确定最终命中集合,最后在 FETCH 阶段按需抓取完整文档。
这一模型将计算与数据传输分离,既降低了网络开销,又提升了并行度与准确性。
多副本节点
最后,多副本机制与协调节点(Coordinator)共同保障高并发与高可用性。

副本不仅用于故障恢复,也用于分摊读请求。
协调节点负责将查询分发至相关分片、合并结果并返回客户端,从而实现负载均衡与稳定的请求处理。
综上所述,Elasticsearch 通过分片横向扩展、倒排索引与 Segment 的高效存储。
以及,两阶段分布式执行以及多副本与协调机制,协同支撑起对亿级检索量的可靠服务能力。
mikechen睿哥
10年+一线大厂架构实战经验,就职于阿里、淘宝等一线大厂,操盘多个亿级大厂核心项目。