java的方法transport,ElasticSearch6.X版本Java Api中文详解(一)之TransportClient客户端连接方式...

c6cf7ae09ed80d025b0516e30fe462f7.png

TransportClient使用传输模块远程连接到一个弹性搜索集群。它不加入集群,但只获得一个或多个初始传输ip地址,并在每个动作上与它们进行轮询(尽管大多数操作可能是”two hop” 操作)。

// 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附带一个集群嗅探特性,该特性允许它动态地添加新主机并删除旧主机。在启用嗅嗅时,TransportClient将连接到其内部节点列表中的节点,该列表是通过调用addTransportAddress构建的。在此之后,TransportClient将调用这些节点上的内部集群状态API来发现可用的数据节点。客户机的内部节点列表将仅用这些数据节点替换。默认情况下,此列表每隔5秒刷新一次。注意,嗅探器连接的IP地址是在这些节点的搜索配置中声明为发布地址的。

请记住,如果该node不是一个数据节点,该列表可能不包括它连接到的原始节点。例如,如果您最初连接到一个主节点,在嗅探之后,没有进一步的请求将进入主节点,而是指向任何数据节点。TransportClient不包含非数据节点的原因是为了避免将搜索流量发送到只掌握节点。为了启用嗅探,设置client.transport.sniff为true。

Settings settings = Settings.builder()

.put("client.transport.sniff", true).build();

TransportClient client = new PreBuiltTransportClient(settings);

其他transport client级别设置包括:

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

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

附上我这两天写的连接代码:

public class SearchEsUtils implements SearchEsUtilsInterface {

TransportClient transportClient;

//索引库名

String index = "ori_epotential_2018";

//类型名称

String type = "ori_epotential";

//集群名称

String es_cluster = "es_cluster";

//集群连接IP地址

String es_ip = "192.168.0.14";

//集群连接端口号

Integer es_port = 9300;

public SearchEsUtils() {

try {

init();

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* @throws IOException

* 初始化ES客户端连接

*/

public void init() throws IOException{

/**

* 1:通过 setting对象来指定集群配置信息

*/

Settings setting = Settings.builder()

.put("cluster.name", es_cluster)//指定集群名称

.put("client.transport.sniff", true)//启动嗅探功能

.build();

/**

* 2:创建客户端

* 通过setting来创建,若不指定则默认链接的集群名为elasticsearch

* 链接使用TCP协议即9300

*/

transportClient = new PreBuiltTransportClient(setting)

.addTransportAddress(new TransportAddress(InetAddress.getByName(es_ip), es_port));

/**

* 3:查看集群信息

* 注意我的集群结构是:

* 131的elasticsearch.yml中指定为主节点不能存储数据,

* 128的elasticsearch.yml中指定不为主节点只能存储数据。

* 所有控制台只打印了192.168.79.128,只能获取数据节点

*

*/

List connectedNodes = transportClient.connectedNodes();

for(DiscoveryNode node : connectedNodes)

{

System.out.println(node.getHostAddress());

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值