ElasticSearch 内部原理之分布式文档搜索

Posted @SmartSi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch 内部原理之分布式文档搜索相关的知识,希望对你有一定的参考价值。

ElasticSearch 版本: 2.x

这个要比基本的创建-读取-更新-删除(CRUD)请求要难一些。CRUD操作是处理的单个文档。这就意味着我们明确的知道集群中的哪个分片存储我们想要的文档。

一个 CRUD 操作只对单个文档进行处理,文档有唯一的组合,由 _index, _type, 和 路由值 (默认是该文档的 _id )组成。这表示我们确切的知道此文档在集群中哪个分片中。

搜索请求是更复杂的执行模型,因为我们不知道哪些文档会与查询匹配,它们可能存在在集群中的任意一个分片中。搜索请求不得不搜索我们关注的一个或多个索引中的每个分片拷贝(主分片或者副本分片),以查看分片中中是否有匹配的文档。

但找到所有匹配到文档只是完成了一半工作.在searchAPI返回一’页’结果之前,来自多个分片的结果必须聚合成一个排序的列表。 因此,搜索需要完成两个阶段,queryfetch

1. Query 阶段

在初始化查询阶段(query phase),查询将广播到索引中的每个分片的拷贝上(主分片或者副本分片)。每个分片在本地执行搜索并建立了匹配文档的优先级队列。

1.1 优先级队列

优先级队列只是一个存有前n个(top-n)匹配文档的有序列表。优先级队列的大小取决于

以上是关于ElasticSearch 内部原理之分布式文档搜索的主要内容,如果未能解决你的问题,请参考以下文章

ElasticSearch Scroll 游标搜索

Es官方文档整理-2.分片内部原理

ElasticSearch探索之路分布式原理:分布式路由存储搜索原理

ElasticSearch探索之路分布式原理:分布式路由存储搜索原理

Elasticsearch学习总结--原理篇

flask-web—— 搜索系统Elasticsearch分布式搜索引擎原理分片与集群IK中文分析器索引与文档Logstash导入数据与查询