1、 查看文档
1.1 elasticsearch官方文档
我们进入elasticsearch的官方文档,可以看到一个与客户端相关的东西
进入,可以看到有很多客户端,我们这里使用Java restful风格的客户端。
发现7.17版本里面只有一个高级客户端
查看一个低级版本,里面还有一个低级版本
可以看到低级客户端里面东西很少
我们这里使用高级客户端,至于新版本里面为什么抛弃低级客户端,不去探究。展开高级客户端,发现里面有个getting start和一大堆API
展开getting start
查看maven依赖,找到了原生的依赖。
高级Java REST客户端依赖于以下构件及其传递依赖项:
初始化阶段,我们创建RestHighLevelClient
实例需要一个REST低级客户端构建器;如果是集群,可以构建多个HttpHost
实例,使用完毕,调用close()
关闭,释放资源。
更多的内容,感兴趣可以自行查看。
1.2 Spring Data ElasticSearch
Spring Data for Elasticsearch is part of the umbrella Spring Data project which aims to provide a familiar and consistent Spring-based programming model for for new datastores while retaining store-specific features and capabilities. The Spring Data Elasticsearch project provides integration with the Elasticsearch search engine.
Spring Data ElasticSearch是Spring对原生JAVA操作Elasticsearch封装之后的产物。它通过对原生API的封装,使得JAVA程序员可以简单的对Elasticsearch进行操作。
2、SpringBoot环境搭建
2.1 创建项目
我们先创建一个空的maven项目
然后在这个空项目下创建子模块
勾上你想要的
2.2 环境配置
2.3 导入依赖
创建模块时,我们勾选了NoSQL的starter data elasticsearch,自动给我们导入了依赖。
我们进入spring-boot-starter-data-elasticsearch
进入spring-data-elasticsearch
,在这里,我们看到了它导入了elasticsearch的高级客户端依赖,也就是我们前面说的原生依赖
打开 maven导入的依赖目录,可以看到spring-data-elasticsearch 2.7.2
导入的7.17.4
的client
。
注意,我们前面(就是上一篇)使用的elasticsearch
是7.6.2
,这里我们把它改成7.6.2
,保持版本一致。在pom中改成自己想要的版本即可。但修改elasticsearch版本,像我上面2.7.2
的Springboot改不了7.6.2
的elasticsearch。
查看elasticsearch、springboot、Spring data三者版本对应
https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#preface.requirements
修改springboot和elasticsearch的版本。
修改成功。
我们在这里提前导入fastjson,后续需要。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.41</version>
</dependency>
完整pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.goodwin</groupId>
<artifactId>es-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>es-api</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.3.7.RELEASE</spring-boot.version>
<elasticsearch.version>7.6.2</elasticsearch.version>
</properties>
<dependencies>
<!--导入了elasticsearch-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<!--导入fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.41</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>