主节点出现故障时,通过Java API进行Elasticsearch集群连接

时间:2017-01-25 11:48:26

标签: elasticsearch elasticsearch-java-api

我有一个包含10个节点的Elasticsearch集群。通过Java API连接到集群时,我只连接到主节点。

TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("masterNode"), 9300));

如果主节点出现故障,我的程序会自动连接到下一个主节点吗?如果我必须在初始主节点失败后重新启动Java程序,该怎么办?

1 个答案:

答案 0 :(得分:0)

对于 TransportClient 客户端,客户端有嗅探设置:

  1. client.transport.sniff 模式 false 客户端只会尝试连接已配置的 IP < / strong>,as:

      

    addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(“masterNode”),9300));

  2. client.transport.sniff 模式为 true 客户端将首先连接到已配置的 IP ,以及统计信息 API,以发现群集可用数据节点,以动态添加新主机并删除旧主机。(注意:如果您的群集与您的客户端应用有不同的网络,连接到群集数据节点会有问题),如:

      

    设置设置= Settings.settingsBuilder()           .put(“client.transport.sniff”,true).build();   TransportClient客户端=新的PreBuiltTransportClient(设置);

  3. 您的问题是,当嗅探设置为真并且它们位于同一网络中时,您的连接节点发生故障,它仍然可以连接到群集

    参考:https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.0/transport-client.html