美文网首页
ElasticSearch Java客户端初始化

ElasticSearch Java客户端初始化

作者: OzanShareing | 来源:发表于2019-12-24 15:17 被阅读0次

简介


正文


参考文档: ElasticSearch Java API

ElasticSearch Java API

1. ElasticSearch 6.x.x 获取客户端


我这里介绍的是针对于Version 6.4.2

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

// on startup

TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
        .addTransportAddress(new TransportAddress(InetAddress.getByName("host1"), 9300))
        .addTransportAddress(new TransportAddress(InetAddress.getByName("host2"), 9300));

// on shutdown

client.close();

如果需要使用其他名称的集群(默认是elasticsearch),需要如下设置:

Settings settings = Settings.builder()
        .put("cluster.name", "myClusterName").build();
TransportClient client = new PreBuiltTransportClient(settings);
//Add transport addresses and do something with the client...

通过TransportClient这个接口,自动嗅探整个集群的状态,ES会自动把集群中其它机器的IP地址加到客户端中。这样做的好处是,一般你不用手动设置集群里所有节点的ip去连接客户端,它会自动帮你添加,并且自动发现新加入集群的机器

Settings settings = Settings.builder()
        .put("client.transport.sniff", true).build();
TransportClient client = new PreBuiltTransportClient(settings);

小结一下两种获取ES不同Setting的方式:

指定集群名称获取集群:

// 创建客户端

//根据集群名称创建setting
Settings settings = Settings.builder()
        .put("cluster.name", "clustername")
        .put("client.transport.sniff", true)
        .build();

TransportClient client = new PreBuiltTransportClient(settings);
client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("IP"), 9300));

不指定集群名称获取集群

//创建Settings 忽略集群名称
Settings settings = Settings.builder()
        .put("client.transport.ignore_cluster_name", true).build();

//创建客户端
TransportClient transportClient = new PreBuiltTransportClient(settings);

transportClient.addTransportAddress(new TransportAddress(InetAddress.getByName(host), Integer.parseInt(port)));

注意!
ES服务器监听(publish_address )使用内网服务器IP,而访问(bound_addresses )使用外网IP时,不要设置client.transport.snifftrue
不设置client.transport.sniff时,默认为false(关闭客户端去嗅探整个集群的状态)。
因为在自动发现时会使用内网IP进行通信,导致无法连接到ES服务器。
因此此时需要直接使用addTransportAddress方法把集群中其它机器的ip地址加到客户端中。

对上面的注意作白话解释:本地开发关闭sniff开关,关闭客户端去嗅探整个集群的状态,手动添加IPPORT到客户端。在SITUATPROD环境部署应用时可开启sniff开关。

相关文章

网友评论

      本文标题:ElasticSearch Java客户端初始化

      本文链接:https://www.haomeiwen.com/subject/ophfoctx.html