SpringBoot整合ElasticSearch

文章目录

      • 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

    
    <dependency>  
       <groupId>org.springframework.bootgroupId>  
       <artifactId>spring-boot-starter-data-elasticsearchartifactId>  
   dependency>

    
    <dependency>
        <groupId>org.projectlombokgroupId>
        <artifactId>lombokartifactId>
    dependency>

    
    <dependency>
        <groupId>com.google.guavagroupId>
        <artifactId>guavaartifactId>
        <version>19.0version>
    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、查看运行结果

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

SpringBoot整合ElasticSearch_第1张图片

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

你可能感兴趣的:(#,Java,#,Spring,Boot,#,ElasticSearch,elasticsearch,spring,boot,搜索引擎)