共计 573 个字符,预计需要花费 2 分钟才能阅读完成。
写入过程
(1)申请打到的节点叫做协调节点,协调节点依据特定的路由算法将文档进行路由,行将申请转发到指定的节点(路由算法:hash(doc_id) % num_primary_shard)
(2)节点的主分片 primary shard 解决申请,并将数据同步到正本分片 replica shard
(3)协调节点发现主分片和所有的正本分片写完之后,再返回客户端后果
读取过程
(1)申请打到的节点叫做协调节点,协调节点会依据文档 id 进行 hash,判断文档在哪个节点,而后依据随机算法,从相应节点的主分片和副本分片中随机抉择一个进行查问
(2)承受申请的分片将后果返回协调节点,协调节点在返回数据给客户端
查问过程
多 shard 搜寻过程别离两局部,一是在多个 shard 中查问合乎的文档,二是从多个 shard 中获取数据
1. 查问阶段
当申请达到某个节点后,该节点就是以后申请的协调节点。协调节点首先会创立一个 from + size 的空优先队列,
- 向相干的 shard 发送查问申请
- 每个 shard 也会在本地创立一个 from + size 的空优先队列,而后查问合乎的文档,再将后果返回协调节点,但后果中只蕴含文档 id 和排序值
- 协调节点合并其余分片返回的查问后果
2. 获取数据阶段
- 协调节点分别哪些文档须要取回,并向相干分片发送多个 GET 申请获取数据
- 分片加载并丰盛文档后返回
- 协调节点合并后果,而后返回给客户端
正文完
发表至: elasticsearch
2021-07-14