SpringBoot整合ElasticSearch

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: SpringBoot整合ElasticSearch

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

    <!--spring整合elasticsearch包-->
    <dependency>  
       <groupId>org.springframework.boot</groupId>  
       <artifactId>spring-boot-starter-data-elasticsearch</artifactId>  
   </dependency>
    <!--实体工具包-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
    <!--集合工具包-->
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>19.0</version>
    </dependency>

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=elasticsearch
spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300
spring.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类

@Component
public interface NoticeRepository extends ElasticsearchRepository<Notice, Long> {
}

5、NoticeController

@RestController
@RequestMapping("/api/v1/article")
public class NoticeController {
    @Autowired
    private NoticeRepository nticeRepository;
    @GetMapping("save")
    public CommandResult<Void> save(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();
    }
    /**
     * @param title   搜索标题
     * @param pageable page = 第几页参数, value = 每页显示条数
     */
    @GetMapping("search")
    public CommandResult<List<Notice>> search(String title,@PageableDefault(page = 1, value = 10) Pageable pageable){
        //按标题进行搜索
        QueryBuilder queryBuilder = QueryBuilders.matchQuery("title", title);
        //如果实体和数据的名称对应就会自动封装,pageable分页参数
        Iterable<Notice> listIt =  nticeRepository.search(queryBuilder,pageable);
                //Iterable转list
        List<Notice> list= Lists.newArrayList(listIt);
        return CommandResult.ofSucceed(list);
    }
}

6、查看运行结果

它会进行中文分词查询,然后安装相识度进行排序

84.png


总体步骤还是很清晰简单的,因为有spring-boot-starter-data-elasticsearch进行了整合,所以我们可以少敲很多代码。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
2月前
|
网络协议 Java API
SpringBoot整合Elasticsearch-Rest-Client、测试保存、复杂检索
这篇文章介绍了如何在SpringBoot中整合Elasticsearch-Rest-Client,并提供了保存数据和进行复杂检索的测试示例。
SpringBoot整合Elasticsearch-Rest-Client、测试保存、复杂检索
|
2月前
|
自然语言处理 Java 关系型数据库
ElasticSearch 实现分词全文检索 - SpringBoot 完整实现 Demo 附源码【完结篇】
ElasticSearch 实现分词全文检索 - SpringBoot 完整实现 Demo 附源码【完结篇】
32 0
|
2月前
|
自然语言处理 Java 索引
ElasticSearch 实现分词全文检索 - Java SpringBoot ES 文档操作
ElasticSearch 实现分词全文检索 - Java SpringBoot ES 文档操作
31 0
|
2月前
|
自然语言处理 Java 索引
ElasticSearch 实现分词全文检索 - Java SpringBoot ES 索引操作
ElasticSearch 实现分词全文检索 - Java SpringBoot ES 索引操作
34 0
|
3月前
|
Java 索引 Spring
教程:Spring Boot中集成Elasticsearch的步骤
教程:Spring Boot中集成Elasticsearch的步骤
|
4月前
|
存储 搜索推荐 Java
Spring Boot与Elasticsearch的集成应用
Spring Boot与Elasticsearch的集成应用
|
4月前
|
搜索推荐 Java 索引
教程:Spring Boot中集成Elasticsearch的步骤
教程:Spring Boot中集成Elasticsearch的步骤
|
5月前
|
Java
【极问系列】springBoot集成elasticsearch出现Unable to parse response body for Response
【极问系列】springBoot集成elasticsearch出现Unable to parse response body for Response
691 2
|
NoSQL Java 测试技术
SpringBoot集成ElasticSearch在启动时报availableProcessors is already set to [8], rejecting [8]
SpringBoot集成ElasticSearch在启动时报availableProcessors is already set to [8], rejecting [8]
126 0
|
SQL 自然语言处理 Java
springboot 2.0集成elasticsearch 7.6.2 (集群)关键字高亮显示(上)
springboot 2.0集成elasticsearch 7.6.2 (集群)关键字高亮显示
191 0
springboot 2.0集成elasticsearch 7.6.2 (集群)关键字高亮显示(上)
下一篇
无影云桌面