Elasticsearch如何确定要查询的集群中的哪个节点

时间:2018-10-29 16:28:37

标签: elasticsearch elasticsearch-5

我在不同位置有两个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

1 个答案:

答案 0 :(得分:1)

如果未设置首选项,则5.5中的行为是以循环方式将请求路由到已分配的分片。 ES没有“最近节点”系统。