1、ES7版本变化
- 废弃了type,没有类型的概念;
- 废弃TransportClient,只能使用restclient。
2、Maven依赖
连接客户端主要有Rest Low Level Client和Rest High Level Client两种可以使用,两者的主要区别在于:
Rest Low Level Client:低级别的REST客户端,通过http与集群交互,用户需自己编组请求JSON串,及解析响应JSON串。兼容所有ES版本。最小Java版本要求为1.7。
Rest High Level Client:高级别的REST客户端,基于低级别的REST客户端,增加了编组请求JSON串、解析响应JSON串等相关api。使用的版本需要保持和ES服务端的版本一致,否则会有版本问题。
我选择使用的是Rest High Level Client,在pom.xml中添加依赖(我使用的是ES7.4.2,所以这里使用同版本的client客户端):
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.4.2</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.4.2</version>
</dependency>
3、连接到集群
public static RestHighLevelClient getClient() {
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http")));
return client;
}
通过上面的代码就可以连接到集群,再通过获取已经建好的集群内的一个文档来看看是否连接成功。
public static void main(String args[]) throws IOException { RestHighLevelClient client = getClient(); GetRequest getRequest = new GetRequest( "news", "1"); GetResponse getResponse=client.get(getRequest, RequestOptions.DEFAULT); String index = getResponse.getIndex(); String id = getResponse.getId(); System.out.println(index); System.out.println(id); if (getResponse.isExists()) { long version = getResponse.getVersion(); System.out.println(version); String sourceAsString = getResponse.getSourceAsString(); System.out.println(sourceAsString); Map<String, Object> sourceAsMap = getResponse.getSourceAsMap(); byte[] sourceAsBytes = getResponse.getSourceAsBytes(); } else { System.out.println(false); } }