文章目录
- 1、整合
- 2、简单示例
- 3、一点补充
- 4、增删改查索引与文档
1、整合
整合思路都一样,先起步依赖或普通依赖,再配置,再封装的操作对象。先引入依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
application.yaml配置:
spring: elasticsearch: rest: uris: http://localhost:9200
在需要的地方注入客户端操作对象:
@Autowired
ElasticsearchRestTemplate template;
注意,与以往不同的是,SpringBoot平台并没有跟随ES的更新速度进行同步更新,ES提供了High Level Client
操作ES,导入坐标:
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId>
</dependency>
不用加配置,上面的starter搭配的那个配置也可以注释掉了,使用es-high-level-client,ES的信息写在代码中,不写在配置文件中,因为没和SpringBoot整合还。
2、简单示例
既然es-high-level-client还没和Spring做整合,那自然不能使用@Autowired自动注入一个客户端操作对象了。RestHighLevelClient对象需要我们自己来手动创建,并初始化。且之前对象做为Bean交给Spring管理时,我们只管用,现在手搓的RestHighLevelClient用完需要关闭资源连接。在UT中看下效果,以创建索引为例:
@Test
void test() throws IOException {HttpHost host = HttpHost.create("http://localhost:9200"); RestClientBuilder builder = RestClient.builder(host); RestHighLevelClient client = new RestHighLevelClient(builder); //客户端操作 CreateIndexRequest request = new CreateIndexRequest("books"); //获取操作索引的客户端对象,调用创建索引操作 client.indices().create(request, RequestOptions.DEFAULT); //关闭客户端 client.close();
}
创建客户端连接对象和关闭连接是重复操作,使用SetUp和TearDown方法来改进下:
SetUp和TearDown分别代表每个测试用例@Test执行前和执行后进行的操作。
@SpringBootTest
class Springboot18EsApplicationTests {private RestHighLevelClient client; @BeforeEach void setUp() { this.client = new RestHighLevelClient(RestClient.builder(HttpHost.create("http://localhost:9200"))); } @AfterEach void tearDown() throws IOException { this.client.close(); }}
此时,直接写CRUD代码就行。
@Test
void test() throws IOException { //客户端操作 CreateIndexRequest request = new CreateIndexRequest("books"); //获取操作索引的客户端对象,调用创建索引操作 client.indices().create(request, RequestOptions.DEFAULT);
}
3、一点补充
高版本的SpringBoot好像已经完成了整合,可以直接注入RestHighLevelClient这个对象(测试版本SpringBoot 2.6.13)
@Autowired
private RestHighLevelClient restHighLevelClient;
在Ioc容器中获取一下,是可以拿到这个Bean的,且其加载了application.yaml中的es配置:
spring: elasticsearch: rest: uris: http://localhost:9200 # 默认就是这个uri,写不写都行
不确定,没查文档,实际开发时自己看吧,注入不成功就@Bean自己创建一个。
4、增删改查索引与文档
之前专栏已经整理完了,跳转【ES专栏】