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