ElasticSearch 内部原理之分布式文档搜索
Posted @SmartSi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch 内部原理之分布式文档搜索相关的知识,希望对你有一定的参考价值。
ElasticSearch 版本: 2.x
这个要比基本的创建-读取-更新-删除(CRUD)请求要难一些。CRUD操作是处理的单个文档。这就意味着我们明确的知道集群中的哪个分片存储我们想要的文档。
一个 CRUD 操作只对单个文档进行处理,文档有唯一的组合,由 _index
, _type
, 和 路由值 (默认是该文档的 _id
)组成。这表示我们确切的知道此文档在集群中哪个分片中。
搜索请求是更复杂的执行模型,因为我们不知道哪些文档会与查询匹配,它们可能存在在集群中的任意一个分片中。搜索请求不得不搜索我们关注的一个或多个索引中的每个分片拷贝(主分片或者副本分片),以查看分片中中是否有匹配的文档。
但找到所有匹配到文档只是完成了一半工作.在search
API返回一’页’结果之前,来自多个分片的结果必须聚合成一个排序的列表。 因此,搜索需要完成两个阶段,query
和 fetch
。
1. Query 阶段
在初始化查询阶段(query phase),查询将广播到索引中的每个分片的拷贝上(主分片或者副本分片)。每个分片在本地执行搜索并建立了匹配文档的优先级队列。
1.1 优先级队列
优先级队列只是一个存有前n个(top-n)匹配文档的有序列表。优先级队列的大小取决于
以上是关于ElasticSearch 内部原理之分布式文档搜索的主要内容,如果未能解决你的问题,请参考以下文章
ElasticSearch探索之路分布式原理:分布式路由存储搜索原理
ElasticSearch探索之路分布式原理:分布式路由存储搜索原理
flask-web—— 搜索系统Elasticsearch分布式搜索引擎原理分片与集群IK中文分析器索引与文档Logstash导入数据与查询