elasticsearch for java【教程一Client】

来源:互联网 发布:cloudtv mac 激活码 编辑:程序博客网 时间:2024/03/29 21:21

环境

虚拟机:centos7
操作系统:win7
elasticsearch:5.4.3

Transport Client 传输客户端

TransportClient使用传输模块远程连接到elasticsearch集群。它不会加入集群,而是简单的获取一个或多个初始传输地址,并且以循环的方式与每个动作进行通信。(尽管大多数操作可能是two hop操作)。

// on startupTransportClient client = new PreBuiltTransportClient(Settings.EMPTY)        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host1"), 9300))        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host2"), 9300));// on shutdownclient.close();

注意如果你设置了集群的名称,那么你必须设置它

Settings settings = Settings.builder().put("cluster.name", "yutao").build();        TransportClient client = new PreBuiltTransportClient(settings);        client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("192.168.116.19"), 9300))        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("192.168.116.19"), 9301));

Transport client 配置集群嗅探功能,其允许动态添加新主机和删除旧主机。
当嗅探开启时,传输客户端将连接到其内部节点列表中的节点,该节点是通过调用addTransportAddress构建的。之后,客户端将调用这些节点上的内部集群状态API来发现可用的数据节点。客户端的内部节点列表将仅替换为这些数据节点。该列表默认是每5秒刷新一次。注意:嗅探器连接的IP地址是那些在节点elasticsearch配置中声明为公开的地址。

请记住,如果该节点不是数据节点,则该列表可能不包括其连接的原始节点。
例如:如果你最初连接到主节点,则嗅探后,不会再向该主节点提供进一步的请求,而是替换为任意数据节点。传输客户端排除非数据节点的原因是避免将搜索流量发送到仅主节点。

为了开启嗅探,设置client.transport.snifftrue

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

其他传输客户端层次设置:

参数 描述 client.transport.ignore_cluster_name 设置true,连接集群时,忽略验证集群名 client.transport.ping_timeout 等待来自节点的ping响应的时间。默认5秒 client.transport.nodes_sampler_interval 多长时间采样/ ping列出和连接的节点。默认为5秒。

将客户端连接到仅协调节点

你可以在本地启动一个协调节点,然后在你的应用程序中创建一个连接到此协调节点。

这样,只有协调的节点才能加载任何你需要的插件。(例如,考虑发现插件)

参考链接:

https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.4/transport-client.html