ES Transport Client学习

Elasticsearch Java API 客户端连接,有三种方式:一个是TransportClient,一个是NodeClient,还有一个XPackTransportClient。

  1. TransportClient:
    作为一个外部访问者,请求ES的集群,对于集群而言,它是一个外部因素。

  2. NodeClient
    作为ES集群的一个节点,它是ES中的一环,其他的节点对它是感知的。

  3. XPackTransportClient:
    服务安装了 x-pack 插件,ElasticsearchXPackClient中已经集成了TransportClient。

WARNING

  1. 客户端版本应该和服务端版本保持一致
  2. TransportClient旨在被Java高级REST客户端取代,该客户端执行HTTP请求而不是序列化的Java请求。 在即将到来的Elasticsearch版本中将不赞成使用TransportClient,建议使用Java高级REST客户端。
  3. 上面的警告比较尴尬,但是在 5xx版本中使用还是没有问题的,可能使用rest 客户端兼容性更好做一些。

TransportClient和NodeClient两者的区别为:

  1. TransportClient作为一个外部访问者,通过HTTP去请求ES的集群,对于集群而言,它是一个外部因素。 NodeClient顾名思义,是作为ES集群的一个节点,它是ES中的一环,其他的节点对它是感知的,不像TransportClient那样,ES集群对它一无所知。
  2. NodeClient通信的性能会更好,但是因为是ES的一环,所以它出问题,也会给ES集群带来问题。
    NodeClient可以设置不作为数据节点,在elasticsearch.yml中设置,这样就不会在此节点上分配数据。

TransportClient利用transport模块远程连接一个elasticsearch集群。它并不加入到集群中,只是简单的获得一个或者多个初始化的transport地址,并以轮询的方式与这些地址进行通信。

// on startup
Client client = new TransportClient()
		.addTransportAddress(new InetSocketTransportAddress("host1", 9300))
		.addTransportAddress(new InetSocketTransportAddress("host2", 9300));
// on shutdown
client.close();

注意,如果你有一个与elasticsearch集群不同的集群,你可以设置机器的名字。

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

你也可以用elasticsearch.yml文件来设置。

这个客户端可以嗅到集群的其它部分,并将它们加入到机器列表。为了开启该功能,设置client.transport.sniff为true。

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

其它的transport客户端设置有如下几个:

// Parameter Description
client.transport.ignore_cluster_name:true代表忽略连接节点的集群名验证
client.transport.ping_timeout:ping一个节点的响应时间,默认是5s
client.transport.nodes_sampler_interval:sample/ping 节点的时间间隔,默认是5s

Reference
https://endymecy.gitbooks.io/elasticsearch-guide-chinese/content/java-api/client.html
https://elasticsearch.cn/article/380

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值