原文网址:ElasticSearch--查询数据的流程(原理)_IT利刃出鞘的博客-CSDN博客
简介
说明
本文介绍ES查询数据的流程。
问题引入
要搜索某个单词, 但数据在 5 个分片(Shard)上面, 结果要排序( 按照匹配度进行排名) , 如何得到最后正确的排序呢?
查询流程概述
- 客户端将请求发送到一个协调节点(coordinate node)
- 协调节点将搜索请求发到所有分片(主分片或副本分片)。
- 所有分片基于本分片的内容独立完成搜索, 然后返回符合条件的结果(文档ID和排序值)。
- 协调节点将返回的结果重新排序和排名
- 协调节点根据 doc id 去各个节点上拉取实际的 document 数据,最后返回给客户端。
也就是说,ES的一次搜索,是一次scatter/gather过程(这个跟mapreduce很类似)。