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

如何使用SolrJ获取Solr主从复制状态

使用SolrJ调用Solr复制API获取索引版本状态

核心实现思路

Solr的复制API(/replication)可通过SolrJ的SolrRequest类直接构造请求,无需依赖Core Admin或特定处理器,只需指定正确的请求路径和参数即可完成调用。

具体代码实现

1. 依赖准备

确保项目引入对应版本的SolrJ依赖(以Maven为例):

<dependency>
    <groupId>org.apache.solr</groupId>
    <artifactId>solr-solrj</artifactId>
    <version>你的Solr版本号</version>
</dependency>

2. 调用indexversion命令的代码示例

import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.SolrResponseBase;
import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.util.NamedList;

import java.io.IOException;

public class SolrReplicationChecker {
    public static void main(String[] args) {
        // 目标Solr Core的基础URL
        String solrCoreBaseUrl = "http://host:port/solr/core_name";
        
        // 自动管理SolrClient资源
        try (SolrClient solrClient = new HttpSolrClient.Builder(solrCoreBaseUrl).build()) {
            // 构造复制请求,指定请求路径为"/replication"
            SolrRequest<SolrResponseBase> replicationRequest = new SolrRequest<>(SolrRequest.METHOD.GET, "/replication");
            
            // 设置请求参数:command=indexversion
            ModifiableSolrParams params = new ModifiableSolrParams();
            params.set("command", "indexversion");
            replicationRequest.setParams(params);
            
            // 执行请求并解析响应
            SolrResponseBase response = solrClient.request(replicationRequest);
            NamedList<Object> responseData = response.getResponse();
            
            String indexVersion = responseData.get("indexVersion").toString();
            String requestStatus = responseData.get("status").toString();
            
            System.out.println("当前节点索引版本: " + indexVersion);
            System.out.println("请求状态: " + requestStatus);
            
            // 对比主从复制状态:分别调用主、从节点的API,若版本号一致则同步完成,否则存在延迟
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

关键说明

  • 请求路径:必须指定为/replication,这是Solr复制处理器的默认路径,无需额外配置。
  • 参数扩展:若需要获取更详细的复制状态(如从节点同步进度、主节点配置),可将command参数替换为details,解析响应中的更多字段即可。
  • 状态判断:主从节点的indexVersion一致,说明复制同步完成;版本不一致则表示存在同步延迟或未同步状态。

内容的提问来源于stack exchange,提问作者Puneet

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 08:12:47