Bootstrap

SpringBoot整合ElasticSearch实现基础的CRUD操作

本文来说下SpringBoot整合ES实现CRUD操作


概述

SpringBoot支持两种技术和es交互。一种的jest,还有一种就是SpringData-ElasticSearch。根据引入的依赖不同而选择不同的技术。反正作为spring全家桶,目前是以springdata为主流使用技术。直接导入spring-boot-starter-data-elasticsearch就可以了

在这里插入图片描述


spring-boot-starter-data-elasticsearch

访问网址:https://spring.io/projects/spring-data-elasticsearch/

在这里插入图片描述


项目搭建

由于es对springboot的版本有要求,最好按照官网要求来

在这里插入图片描述

es版本

在这里插入图片描述

搭建一个springboot程序来测试es的基本使用

在这里插入图片描述

引入es 的依赖

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
   <version>2.6.6</version>
</dependency>

注意这里要引入springBoot整合es的场景启动器。可以简单看下这个场景启动器里面都有啥依赖:

在这里插入图片描述


ES简单的crud操作

配置 application.yml

spring:
  elasticsearch:
    rest:
      uris: http://localhost:9200

创建一个测试的对象,article

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import java.util.Date;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(indexName = "article")
public class Article {

    // 注意id字段是必须的,可以不写注解@Id。
    @Id
    private String id;
    
    private String title;
    private String content;
    private Integer userId;
    private Date createTime;

}

实现ElasticsearchRepository接口来实现增删改查操作

import cn.wideth.po.Article;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

/****
 * 实现ElasticsearchRepository
 * 接口来实现增删改查操作
 */
public interface ArticleRepository extends ElasticsearchRepository<Article, String> {

}

说明

下面可以使用这个 ArticleRepository 来操作 ES 中的 Article 数据。
我们这里没有手动创建这个 Article 对应的索引,由 elasticsearch 默认生成

下面的接口,使用了 Repository 整合 spring boot 对 es 数据进行插入、更新、查询、删除等操作。可以作为一个参考。

保存数据

保存数据

    @GetMapping("/save")
    @ApiOperation("保存数据")
    public Object save() {

        Article article = new Article();
        article.setId("112233");
        article.setTitle("java");
        article.setContent("hello world");
        article.setUserId(22221111);
        article.setCreateTime(new Date());
        return articleRepository.save(article);
    }

查看结果

在这里插入图片描述


修改数据

保存数据和修改数据都是save方法,存在相同的id信息,则为修改,不存在则为新增

    @GetMapping("/update")
    @ApiOperation("修改数据")
    public Object update() {

        Article article = new Article();
        // id存在,则为修改
        article.setId("112233");
        article.setTitle("java-6");
        article.setContent("hello world-6");
        article.setUserId(6666);
        article.setCreateTime(new Date());
        return articleRepository.save(article);
    }

查看结果

在这里插入图片描述


查看数据

根据id来查看数据

    @GetMapping("/findById")
    @ApiOperation("根据id获得数据")
    public Optional<Article> findById(String id) {

        Optional<Article> article = articleRepository.findById(id);
        log.info("==========>>>>"+article.toString());
        return article;
    }

查看结果

在这里插入图片描述


删除数据

删除数据

    @GetMapping("/delete")
    @ApiOperation("删除数据")
    public void delete(String id) {

        // 根据 id 删除
        articleRepository.deleteById(id);
    }

查看结果

在这里插入图片描述


本文小结

本文使用SpringBoot整合ElasticSearch来实现简单的CRUD操作

;