首页 > 解决方案 > 如何初始化 Elasticsearch REST 客户端

问题描述

假设我有一个包含主节点、数据节点和协调节点的集群。当我初始化一个 REST 客户端时,我应该包括以上哪些节点类型?所有节点,只有数据节点,只有协调节点,还是它们的某种组合?

例如:

RestClient restClient = RestClient.builder(
new HttpHost("master-eligible-node-1", 9200, "http"),
new HttpHost("master-eligible-node-2", 9200, "http"),
new HttpHost("master-eligible-node-3", 9200, "http")).build();

或者,

RestClient restClient = RestClient.builder(
new HttpHost("master-eligible-node-1", 9200, "http"),
new HttpHost("master-eligible-node-2", 9200, "http"),
...
new HttpHost("master-eligible-node-n", 9200, "http"),
new HttpHost("data-node-1", 9200, "http"),
new HttpHost("data-node-2", 9200, "http"),
...
new HttpHost("data-node-n", 9200, "http"),
new HttpHost("coord-node-1", 9200, "http"),
new HttpHost("coord-node-2", 9200, "http"),
...
new HttpHost("coord-node-n", 9200, "http")).build();

作为第二部分,是否可以仅将 REST 客户端初始化为协调节点,或仅初始化数据节点?我在想,如果我想隔离查询操作和索引操作,我可能想要这样做。

谢谢!

标签: restelasticsearch

解决方案


经验法则是:

  1. 永远不要直接连接到主节点
  2. 如果您有专用的协调节点,请使用它们
  3. 否则连接到您的数据节点,这些节点本质上也充当协调节点

推荐阅读