简介
这篇文章主要讨论一下 Elasticsearch 数据检索内部流程, 方便大家对数据检索的理解. 如果对 Elasticsearch 的文档写入不了解的同学可以先看一下上一篇文章[从 0 到 1 了解 Elasticsearch 文档写入] .
ES 数据检索流程
GET 获取数据
主要流程如下:
数据检索流程
Search 获取数据
- GET /_search
- {
- "query" : {
- "term" : { "user" : "kimchy" }
- }
- }
协调节向这个索引的所有分片发送 search 请求, 每个分片执行数据检索, 最后协调节点将数据返回给客户端, 核心流程如下:
搜索两阶段: query phase 和 fetch phase, 分别对应倒排数据和正排数据, query phase 返回的是 docIds,fetch phase 就是 Get 操作;
两阶段相应的实现位置:
查询 (Query) 阶段 ---- search.InitialSearchPhase
取回 (Fetch ) 阶段 ---- search.FetchSearchPhase
都继承自 SearchPhase
来源: https://www.qcloud.com/developer/article/1892353