首页 > 技术文章 > ElasticSearch(一) Transport Client

xiaocandou 2017-12-10 10:26 原文

Transport  Client 通过远程连接到Es 集群,他不加入集群,只是通过集群nodes 的 transportAddress 和集群通信。

一  如何通过集群域名获得集群nodes的transportAddress

http://xxx.com/_cat/nodes?h=ip,port

http://xxx.com/_nodes/transport

 

二 TransportClient 初始化方式

// on startup

TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
        .addTransportAddress(new TransportAddress(InetAddress.getByName("host1"), 9300)) //9300 为nodes 默认的端口,请使用实际 端口号
        .addTransportAddress(new TransportAddress(InetAddress.getByName("host2"), 9300));

// on shutdown

client.close();

三 TransportClient 动态加入node

Settings settings = Settings.builder()
        .put("client.transport.sniff", true)   //嗅探 默认每5s去更新下集群新的节点,加入新节点,去掉坏节点
.put("cluster.name", "myClusterName") //集群名称
.build();

TransportClient client = new PreBuiltTransportClient(settings);

四 Settings 其他参数

可通过设置 client.transport.nodes_sampler_interval 来改变轮询集群节点连接的频率。
ParameterDescription

client.transport.ignore_cluster_name

Set to true to ignore cluster name validation of connected nodes. (since 0.19.4)

client.transport.ping_timeout

The time to wait for a ping response from a node. Defaults to 5s.

client.transport.nodes_sampler_interval

How often to sample / ping the nodes listed and connected. Defaults to 5s.


官方文档:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/transport-client.html

推荐阅读