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