elasticsearch 如何配置Java RestClient与ElasticCluster对话?,elasticsearch,elasticsearch" /> elasticsearch 如何配置Java RestClient与ElasticCluster对话?,elasticsearch,elasticsearch" />

elasticsearch 如何配置Java RestClient与ElasticCluster对话?

elasticsearch 如何配置Java RestClient与ElasticCluster对话?,elasticsearch,elasticsearch,我正在运行ES v6.3.2。我的集群中有2个主节点和2个数据节点(让我们称它们为M1&M2和D1&D2)。假设它们在以下IP上运行 M1 : 10.20.30.1:9200 M2 : 10.20.30.2:9200 D1 : 10.20.30.3:9200 D2 : 10.20.30.4:9200 我正在使用低级JavaREST客户端与弹性搜索进行通信 在我的本地机器上,我只有一个实例在运行,并且我正在通过(localhot:9200)进行通信 我的问题是,我应该构建4个HttpHost实例

我正在运行ES v6.3.2。我的集群中有2个主节点和2个数据节点(让我们称它们为M1&M2和D1&D2)。假设它们在以下IP上运行

M1 : 10.20.30.1:9200
M2 : 10.20.30.2:9200
D1 : 10.20.30.3:9200
D2 : 10.20.30.4:9200
我正在使用低级JavaREST客户端与弹性搜索进行通信

在我的本地机器上,我只有一个实例在运行,并且我正在通过(localhot:9200)进行通信


我的问题是,我应该构建4个HttpHost实例来与ES群集通信,还是应该将所有4个ES实例放在负载平衡器后面,构建1个HttpHost实例来与它通信?

首先,您不应该直接与主节点通信,让它们管理群集,而不是处理搜索/索引请求。然后,您可以简单地为D*节点使用两个HttpHost实例。使用负载平衡器也可以,尽管您在通信路径中添加了另一个跃点,这可能会导致一些额外的延迟。@Val我刚才尝试过,如果我为我的“D”节点使用2个HttpHost实例,并且在某个点上其中一个节点出现故障,则我的通信失败。我是否需要进行任何配置以确保在这种情况下请求只发送到处于运行状态的节点?您也可以使用嗅探器而不是提供所有节点:保持负载平衡可能是一个好主意,但要注意将负载平衡器服务检查指向该节点上的ES url。因此,如果ES实例发生故障,负载平衡不会将请求重定向到该节点。但是要小心像大脑分裂这样的情况。经过大量调试后,可能很晚才检测到。
HttpHost httpHost1 = new HttpHost("localhot", 9200, "http");