文章目录
ES支持多种编程语言客户端
Elasticsearch支持多种编程语言客户端,如下:
官网地址:https://www.elastic.co/guide/en/elasticsearch/client/index.html
ES 提供的客户端连接方式
- REST API,端口9200
- Transport连接,端口9300
Java REST Client
ES提供两个Java REST Client版本
- Java Low Level REST Client(少用): 低级别的REST客户端,通过http与集群交互,用户需自己编组请求JSON串,及解析响应JSON串。兼容所有ES版本。
- Java High Level REST Client(常用): 高级别的REST客户端,基于低级别的REST客户端,增加了编组请求、解析响应等相关api。
Java Low Level REST Client
因为低级别的REST客户端用的比较少,这里不展开说明,可以直接参考官网说明。
特点、maven引入、使用介绍参考:
https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-low.html
API doc请参考:
https://artifacts.elastic.co/javadoc/org/elasticsearch/client/elasticsearch-rest-client/6.2.4/index.html
Java High Level REST Client(常用)
从6.0.0开始加入的,目的是以java面向对象的方式来进行请求、响应处理。
每个API 支持 同步/异步 两种方式,同步方法直接返回一个结果对象。异步的方法以 async 为后缀,通过listener 参数来通知结果。
高级java REST 客户端依赖Elasticsearch core project
兼容性说明:
- 依赖 java1.8 和 Elasticsearch core project
- 请使用与服务端ES版本一致的客户端版本,否则会出错!!!
maven中引入:
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>6.4.3</version>
</dependency>
Java High Level REST Client 初始化
//给定集群的多个节点地址,将客户端负载均衡地向这个节点地址集发请求
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("localhost", 9200, "http"),
new HttpHost("localhost", 9201, "http")));
client不再使用的话,要关闭:
client.close();
API及使用实例,参考官网:
https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.4/java-rest-high-supported-apis.html
Java Client
java client 使用 TransportClient,各种操作本质上都是异步的(可以用 listener,或返回 Future )。
注意:ES的发展规划中在7.0版本开始将废弃 TransportClient,8.0版本中将完全移除 TransportClient,取而代之的是High Level REST Client。
High Level REST Client 中的操作API和java client 大多是一样的。
官方学习链接:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/index.html
maven中引入:
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>6.4.3</version>
</dependency>
初始化客户端:
//连接集群设置
Settings settings = Settings.builder()
.put("cluster.name", "myClusterName").build();
//连接的transport地址,注意端口为9300
TransportClient client = new PreBuiltTransportClient(settings)
.addTransportAddress(new TransportAddress(InetAddress.getByName("host1"), 9300))
.addTransportAddress(new TransportAddress(InetAddress.getByName("host2"), 9300));
//在关闭时记得关闭客户端对象
client.close();
其他API操作可以直接参考官网,官网资料非常齐全