环境准备
- 安装 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.properties
或 application.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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论