假设你有一个100个分片的索引。当一个请求在集群上执行时会发生什么呢?
1. 这个搜索的请求会被发送到一个节点
2. 接收到这个请求的节点,将这个查询广播到这个索引的每个分片上(可能是主分片,也可能是复本分片)
3. 每个分片执行这个搜索查询并返回结果
4. 结果在通道节点上合并、排序并返回给用户
很纳闷为什么要将请求广播到其他分片, 既然默认是以id作为分片键进行hash运算, 那为什么接受请求的节点不直接hash运算得到对应所在分片然后只对正确分片进行请求呢? 还要广播到其他节点?搞不明白为什么要这样, 有哪位老师知道吗?
1. 这个搜索的请求会被发送到一个节点
2. 接收到这个请求的节点,将这个查询广播到这个索引的每个分片上(可能是主分片,也可能是复本分片)
3. 每个分片执行这个搜索查询并返回结果
4. 结果在通道节点上合并、排序并返回给用户
很纳闷为什么要将请求广播到其他分片, 既然默认是以id作为分片键进行hash运算, 那为什么接受请求的节点不直接hash运算得到对应所在分片然后只对正确分片进行请求呢? 还要广播到其他节点?搞不明白为什么要这样, 有哪位老师知道吗?
1 个回复
w_b
赞同来自: cat_zzz