ElasticSearch全文搜索引擎(二)-Spring Boot操作ES(SpringData概述、Spring Data Elasticsearch、基本操作、ElasticSearch操作文档)
Spring Data是spring提供的一套连接各种第三方数据源的框架集,它支持连接很多第三方数据源,例如:
-
数据库
-
redis
-
ElasticSearch
-
MongoDB等
包括数据库在内,很多第三方数据都可以使用SpringData操作,非常方便。
2 Spring Data Elasticsearch
上面章节介绍了Spring Data可以连接很多第三方数据源,其中ES就是Spring Data可以连接的对象。原生情况下,我们需要使用socket来连接ES获得响应,再解析响应,代码量非常大,我们现在可以使用Spring Data提供的封装,连接ES,方便快捷。
转到knows-search模块:
下面我们添加Spring Data ES的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
application.properties:
# 搜索微服务端口
server.port=8066
# 搜索微服务名称
spring.application.name=search-service
# 定位ES的位置
spring.elasticsearch.rest.uris=http://localhost:9200
# 设置日志门槛,显示ES的操作信息
logging.level.cn.tedu.knows.search=debug
# 还需要进一步设置才能使输出日志更清晰
logging.level.org.elasticsearch.client.RestClient=debug
SpringBoot启动类无需配置!
3 实现基本操作
操作ES需要类:首先定义一个对应ES数据的类型,创建一个vo包,包中定义Item(商品)类代码如下:
package cn.tedu.knows.search.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
这个类中所有属性均配置了对应ES的属性和类型,下面我们就可以使用这个类操作ES了。
创建一个包repository,创建一个接口ItemRepository:
这个接口和Mybatis Plus中Mapper接口继承的BaseMapper类似,会自动提供基本的增删改查方法。下面进行测试,测试类代码如下:
package cn.tedu.knows.search;
import cn.tedu.knows.search.repository.ItemRepository;
import cn.tedu.knows.search.vo.Item;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;