client.transport.sniff的使用方法

通过TransportClient这个接口,我们可以不启动节点就可以和es集群进行通信,它需要指定es集群中其中一台或多台机的ip地址和端口,例子如下:

Client client = new TransportClient()  
            .addTransportAddress(newInetSocketTransportAddress("host1", 9300))  
            .addTransportAddress(newInetSocketTransportAddress("host2", 9300));  
client.close(); 

 如果你需要更改集群名(默认是elasticsearch),需要如下设置:

Settings settings =ImmutableSettings.settingsBuilder()  
                    .put("cluster.name","myClusterName").build();  
Client client = newTransportClient(settings); 

你可以设置client.transport.sniff为true来使客户端去嗅探整个集群的状态,把集群中其它机器的ip地址加到客户端中,这样做的好处是一般你不用手动设置集群里所有集群的ip到连接客户端,它会自动帮你添加,并且自动发现新加入集群的机器。代码实例如下:

Settings settings = ImmutableSettings.settingsBuilder()  
                   .put("client.transport.sniff", true).build();  
TransportClientclient = new TransportClient(settings);


注意:当ES服务器监听使用内网服务器IP而访问使用外网IP时,不要使用client.transport.sniff为true,在自动发现时会使用内网IP进行通信,导致无法连接到ES服务器,而直接使用addTransportAddress方法进行指定ES服务器。


你可能感兴趣的:(ElasticSearch,TransportClient,elasticsearch,Settings)