接第23节
五、Elasticsearch-Rest-Client
Java 操作 ES 的两种方式:
1)、9300:TCP
(我们不在9300操作,官方也不建议)
-
spring-data-elasticsearch:transport-api.jar;
-
springboot 版本不同,transport-api.jar不同,不能适配es版本
-
7.x 已经不建议使用,8 以后就要废弃
2)、9200:HTTP
(推荐使用)
- JestClient:非官方,更新慢
- RestTemplate:模拟发 HTTP 请求,ES 很多操作需要自己封装,麻烦
- HttpClient:同上 I
- Elasticsearch-Rest-Client:官方 RestClient,封装了 ES 操作, API 层次分明,上手简单最终选择
Elasticsearch-Rest-Client(elasticsearch-rest-high-level-client
)
1、SpringBoot整合
1)在pafcmall
项目中新添加一个模块pafcmall-search
,当然你也可以,单独创建一个项目
使用spring 启动器创建:
添加group
和 artifact
信息:
添加web
依赖:
2)、修改pom
文件
添加对应的当前 ES
版本的 rest-high-level-client
依赖,我使用的是7.4.2
,所以添加7.4.2
的依赖
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.4.2</version>
</dependency>
可以看到当前 SpingBoot(2.2.6)
版本默认管理的 ES
的版本和 elasticsearch-rest-high-level-client
的版本不一致:
需要修改一下 pom
文件,让 ES
和 elasticsearch-rest-high-level-client
的版本保持一致:
<elasticsearch.version>7.4.2</elasticsearch.version>
3)、添加 ES 配置类
/**
* @description: Elasticsearch 配置文件
* <p>
* SpringBoot 集成 ES 的步骤:
* 1、导入依赖
* https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high-getting-started-maven.html
* 2、编写 ES 配置,给容器中注入一个 RestHighLevelClient,用来操作 9200 端口
* https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high-getting-started-initialization.html
* 3、参照官方API
*/
@Configuration
public class PafcmallElasticsearchConfig {
@Bean
public RestHighLevelClient esRestHighLevelClient() {
RestHighLevelClient client = new RestHighLevelClient(
// 这里可以配置多个 es服务,我当前服务不是集群,所以目前只配置一个
RestClient.builder(
new HttpHost("192.168.50.10", 9200, "http")));
return client;
}
}
修改启动类
:
@EnableDiscoveryClient // 开启服务注册与发现
// 这里需要排除一下数据库的依赖,因为引入了pafcmall-common依赖,其中包含了mybatis-plus的配置,目前我们的服务还没有依赖数据源,所以需要排除
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class PafcmallSearchApplication {
public static void main(String[] args) {
SpringApplication.run(PafcmallSearchApplication.class, args);
}
}
修改application.properties
文件:
# nacos配置中心地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
# 配置应用名
spring.application.name=pafcmall-search
使用测试类测试:
@SpringBootTest
class PafcmallSearchApplicationTests {
@Autowired
private RestHighLevelClient client;
@Test
void contextLoads() {
System.out.println(client);
}
}
更多整合信息请参考 java-rest-high-getting-started-maven 和 java-rest-high-getting-started-initialization