我正在阅读弹性文档,并在以下link。
在第1点和第2点,它说“请求转到节点1.节点1发现该文档属于节点0。”
因为,默认路由是在文档的_id上完成的,那么为什么请求本身不会出现在节点0上(基于默认路由)? 为什么请求进入节点1(必须找出文档在节点0上)?
如果请求直接落在docuemnt所属的节点上,那么效率会更高,然后此节点应该已经完成负载平衡(如果需要,可以将请求移动到副本分片)。
答案 0 :(得分:0)
你是对的。在第一次观察时,发生了无用的重新路由。但是,为了防止热点,默认情况下,请求以循环方式路由到三个分片中的任何一个。
想象一下,您只使用该客户端连接到其中一个群集节点,然后您始终只查询该节点,可能未充分利用其他节点。这就是默认情况下循环的原因。
但是,您可以通过将preference参数设置为_local