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(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跟着汪老师学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值