6台es机器,有3个分片、5个副本,从head上看,每个节点都有全部的数据:
问题:
1,如果请求到某个节点了,这个节点会有全部数据么??
2,我不太确认,到哪个节点去找,是业务层应用里的TransportClient来控制的,还是会先把请求发到某个节点,由该节点去各个节点拉数据??
问题:
1,如果请求到某个节点了,这个节点会有全部数据么??
2,我不太确认,到哪个节点去找,是业务层应用里的TransportClient来控制的,还是会先把请求发到某个节点,由该节点去各个节点拉数据??
2 个回复
lightClouds917
赞同来自:
bill
赞同来自:
serving any request. Every node knows the location of every document in the cluster
and so can forward requests directly to the required node. In the following examples,
we will send all of our requests to Node 1, which we will refer to as the requesting
node.
我理解有两种类型查询:
1. 一种查询带Document ID,获取每个Document的内容。
那么处理请求的节点可以根据哈希算法计算出该document所在的shard no, 然后从主本和副本中选出一个,找出它所在的节点,把请求转发过去。查询结果会原路返回到请求节点,再返给客户端。
1. 另一种查询不带Document ID,需要分发到所有的分片执行。
那么处理请求的节点可以从所有分片的主本和副本中各选出一个shard,找出所在的节点,把请求转发过去。每个节点的查询结果会原路返回到请求节点,汇总后,再返给客户端。