SpringBoot中整合ElasticSearch快速入门

Elasticsearch 是什么

Elasticsearch是一个基于 Apache Lucene 构建的分布式搜索和分析引擎,能够处理大规模数据并提供实时搜索和分析功能。它被广泛应用于日志和事件数据分析、全文搜索、业务分析和监控等领域。

使用

在虚拟机的 Docker 容器中安装ElasticsearchKibana。Kibana 是 Elasticsearch 的可视化工具,可以方便地对数据进行展示和分析。【安装教程网上挺多的】

MySQL和ES对比

MySQL 和 Elasticsearch 的对应概念进行对比,学东西多学会类比!!

MySQLElasticsearch说明
TableIndex索引(Index)是文档的集合,类似于数据库中的表(Table)。
RowDocument文档(Document)是数据记录,类似于数据库中的行(Row)。文档的格式为 JSON。
ColumnField字段(Field)是 JSON 文档中的属性,类似于数据库中的列(Column)。
SchemaMapping映射(Mapping)定义了索引中文档的结构和字段类型约束,类似于数据库中的表结构(Schema)。
SQLDSLDSL(Domain-Specific Language)是 Elasticsearch 提供的 JSON 风格的查询语言,用于操作 Elasticsearch,实现 CRUD 操作。

SpringBoot中整合ElasticSearch快速入门

访问Kibana
在这里插入图片描述

# 创建索引
PUT /articles

# 删除索引
DELETE /articles

# 新增一条数据(文档)  我指定了id
POST /articles/_doc/1
{
  "title": "运动",
  "content": "喜欢打篮球,乒乓球,羽毛球"
}

POST /articles/_doc/2
{
  "title": "户外",
  "content": "喜欢户外骑行,打篮球"
}

# 查全部
GET /articles/_search
{
  "query": {
    "match_all": {}
  }
}

# 根据指定字段查询
GET /articles/_search
{
  "query": {
    "match": {
      "id": 122
    }
  }
}

# 模糊查询
GET /articles/_search
{
  "query": {
    "match": {
      "content": "喜欢打篮球"
    }
  }
}

Springboot中操作ES

第一步:依赖

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

第二步:yml配置文件

spring:
  elasticsearch:
    rest:
      uris: "http://192.168.150.101:9200"

第三步:业务代码
@Document(indexName = “articles”):这个注解用于将 Article 类与 Elasticsearch 中的一个名为 articles 的索引进行关联。它告诉 Spring Data Elasticsearch 框架,这个类的对象将被映射到指定的索引中进行存储和操作。

import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;

@Document(indexName = "articles")
@Data
public class Article {
    @Id
    private String id;
    private String title;
    private String content;
}

controller层

@RestController
@RequestMapping("/articles")
public class ArticleController {

    @Autowired
    private ArticleService articleService;

    @PostMapping
    public Article createArticle(@RequestBody Article article) {
        return articleService.save(article);
    }

    @GetMapping("/{id}")
    public Optional<Article> getArticle(@PathVariable String id) {
        return articleService.findById(id);
    }

    @GetMapping
    public Iterable<Article> getAllArticles() {
        return articleService.findAll();
    }

    @DeleteMapping("/{id}")
    public void deleteArticle(@PathVariable String id) {
        articleService.deleteById(id);
    }

    @GetMapping("/search")
    public List<Article> searchArticles(@RequestParam String title) {
        return articleService.findByTitle(title);
    }
}

业务层

@Service
public class ArticleService {

    @Autowired
    private ArticleRepository articleRepository;

    public Article save(Article article) {
        return articleRepository.save(article);
    }

    public Optional<Article> findById(String id) {
        return articleRepository.findById(id);
    }

    public Iterable<Article> findAll() {
        return articleRepository.findAll();
    }

    public void deleteById(String id) {
        articleRepository.deleteById(id);
    }

    public List<Article> findByTitle(String title) {
        return articleRepository.findByTitle(title);
    }
}

持久层

//ElasticsearchRepository 是 Spring Data Elasticsearch 提供的一个接口,允许你在 Springboot 应用中方便地操作 Elasticsearch
public interface ArticleRepository extends ElasticsearchRepository<Article, String> {
    List<Article> findByTitle(String title);
}

测试效果

在这里插入图片描述
在这里插入图片描述

说明

在 Spring Data Elasticsearch 中,通常使用 ElasticsearchRepository 接口来简化与 Elasticsearch 的交互。与原生 Elasticsearch 客户端相比,Spring Data Elasticsearch 提供了更高层次的抽象和便利,使得常见的操作(如查询、保存、删除等)可以通过简单的方法调用来完成


❤觉得有用的可以留个关注❤

  • 18
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值