原文地址: https://www.elastic.co/guide/cn/elasticsearch/guide/current/_fetch_phase.html, 版权归 www.elastic.co 所有
英文版地址: https://www.elastic.co/guide/en/elasticsearch/guide/current/_fetch_phase.html
英文版地址: https://www.elastic.co/guide/en/elasticsearch/guide/current/_fetch_phase.html
请注意:
本书基于 Elasticsearch 2.x 版本,有些内容可能已经过时。
本书基于 Elasticsearch 2.x 版本,有些内容可能已经过时。
取回阶段edit
查询阶段标识哪些文档满足搜索请求,但是我们仍然需要取回这些文档。这是取回阶段的任务, 正如 Figure 15, “分布式搜索的取回阶段” 所展示的。
Figure 15. 分布式搜索的取回阶段
分布式阶段由以下步骤构成:
-
协调节点辨别出哪些文档需要被取回并向相关的分片提交多个
GET
请求。 - 每个分片加载并 丰富 文档,如果有需要的话,接着返回文档给协调节点。
- 一旦所有的文档都被取回了,协调节点返回结果给客户端。
协调节点首先决定哪些文档 确实 需要被取回。例如,如果我们的查询指定了 { "from": 90, "size": 10 }
,最初的90个结果会被丢弃,只有从第91个开始的10个结果需要被取回。这些文档可能来自和最初搜索请求有关的一个、多个甚至全部分片。
协调节点给持有相关文档的每个分片创建一个 multi-get request ,并发送请求给同样处理查询阶段的分片副本。
分片加载文档体-- _source
字段—如果有需要,用元数据和 search snippet highlighting 丰富结果文档。
一旦协调节点接收到所有的结果文档,它就组装这些结果为单个响应返回给客户端。