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);
        }
    }
12-19 22:17