java代码怎样连接es,Elasticsearch 连接ES的两种方式

本文对比了Elasticsearch中使用Node客户端与TransportClient的不同连接方式。Node客户端作为集群全知者但需初始化连接,而TransportClient快速连接但缺乏集群信息。适合场景和配置选项详述。
摘要由CSDN通过智能技术生成

1、创建客户端节点来连接:

其中client(true)将node指定为客户端节点,所以这个不能写漏掉,客户端节点是不持有数据的,

Java代码  bf632ec55a05f69a9359f73417402b26.png

Node node = NodeBuilder.nodeBuilder().clusterName(clusterName).client(true)

.node();

Client client = node.client();

优势:

通过此方式创建客户端能知道所有关于集群、索引、分片的信息,在操作上可以更快的执行。

不足之处:

启动时客户端节点必须加入集群并建立与其他节点的连接,此过程需要消耗时间和资源。

当ES集群处于另一个局域网中时就不行了,所以一般不建议使用此方式。

2、使用传输机客户端来连接(即使用TransportClient来创建):

Java代码  bf632ec55a05f69a9359f73417402b26.png

Settings settings = Settings.builder().put("cluster.name",clusterName).build();

client = TransportClient.builder().settings(settings).build();

client.addTransportAddress(new InetSocketTransportAddress(

InetAddress.getByName(host), port));

优势:

启动速度快,不需要像前者那么多的socket连接。

不足之处:

因为它不想前者那样知道集群、索引、分片的这些信息,所以在分发数据和查询上没前者快,不能直接发送到指定的节点或直接从某个节点去取数据,需要ES在其中进行一些额外的转发才能完成。

TransportClient类的可用配置:

client.transport.sniff:默认值为false,当设置为true时,ES会读取集群中的节点信息。

client.transport.ignore_cluster_name:默认值为false,当设置为true时,ES会忽视配置中的集群名称并尝试连接到某个可连接集群上,而不管集群名称是否匹配。

client.transport.ping_timeout:默认为5s,此参数指定了ping命令响应的超时时间。

client.reansport.nodes_sampler_interval:默认为5s,此参数指定了检查节点可用性的时间间隔。

标签:节点,client,集群,Elasticsearch,连接,ES,客户端

来源: https://www.cnblogs.com/a-du/p/13329367.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值