通过Transport Client接入Elasticsearch集群
本文介绍通过Transport Client访问CSS服务非安全集群的配置说明。如果是安全模式的集群,建议通过Rest High Level Client接入Elasticsearch集群。
注意事项
- 建议Transport Client的版本和Elasticsearch的版本保持一致,例如需要访问的Elasticsearch集群版本是7.6.2,则使用的Transport Client客户端版本建议也是7.6.2。
- 由于该方案只适用于接入非安全集群,因此只支持通过内网IP地址的方式访问集群。
准备工作
- CSS集群处于可用状态。
- 确保运行Java代码的服务器与CSS集群的网络是互通的。
- 确认服务器已安装JDK1.8,JDK1.8官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html。
- 引入Java依赖:
其中7.6.2为Elasticsearch Java客户端的版本号。
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>7.6.2</version> </dependency> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>7.6.2</version> </dependency>
接入集群
以下介绍Transport Client连接Elasticsearch集群并查询test索引是否存在的代码示例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
import org.elasticsearch.action.ActionFuture; import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest; import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.TransportAddress; import org.elasticsearch.transport.client.PreBuiltTransportClient; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.concurrent.ExecutionException; public class Main { public static void main(String[] args) throws ExecutionException, InterruptedException, UnknownHostException { String cluster_name = "xxx"; String host1 = "x.x.x.x"; String host2 = "y.y.y.y"; Settings settings = Settings.builder() .put("client.transport.sniff",false) .put("cluster.name", cluster_name) .build(); TransportClient client = new PreBuiltTransportClient(settings) .addTransportAddress(new TransportAddress(InetAddress.getByName(host1), 9300)) .addTransportAddress(new TransportAddress(InetAddress.getByName(host2), 9300)); IndicesExistsRequest indicesExistsRequest = new IndicesExistsRequest("test"); ActionFuture<IndicesExistsResponse> exists = client.admin().indices().exists(indicesExistsRequest); System.out.println(exists.get().isExists()); } } |
其中,cluster_name为集群的名称;host1、host2为集群节点的内网IP地址,可通过GET _cat/nodes命令查看节点的IP地址。