You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:44:07