我想知道在一个多节点的Elasticsearch集群(3个节点)上,我们可以向哪个节点发送curl调用来获取一些结果(通过运行查询)?
如果我们可以使用任何节点IP,最佳做法是什么?例如,如果我使用来自“node 1,node 2,and node 3"的node 1的URL,假设node 1发生故障,我必须手动将查询URL更新为“node 2 or node 3”,这是他们的方式,这样我就可以有一个集中的URL,它会自动完成。
我是否必须使用Nginx或负载平衡器手动执行此操作,或者ElasticSearch本身存在一些问题
1条答案
按热度按时间xggvc2p61#
尽管在ES中,如果您将请求发送到属于有效ES集群的任何节点,它将在内部路由请求并向您提供结果。
但是你不应该直接使用节点ip来和Elasticsearch通信,原因很明显,你已经提到了其中一个。你可以使用负载均衡器,ngnix或者DNS作为你的Elasticsearch集群。
但如果你是以编程方式访问它,你也不需要这样做,而创建Elasticsearch客户端,你可以在Elasticsearch客户端中指定所有节点ip,这样即使一些节点关闭,你的请求也不会失败。
正如你所看到的,我创建了我的Elasticsearch客户端(与Elasticsearch 8.5一起工作),有两个Elasticsearch主机。