Elasticsearch1.X,2.X,5.X随着版本的迭代,除了系统升级,Java API也做了相对较大的调整,也就是说,1.X的API在2.X以及5.X乃至未来6.X版本都不是通用的。
本例子使用的版本是5.6.5
一. 首先添加maven依赖
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>5.6.5</version>
</dependency>
二。连接方式
Settings settings = Settings.builder().put("cluster.name", "my-application").build(); //设置集群名称
TransportClient client = new PreBuiltTransportClient(settings).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("10.10.10.5"), 9300));
输客户端自带一个集群嗅探特性,可以动态地添加新主机并删除旧主机,当启用这个特性时,传输客户端将连接到其内部节点列表中的节点
嗅探器开启方式:
Settings settings = Settings.builder() .put("client.transport.sniff", true).build();
TransportClient client = new PreBuiltTransportClient(settings);
其他transport client的设置包括:
client.transport.ignore_cluster_name :设置为true 可以忽略节点连接时对集群名字的校验
client.transport.ping_timeout :设置一个节点在得到response时的等待时间,默认5秒
client.transport.nodes_sampler_interval:多久进行获取/ping 列出的节点并且连接,默认5秒
三。查看集群信息
List<DiscoveryNode> nodes = client.connectedNodes();
for (DiscoveryNode node : nodes) {
System.out.println(node.getHostAddress());
System.out.println(node.getName());
System.out.println(node.getVersion());
}