基于Java配置整合Spring Boot与Spring Data Solr 3.0.6的问题
配置Spring Boot整合远程Solr服务器(Java配置方式)
我懂你纠结的点——官方文档只给了嵌入式Solr的配置示例,但实际项目里大多用的是远程Solr服务器对吧?别慌,下面给你两种常用场景的完整Java配置方案,直接就能用:
1. 先确认依赖(必做)
不管哪种配置,先确保你的项目里引入了Spring Data Solr Starter:
如果用Maven,在pom.xml里加:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-solr</artifactId> </dependency>
2. 单节点远程Solr配置
这是最常用的场景,连接单独部署的Solr服务:
@Configuration @EnableSolrRepositories(basePackages = "com.tutorial.demo.repositories") @ComponentScan(basePackages = "com.tutorial.demo") public class SolrConfig { // 从配置文件读Solr地址,方便后续修改 @Value("${spring.data.solr.host:http://localhost:8983/solr}") private String solrHost; @Bean public SolrClient solrClient() { // 用HttpSolrClient连接远程单节点Solr return new HttpSolrClient.Builder(solrHost).build(); } @Bean public SolrTemplate solrTemplate(SolrClient solrClient) { return new SolrTemplate(solrClient); } }
3. SolrCloud集群配置(如果用集群模式)
如果你的Solr是集群部署,改用CloudSolrClient:
@Configuration @EnableSolrRepositories(basePackages = "com.tutorial.demo.repositories") @ComponentScan(basePackages = "com.tutorial.demo") public class SolrCloudConfig { @Value("${spring.data.solr.zk-host:localhost:2181}") private String zkHost; @Bean public SolrClient solrClient() { CloudSolrClient solrClient = new CloudSolrClient.Builder(List.of(zkHost), Optional.empty()).build(); // 设置默认操作的collection,也可以在Repository里单独指定 solrClient.setDefaultCollection("your_default_collection"); return solrClient; } @Bean public SolrTemplate solrTemplate(SolrClient solrClient) { return new SolrTemplate(solrClient); } }
4. 配套的Repository和实体类示例
配置完客户端,还得写对应的Repository和实体类才能用:
Repository接口
public interface ProductSolrRepository extends SolrCrudRepository<Product, String> { // Spring Data会自动实现自定义查询 List<Product> findByNameContaining(String name); }
实体类
@SolrDocument(collection = "products") public class Product { @Id @Field private String id; @Field private String name; // getter、setter按需添加 }
5. 可选:把配置参数放到application.properties
把Solr地址等参数抽出来,不用改代码就能调整:
# 单节点Solr配置 spring.data.solr.host=http://localhost:8983/solr # 或者SolrCloud集群配置 # spring.data.solr.zk-host=localhost:2181 # spring.data.solr.default-collection=products
最后提个小注意点:确保你的Solr服务已经启动,并且对应的collection已经提前创建好哦~
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

