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

Spring Boot 集成 Solr 的详细步骤及示例

环境准备

  • 安装 Solr :从 Solr 官网(Welcome to Apache Solr - Apache Solr)下载并安装最新版本,然后通过命令 bin/solr start 启动 Solr 服务,使用 bin/solr create -c mycore 创建一个新的 Solr 核心。

  • 安装 JDK :确保安装了 JDK 8 及以上版本。

  • 配置 Maven :以 Maven 作为项目构建工具,创建 Spring Boot 项目。

添加依赖

在 Spring Boot 项目的 pom.xml 文件中添加以下依赖:

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

此依赖会自动配置 Spring Data Solr 的相关组件,包括 Solr 客户端和 Spring Solr 支持。

配置 Solr 连接

application.propertiesapplication.yml 文件中添加 Solr 的连接配置,示例如下:

  • application.properties

    spring.data.solr.host=http://localhost:8983/solr
    spring.data.solr.core=mycore
  • application.yml

    spring:data:solr:host: http://localhost:8983/solrcore: mycore

    定义实体类

    创建一个实体类用于映射 Solr 中的文档,示例如下:

    package cn.juwatech.model;import org.apache.solr.client.solrj.beans.Field;
    import org.springframework.data.annotation.Id;
    import org.springframework.data.solr.core.mapping.SolrDocument;@SolrDocument(collection = "mycore")
    public class Product {@Id@Fieldprivate String id;@Fieldprivate String name;@Fieldprivate String description;@Fieldprivate double price;// Getters and Setters
    }

    其中,@SolrDocument(collection = "mycore") 指定了 Solr 的核心名称,@Field 注解用于将实体类的字段映射到 Solr 文档的字段。

    编写 Repository 接口

    创建一个继承自 SolrCrudRepository 的接口来操作 Solr 中的数据,示例如下:

    package cn.juwatech.repository;import cn.juwatech.model.Product;
    import org.springframework.data.solr.repository.SolrCrudRepository;import java.util.List;public interface ProductRepository extends SolrCrudRepository<Product, String> {List<Product> findByNameContaining(String name);
    }

    通过继承 SolrCrudRepository 接口,可方便地进行文档的增删改查操作,findByNameContaining 方法可用于按名称模糊查询。

    创建 Service 与 Controller

  • 创建 Service :封装业务逻辑,示例如下:

    package cn.juwatech.service;import cn.juwatech.model.Product;
    import cn.juwatech.repository.ProductRepository;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;import java.util.List;@Service
    public class ProductService {@Autowiredprivate ProductRepository productRepository;public void saveProduct(Product product) {productRepository.save(product);}public List<Product> searchByName(String name) {return productRepository.findByNameContaining(name);}public void deleteProduct(String id) {productRepository.deleteById(id);}
    }
  • 创建 Controller :处理 HTTP 请求,示例如下:

    package cn.juwatech.controller;import cn.juwatech.model.Product;
    import cn.juwatech.service.ProductService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
    @RequestMapping("/products")
    public class ProductController {@Autowiredprivate ProductService productService;@PostMappingpublic void addProduct(@RequestBody Product product) {productService.saveProduct(product);}@GetMapping("/search")public List<Product> searchProducts(@RequestParam String name) {return productService.searchByName(name);}@DeleteMapping("/{id}")public void deleteProduct(@PathVariable String id) {productService.deleteProduct(id);}
    }

    示例运行与测试

  • 添加产品 :启动 Spring Boot 应用后,发送 POST 请求添加产品,如使用 curl 命令:

    curl -X POST -H "Content-Type: application/json" -d '{"id":"1","name":"Laptop","description":"High performance laptop","price":1000}' http://localhost:8080/products
  • 搜索产品 :发送 GET 请求搜索产品:

    curl http://localhost:8080/products/search?name=Laptop
  • 删除产品 :发送 DELETE 请求删除产品:

    curl -X DELETE http://localhost:8080/products/1

http://www.xdnf.cn/news/286129.html

相关文章:

  • C# WPF 布局
  • 算法笔记.约数个数
  • 基于muduo库实现高并发服务器
  • Nginx核心功能2
  • Linux:权限的理解
  • 健康养生:从生活点滴启航
  • 解决pycharm检测不到已经装好的conda的pytorch环境
  • 项目成本管理_挣得进度ES
  • 网络:cookie和session
  • 【硬核攻坚】告别CUDA OOM!DeepSeek部署显存瓶颈终极解决方案:三大策略高效落地
  • [特殊字符]Git 操作实战:如何将本地项目提交到远程 Gitee 仓库
  • RocketMQ与Kafka的区别
  • Nuxt3还能用吗?
  • 直方图反向投影
  • Three.js + React 实战系列 - 项目展示区开发详解 Projects 组件(3D 模型 + 动效 + 状态切换)✨
  • android-ndk开发(2): macOS 安装 ndk
  • PyTorch_自动微分模块
  • 时间同步服务核心知识笔记:原理、配置与故障排除
  • 因为gromacs必须安装cuda(系统自带的NVIDIA驱动不行),这里介绍下如何安装cuda
  • 学习路线(机器人软件架构)
  • Java常用注解大全(基于JDK17+SpringBoot3)
  • 对ubuntu的简单介绍
  • Redis:现代服务端开发的缓存基石与电商实践-优雅草卓伊凡
  • 题目 3321: 蓝桥杯2025年第十六届省赛真题-画展布置
  • SpringMVC 框架核心知识点详解与实战
  • 精益数据分析(41/126):深入解读移动应用商业模式的关键指标与策略
  • linux 高并发 文件句柄数 fs 及 tcp端口数调优
  • 泉州2025年首次网签备案登记的商品住宅并在本年度进行装修、改造及家装物品和材料购置的,在上述补贴额度的基础上上浮2万元,单个产权人补贴最高不超过5万元。
  • VScode中关于Copilot的骚操作
  • ByteArrayOutputStream 类详解