ElasticSearch(七)-路由
参考文献
路由
-
环境
1
2
3
4
5
6
7
8
9
10
11集群元信息
Cluster-name:local-es
Nodes:
node1 192.168.0.1 master
node2 192.168.0.2
node3 192.168.0.3
Indics:
s0:
shard0:
primay: 192.168.0.1
rep:192.168.0.3 -
创建索引的流程
- 请求node3创建索引
- node3请求转发给master节点
- 选择节点存放分片、副本,记录元信息
- 通知给参与存放索引分片、副本的节点从节点,创建分片、副本
- 参与节点向主节点反馈结果
- 等待时间到了,master向node3反馈结果信息,node3响应请求。
- 主节点将元信息广播给所有从节点。
-
索引文档流程
- node2计算文档的路由值得到文档存放的分片(假定路由选定的是分片0)。
- 将文档转发给分片0的主分片节点 node1。
- node1索引文档,同步给副本节点node3索引文档。
- node1向node2反馈结果
- node2作出响应
-
搜索
- node2解析查询。
- node2将查询发给索引s1的分片/副本(R1,R2,R0)节点
- 各节点执行查询,将结果发给Node2
- node2合并结果,作出响应。
文档如何路由
- 决定文档存放到哪个分片上就是文档路由。ES中通过下面的计算得到每个文档的存放分片:
shard = hash(routing) % number_of_primary_shards
- routing 是用来进行hash计算的路由值,默认是使用文档id值。我们可以在索引文档时通过routing参数指定别的路由值,在索引、删除、更新、查询中都可以使用routing参数(可多值)指定操作的分片。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 HoleLin's Blog!