这也是我前段时间所学的,今天整理下发出来
1首先,我们先创建一个项目出来
这个就不用我来演示把,最基本的
2打开你solr服务器
1.1找到你solr安装程序bin目录那里
1.2选中后敲cmd回车弹出控制面板。在里面输出命令 solr.cmd start. 一定要注意命令之间的
间距
默认端口是8983. 重启服务的指令solr.cmd restart -p 8983
启动完成后就可以开始我们项目了
1.3首先建完项目后大致上是这样的
1.4在我们的实体类中写几个参数,因为这里我偷懒了,只写了两个,
package com.xiaogan.springbootsolr.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.solr.client.solrj.beans.Field;
/**
* 作者: XiaoGan
* 时间: 2020/8/26 19:14
* 描述:
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Product {
@Field
private String id;
@Field
private String name;
}
这里你的id和name一定要和你solr配置的一样,其它参数也是
1.5差点忘记了,导个pom依赖把
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.3.0.RELEASE</spring-boot.version>
</properties>
<dependencies>
<!--springBoot核心依赖,捉供了核心功能-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!--引入web starter启动器 常见的场景-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--solr-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-solr</artifactId>
</dependency>
<!-- 默认 starter 会加载 solrj 进来, 下面这个可不引-->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-solr</artifactId>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
<scope>provided</scope>
</dependency>
<!--junit测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
1.6接下来是yml文件配置
spring:
data:
solr:
host: http://localhost:8983/solr/new_core
接下来就是你的控制层
package com.xiaogan.springbootsolr.contrller;
import com.xiaogan.springbootsolr.entity.Product;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrDocument;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
/**
* 作者: XiaoGan
* 时间: 2020/9/1 22:17
* 描述:
*/
@RestController
public class UserController {
@Autowired
private SolrClient solrClient;
/**
*查询
* @throws IOException
* @throws SolrServerException
*/
@RequestMapping("/selectId")
public void selectId() throws IOException, SolrServerException {
SolrDocument solrDocument = solrClient.getById("1001");
Product bean = solrClient.getBinder().getBean(Product.class, solrDocument);
System.out.println("bean =" + bean);
}
/**
* 删除
* @throws IOException
* @throws SolrServerException
*/
@RequestMapping("/deleteId")
public void deleteId() throws IOException, SolrServerException {
UpdateResponse updateResponse = solrClient.deleteById("1001");
solrClient.commit();
int status = updateResponse.getStatus();
System.out.println("status = " + status);
}
/**
* 添加
* @throws IOException
* @throws SolrServerException
*/
@RequestMapping("testId")
public void testAddProductDocument1() throws IOException, SolrServerException {
Product product = new Product().builder()
.id("1001")
.name("某某的劳斯莱斯")
.build();
UpdateResponse updateResponse =solrClient.addBean(product);
solrClient.commit();
int status = updateResponse.getStatus();
System.out.println("status = " + status);
updateResponse = solrClient.addBean(product);
}
/**
* 修改
*/
@RequestMapping("updateId")
public void updateId() throws IOException, SolrServerException {
Product product = new Product().builder()
.id("1002")
.name("某某的劳斯莱斯")
.build();
UpdateResponse updateResponse =solrClient.addBean(product);
solrClient.commit();
int status = updateResponse.getStatus();
System.out.println("status = " + status);
updateResponse = solrClient.addBean(product);
}
}
我这个因为写的还是挺简单的,你们接下来一个个测试就行了,
也没啥东西,今天这个就到此结束了