您的位置:首页 > 其它

Elastic Search权威指南 第七章 分布式搜索

2017-08-20 18:33 246 查看

1. 分布式搜索的基本概念

因为当一个CRUD操作发生时,我们会根据一个请求的元数据,_index,_type,_id来判断一个文档属于哪个分片。知道了哪个分片,但是还得搜索这个分片,来查找这个文档。

以上这个任务是找到了文档,接下来还有一个任务,将得到的结果放到一个有序列表中,然后返回给客户端。

以上就是在分布式搜索的两个基本过程:

查询取回

2. 查询



1. 当一个查询请求请求到请求结点时,请求结点会跟查询请求中的from和size,来建立一个长度为from+size的空优先队列。

2. 根据请求中的信息,将请求转发(广播)到所有相关的分片中,分片也会根据请求中的from和size,创建一个长度为from+size的空优先队列,然后在分片中执行查询请求,将请求结果填充到这个有序优先队列中。排序的依据为_score的值。

3. 每个分片返回一个轻量级有序优先队列,只包含document_id和相应的_score值,请求结点将这些数据进行合并排序到自己的优先队列中,这就代表了最终的结果集。

4. 至此,查询结束。

3. 取回

查询阶段已经已经辨别出哪些document是需要返回给客户端的,在取回阶段就要根据_id,向各个分片取回这些document的_source



请求结点根据_id,向相应的分片发送GET请求

分片接收到GET请求后,会enrich这些document,然后返回给请求结点

请求结点搜集完毕后,会将所有数据放到同一个响应中返回给客户端
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  搜索 分布式