【二】实战:SpringBoot与ElasticSearch完美融合,WebFlux响应式编程实现
【其二】SpringBoot响应式编程集成Elasticsearch
1. 前言
上次说到安装了Elasticsearch和Kibana,这次要说的是 SpringBoot响应式编程集成Elasticsearch
项目我已经搭建好了,推荐大家先把项目拉下来跑跑,和下面的内容对着看会有更加深入的理解。
代码仓库:demo-springboot-elasticsearch
2. 如何把项目跑起来
代码下载之后,通过如下命令从Elasticsearch容器中 复制http_ca.crt
出来覆盖项目中elastic-search/http_ca.crt
docker cp elasticsearch:/usr/share/elasticsearch/config/certs/http_ca.crt .
然后在application-dev.yaml
中更改你的Elasticsearch的账号和密码,启动!
不出意外的话就会看到往ES中插入了两条数据。
3. 在ES上查看数据
创建DataView
然后
接着保存就行
4 项目详解
4.1 选择Spring Reactive Web 而不是 spring-boot-starter-web。
搭建这个SpringBoot WebFlux项目时,选择的是Spring Reactive Web,而不用spring-boot-starter-web。
传统的spring-boot-starter-web是MVC架构,也就是model and view,和Spring Reactive有很大的区别。
Spring Reactive最显著的特点是WebFlux框架,它提供了一套用于构建响应式Web应用程序的组件。WebFlux支持两种不同的编程模型:基于响应式流的函数式编程模型和基于注解的反应式编程模型。
所有引入的依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</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>
</dependency>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
其中spring-boot-starter-data-elasticsearch
是连接ES所需要的依赖,Spring也为它创建了单独的文档界面介绍怎么进行使用,在搭建这个项目的时候,很多问题的答案都是在当中进行找到的。