当前位置: 首页 > news >正文

51、Spring Boot 详细讲义(八) Spring Boot 与 NoSQL

3、 Elasticsearch 集成

3.1 Elasticsearch 概述

3.1.1 Elasticsearch 的核心概念

Elasticsearch 是一个开源的分布式搜索引擎,主要用于实时数据检索和分析。它的核心功能包括全文检索、结构化查询和分析大规模数据。

  • 分布式搜索引擎
    • Elasticsearch 将数据分布存储在多个节点上,支持水平扩展和高可用性。
    • 支持实时数据获取和高性能的复杂查询。
  • 倒排索引
    • 倒排索引是一种数据结构,用于快速定位满足特定查询条件的文档。
    • 通过倒排索引,Elasticsearch 能够高效地支持全文检索和结构化查询。
  • 核心概念
    • 索引(Index):类似于数据库中的数据库,是存储文档的地方。
    • 文档(Document):以 JSON 格式存储的数据单元,每个文档都有唯一的 ID。
    • 字段(Field):文档中的键值对,表示具体的数据内容。
    • 映射(Mapping):定义字段的数据类型和索引方式,是索引的结构蓝图。
3.1.2 Elasticsearch 的安装与简单使用
  • 安装 Elasticsearch

    1. 下载:从 Elasticsearch 官方网站 下载适合的版本。

    2. 安装:

      • Windows:解压下载的压缩包,运行 bin\elasticsearch.bat 启动服务。

      • Linux:解压压缩包,运行 bin/elasticsearch 启动服务。

      • macOS:使用 Homebrew 安装:

        brew install elasticsearch  
        
    3. 验证安装:

      • 打开浏览器,访问 http://localhost:9200,应该显示 Elasticsearch 的集群信息。
  • 安装 Kibana(可选):

    1. 下载并解压 Kibana。

    2. 启动 Kibana:

      ./bin/kibana  
      
    3. 访问 http://localhost:5601,即可通过 Kibana 进行可视化的数据管理和查询。

  • 简单使用

    # 创建一个索引  
    curl -X PUT "http://localhost:9200/myindex"  # 插入一条文档  
    curl -X POST "http://localhost:9200/myindex/_doc/1" -H "Content-Type: application/json" -d '{"name":"John","age":30}'  # 查询文档  
    curl -X GET "http://localhost:9200/myindex/_doc/1"  
    

3.2 Spring Boot 与 Elasticsearch 集成

3.2.1 项目结构与依赖配置

为了在 Spring Boot 项目中集成 Elasticsearch,需要在项目中添加相关依赖,并配置项目结构。

  • Maven 依赖
    pom.xml 中添加以下依赖:

    <dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-data-elasticsearch</artifactId>  
    </dependency>  
    <dependency>  <groupId>org.elasticsearch</groupId>  <artifactId>elasticsearch</artifactId>  
    </dependency>  
    
  • Gradle 依赖
    build.gradle 中添加:

    dependencies {  implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch'  implementation 'org.elasticsearch:elasticsearch'  
    }  
    
  • 项目结构

    • src/main/java:存放 Java 源文件。
    • src/main/resources:存放配置文件,如 application.properties
    • src/test:存放测试文件。
3.2.2 使用 Spring Data Elasticsearch 实现 CRUD 和搜索功能

Spring Data Elasticsearch 提供了类似于 Spring Data JPA 的 Repository 接口,方便实现 CRUD 和搜索功能。

  • 创建文档模型
    定义一个 Java 类,使用 @Document 注解指定索引名称和文档类型。

    @Document(indexName = "users", type = "_doc")  
    public class User {  @Id  private String id;  @Field(type = FieldType.Text)  private String name;  @Field(type = FieldType.Integer)  private int age;  // Getter 和 Setter 方法  
    }  
    
  • 创建 Elasticsearch Repository 接口
    定义一个 Repository 接口,继承自 ElasticsearchRepository

    public interface UserRepository extends ElasticsearchRepository<User, String> {  
    }  
    
  • 实现 CRUD 操作
    使用 @Service 注解定义一个服务类,实现 CRUD 功能。

    @Service  
    public class UserService {  @Autowired  private UserRepository userRepository;  public void create(User user) {  userRepository.save(user);  }  public List<User> read() {  return userRepository.findAll();  }  public void update(User user) {  userRepository.save(user);  }  public void delete(String id) {  userRepository.deleteById(id);  }  
    }  
    
  • 实现搜索功能
    使用 QueryBuilders 构建查询,实现搜索功能。

    public List<User> searchByName(String name) {  QueryBuilder query = QueryBuilders.matchQuery(

相关文章:

  • C++栈与堆内存详解:Visual Studio实战指南
  • MyBatisPlus-QueryWrapper的exists方法拼接SQL中的EXISTS子句
  • Nginx | Apache 配置 WebSocket 多层代理基本知识(附疑难杂症)
  • 基于LightRAG进行本地RAG部署(包括单卡多卡本地模型部署、调用阿里云或DeepSeekAPI的部署方法、RAG使用方法)
  • 分布式存储数据恢复—hbase和hive数据库文件被删除如何恢复数据?
  • Layout 路由
  • Trea初体验:使用Trea从零到一创建一个项目,用来演示glog库的使用,一行代码没改完成了整个项目的搭建运行
  • 2843. 统计对称整数的数目
  • 【Pandas】pandas DataFrame xs
  • 全自动驾驶(FSD,Full Self-Driving)自动驾驶热点技术的成熟之处就是能判断道路修复修路,能自动利用类似“人眼”的摄像头进行驾驶!值得学习!
  • MYSQL “Too Many Connections“ 错误解决
  • 自动驾驶地图数据传输协议ADASIS v2
  • LCOV 使用文档
  • 制表符是什么?与.txt文件的关系?
  • 【JavaWeb】详细讲解 HTTP 协议
  • opencv函数展示2
  • 【力扣刷题】49字母异位词分组,不用哈希,c语言实现
  • 4.17---实现商铺和缓存与数据库双写一致以及宕机处理
  • 「电商玩法」AI自动创作系统源码:商品图+视频+营销文案一键生成
  • 八股文---MySQl(3)
  • 官方数据显示:我国心血管疾病患者已超3亿人
  • 英国知名歌手批政府:让AI公司免费使用艺术家作品是盗窃
  • “80后”北大硕士罗婕履新甘肃宁县县委常委、组织部部长
  • 秦洪看盘|风格有所转变,热钱回流高弹性品种
  • 新修订的《餐饮业促进和经营管理办法》公布,商务部解读
  • “走进书适圈”:一周城市生活