Solr
Apache Solr是一个搜索引擎。Spring Boot为Solr 5客户端library提供基本的自动配置,Spring Data Solr提供了在它之上的抽象,还有用于收集依赖的spring-boot-starter-data-solr’Starter’。

连接Solr
你可以注入一个自动配置的SolrClient实例,就像其他Spring beans那样,该实例默认使用localhost:8983/solr连接Solr服务器:
1@Component
2public class MyBean {
3 private SolrClient solr;
4 @Autowired
5 public MyBean(SolrClient solr) {
6 this.solr = solr;
7 }
8 // ...
9}
如果你添加自己的SolrClient类型的@Bean,它将会替换默认实例。
Spring Data Solr仓库
Spring Data包含的仓库也支持Apache Solr,正如先前讨论的JPA仓库,基于方法名自动创建查询是基本的原则。
实际上,不管是Spring Data JPA还是Spring Data Solr都共享相同的基础设施。所以你可以使用先前的JPA示例,并假设那个City现在是一个@SolrDocument类而不是JPA @Entity,它将以同样的方式工作。
Spring Data Solr入门小Demo
搭建工程
创建maven工程,pom.xml中引入依赖
1<parent>
2 <groupId>org.springframework.boot</groupId>
3 <artifactId>spring-boot-starter-parent</artifactId>
4 <version>1.5.2.RELEASE</version>
5 </parent>
6 <properties>
7 <spring.data.solr.version>2.1.1.RELEASE</spring.data.solr.version>
8 </properties>
9 <dependencyManagement>
10 <dependencies>
11 <dependency>
12 <groupId>org.springframework.data</groupId>
13 <artifactId>spring-data-solr</artifactId>
14 <version>${spring.data.solr.version}</version>
15 </dependency>
16 </dependencies>
17 </dependencyManagement>
18 <dependencies>
19 <!--添加Web依赖, 使项目变成web项目-->
20 <dependency>
21 <groupId>org.springframework.boot</groupId>
22 <artifactId>spring-boot-starter-web</artifactId>
23 </dependency>
24 <dependency>
25 <groupId>org.springframework.data</groupId>
26 <artifactId>spring-data-solr</artifactId>
27 </dependency>
28 <!--test-->
29 <dependency>
30 <groupId>org.springframework.boot</groupId>
31 <artifactId>spring-boot-starter-test</artifactId>
32 </dependency>
33 </dependencies>
SpringBoot 快速启动
1@SpringBootApplication
2@EnableAutoConfiguration
3public class AppMain {
4 public static void main(String[] args) {
5 SpringApplication.run(AppMain.class, args);
6 }
7}
可能遇见的问题:
- 一般spring-boot项目的启动类都放在项目的根路径下, 这样可以不用配置@ComponentScan注解来扫描相应的类, 如果遇到无法读取配置类属性的情况, 首先考虑这个因素
在resources下新建application.properties, 完成solr的基本配置
1spring.data.solr.host=http://127.0.0.1:8983/solr
这个属性配置的是solr服务器的访问地址, 因为本项目是作为客户端来访问solr服务器, 所以不用做更多的配置
这个属性是是通过@ConfigurationProperties("spring.data.solr")读取出来的, 默认被读取到 SolrProperties.class 中 详情请使用类查找器查看该类
1@RestController
2public class SolrController {
3 @Autowired
4 private SolrClient client;
5 @RequestMapping("/")
6 public String testSolr() throws IOException, SolrServerException {
7 SolrDocument document = client.getById("test", "fe7a5124-d75b-40b2-93fe-5555512ea6d2");
8 System.out.println(document);
9 return document.toString();
10 }
11}
1SolrDocument{goodsId=[129831], id=fe7a5124-d75b-40b2-93fe-5555512ea6d2, _version_=1562570354094768128}