ElasticSearch的JAVA 客户端(JAVA API),
ElasticSearch的JAVA 客户端(JAVA API),
客户端
您可以通过多种方式使用Java客户端:
1. 在现有集群上执行标准的索引创建(index),获取(get), 删除(delete),查找(search)。
2.在正在运行的集群上执行管理工作。
获取ElasticSearch客户端很简单。获取客户端的最常见方法是创建一个连接到集群的TransportClient。
重点: 客户端和集群必须有相同的主版本(比如:2.x或者5.x),客户端可以连接到具有不同小版本的集群(如:2.x版本的客户端,可以链接到2.3 或者 2.5).但是可能不支持新的功能的使用。 理想情况下, 客户端和集群应该是同样的版本。
客户端的创建
TransportClient使用传输模块远程连接到Elasticsearch集群。 它不加入集群,而是简单地获得一个或多个初始传输地址,并在每个动作上以循环方式与它们通信(尽管大多数动作可能是“两跳”操作)。
// on startup
TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host1"), 9300))
.addTransportAddress(new InetSocketTransportAddress(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...
传输客户端附带一个群集嗅探功能,允许它动态添加新主机和删除旧主机。 当启用嗅探时,传输客户端将连接到其内部节点列表中的节点,这是通过调用addTransportAddress构建的。 此后,客户端将调用这些节点上的内部群集状态API以发现可用的数据节点。 客户端的内部节点列表将仅由这些数据节点替换。 默认情况下,此列表每五秒刷新一次。 请注意,嗅探器连接的IP地址是那些在这些节点的elasticsearch配置中声明为发布地址的IP地址。
请记住,如果该节点不是数据节点,则该列表可能不包括它连接的原始节点。 例如,如果您最初连接到主节点,则在嗅探后,不再有请求将去往该主节点,而是到任何数据节点。 传输客户端排除非数据节点的原因是为了避免将搜索流量发送到仅主节点。
为了启用嗅探,请将client.transport.sniff设置为true:
Settings settings = Settings.settingsBuilder()
.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 ------> 对节点列表和连接的ElasticSearch的集群节点进行抽样ping的频率,默认5秒。
将客户端连接到协调节点
您可以在本地启动协调节点,然后在应用程序中创建一个连接到此协调节点的TransportClient。
这样,协调节点将能够加载任何你需要的插件。
相关文章
- 暂无相关文章
用户点评