当前位置: 代码网 > it编程>编程语言>Java > Spring Boot 集成 Solr 的详细示例

Spring Boot 集成 Solr 的详细示例

2025年05月20日 Java 我要评论
环境准备安装 solr :从 solr 官网(welcome to apache solr - apache solr)下载并安装最新版本,然后通过命令 bin/solr start 启动 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/solr
      core: 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
    @field
    private string id;
    @field
    private string name;
    @field
    private string description;
    @field
    private 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 {
    @autowired
    private 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 {
    @autowired
    private productservice productservice;
    @postmapping
    public 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

到此这篇关于spring boot 集成 solr 的详细示例的文章就介绍到这了,更多相关spring boot 集成 solr内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com