elasticsearch,Rest,elasticsearch" /> elasticsearch,Rest,elasticsearch" />

如何初始化Elasticsearch REST客户端

如何初始化Elasticsearch REST客户端,rest,elasticsearch,Rest,elasticsearch,假设我有一个包含主合格节点、数据节点和协调节点的集群。初始化REST客户机时,应包括上述哪些节点类型?所有节点,仅数据节点,仅协调节点,或其组合 例如: RestClient restClient = RestClient.builder( new HttpHost("master-eligible-node-1", 9200, "http"), new HttpHost("master-eligible-node-2", 9200, "http"), new HttpHost("master-

假设我有一个包含主合格节点、数据节点和协调节点的集群。初始化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();
或者

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

谢谢

经验法则是:

  • 从不直接连接到符合条件的主节点
  • 如果您有专用的协调节点,请使用它们
  • 否则,连接到数据节点,数据节点本质上也充当协调节点

  • 您可以为不同的操作使用不同的rest客户端。如果您知道某些节点仅用于读取,则将其添加到
    读取rest客户端
    ,如果某些节点用于写入,则添加到另一个rest客户端。如果某些节点同时适用于这两个节点,那么您可以将这些节点添加到两个rest客户端。根据这一点,我应该将执行查询的客户端连接到协调节点。更新索引的客户端应连接到数据节点。从@alkis的建议中,我看到我可以创建单独的客户端。但根据这一点,我不必将读请求路由到协调节点,将写请求路由到数据节点。由于创建客户机是最基本的操作,因此最好有明确的方向。Luca是对的,在所有设置中协调节点不是必需的/有益的(因为您在所有请求中都引入了额外的跃点)。您需要首先在集群上进行测试,最终答案取决于您的设置,并且没有确定的答案。
    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();