Elasticsearch的搜索流程描述
Elasticsearch 的搜索流程是一个结合 分布式查询、分片协同、结果聚合和排序 的复杂过程,其设计目标是在海量数据中实现快速检索和精准结果返回。以下是搜索流程的详细解析:
一、搜索流程总览
Elasticsearch 搜索流程示意图
(图源:Elastic 官方文档)
二、详细步骤解析
- 客户端请求路由
- 请求入口:客户端发送搜索请求(如 search API)到集群中的任意节点,该节点作为 协调节点(Coordinating Node),负责接收请求、分发查询并聚合结果。
- 确定目标分片:
- 对于 query then fetch 模式(默认),协调节点需要先将查询请求发送到 所有相关分片(主分片或副本分片,由集群自动负载均衡)。
- 若搜索涉及多个索引,需遍历每个索引的所有分片。
- Query Phase(查询阶段)
协调节点将查询请求并行发送到所有目标分片,各分片执行以下操作:
- 检索倒排索引:
- 分片通过 Lucene 的倒排索引快速定位匹配文档的 doc ID ,并计算文档与查询的相关性得分( _