我在不同位置有两个ES节点(在群集中),我想确定我的应用程序使用最近的一个以避免网络延迟。
我已经设置Forced Shard Allocation Awareness来使这些节点中的每个“独立”(包含主碎片或另一个主节点的副本,但绝不包含两者),就像
cluster.routing.allocation.awareness.force.my_attr.values: my_attr_val1, my_attr_val2
cluster.routing.allocation.awareness.attributes: my_attr
现在,我知道可以通过添加到查询Preference中来强制我的查询在特定节点上运行:
_only_nodes:my_attr:my_attr_val1
但是据我所知,如果发生节点故障,它将失败-所以基本上我不想这样做。
我能做的就是设置
_prefer_nodes:my_attr:my_attr_val1
或者什么也不做,让ES来做。问题是- ES是否选择“最好的”(让我们说最近的)节点进行查询,或者只是随机选择一个节点? Elasticsearch如何确定要询问的节点?
我的ES版本是5.5.0
答案 0 :(得分:1)
如果未设置首选项,则5.5中的行为是以循环方式将请求路由到已分配的分片。 ES没有“最近节点”系统。