文章目录
- 1、pom.xml
- 2、application.properties
- 3、Notice实体
- 4、NoticeRepository类
- 5、NoticeController
- 6、查看运行结果
ElasticSearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene 基础之上。(Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库。)
ElasticSearch 使用 Java 编写的,它的内部使用的是 Lucene 做索引与搜索,它的目的是使全文检索变得简单(因为 Lucene 只是个库),通过隐藏 Lucene 的复杂性,取而代之提供了一套简单一致的 RESTful API 。
接下来介绍基于spring-boot-starter-data-elasticsearch整合。
开发环境:springboot版本:2.0.1,elasticSearch-5.6.8.jar版本:5.6.8,服务器部署ElasticSearch版本:6.3.2
1、pom.xml
org.springframework.boot spring-boot-starter-data-elasticsearch org.projectlombok lombok com.google.guava guava 19.0
Spring Data ElasticSearch 和 ElasticSearch 是有对应关系的,不同的版本之间不兼容。
版本对应关系
官网描述的对应关系如下表:
Spring Boot | Spring Data Elasticsearch | Elasticsearch |
---|---|---|
2.2.x | 3.2.x | 6.8.4 |
2.1.x | 3.1.x | 6.2.2 |
2.0.x | 3.0.x | 5.5.0 |
注意,Spring Boot(Spring Data Elasticsearch)和 Elasticsearch 的版本匹配问题是网上反映较多的问题一定要注意。
2、application.properties
spring.data.elasticsearch.cluster-name=elasticsearchspring.data.elasticsearch.cluster-nodes=127.0.0.1:9300spring.data.elasticsearch.repositories.enabled=true
3、Notice实体
@Data@AllArgsConstructor@NoArgsConstructor//indexName代表所以名称,type代表表名称@Document(indexName = "wantu_notice_info", type = "doc")public class Notice { //id @JsonProperty("auto_id") private Long id; //标题 @JsonProperty("title") private String title; //公告标签 @JsonProperty("exchange_mc") private String exchangeMc; //公告发布时间 @JsonProperty("create_time") private String originCreateTime; //公告阅读数量 @JsonProperty("read_count") private Integer readCount; }
4、NoticeRepository类
@Componentpublic interface NoticeRepository extends ElasticsearchRepository{}
5、NoticeController
@RestController@RequestMapping("/api/v1/article")public class NoticeController { @Autowired private NoticeRepository nticeRepository; @GetMapping("save") public CommandResultsave(long id, String title){ Notice article = new Notice(); article.setId(id); article.setReadCount(123); article.setTitle("springboot整合elasticsearch,这个是新版本 2018年"); nticeRepository.save(article); return CommandResult.ofSucceed(); } @GetMapping("search") public CommandResult > search(String title,@PageableDefault(page = 1, value = 10) Pageable pageable){ //按标题进行搜索 QueryBuilder queryBuilder = QueryBuilders.matchQuery("title", title); //如果实体和数据的名称对应就会自动封装,pageable分页参数 Iterable
listIt = nticeRepository.search(queryBuilder,pageable); //Iterable转list List list= Lists.newArrayList(listIt); return CommandResult.ofSucceed(list); }}
6、查看运行结果
它会进行中文分词查询,然后安装相识度进行排序
总体步骤还是很清晰简单的,因为有spring-boot-starter-data-elasticsearch进行了整合,所以我们可以少敲很多代码。