首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用SolrJ获取solr服务器中所有核心的列表

如何使用SolrJ获取solr服务器中所有核心的列表
EN

Stack Overflow用户
提问于 2011-07-13 01:37:18
回答 3查看 18.7K关注 0票数 18

我们正在使用Solr进行搜索,并跨多个核心对数据进行分片。我们每周有一个核心数据,因此我们每周动态创建和删除核心。

如何查询solr服务器以获得其所有核心的列表?JavaDoc说我可以使用coreAdminHandler.getCoreContainer().getCoreNames(),但我不确定如何构建coreAdminHandler对象。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-13 01:49:42

http://localhost:8983/solr/admin/cores?action=STATUS的请求(当然是更换您自己的主机/端口)将返回所有内核。

票数 25
EN

Stack Overflow用户

发布于 2012-04-06 20:50:02

按照您的要求使用SolrJ,以下是我是如何做到的:

代码语言:javascript
复制
// Solr server instance
CommonsHttpSolrServer solrServer = ...;

// Request core list
CoreAdminRequest request = new CoreAdminRequest();
request.setAction(CoreAdminAction.STATUS);
CoreAdminResponse cores = request.process(solrServer);

// List of the cores
List<String> coreList = new ArrayList<String>();
for (int i = 0; i < cores.getCoreStatus().size(); i++) {
    coreList.add(cores.getCoreStatus().getName(i));
}
票数 21
EN

Stack Overflow用户

发布于 2016-09-17 13:00:45

只需在上面的代码示例中添加一个更新,因为自Solr 4以来已经弃用了几个位。以下代码在Solr 6.1.0上工作。

代码语言:javascript
复制
package <...>.<...>.<...>;    

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;    

import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.request.CoreAdminRequest;
import org.apache.solr.client.solrj.response.CoreAdminResponse;
import org.apache.solr.common.params.CoreAdminParams.CoreAdminAction;    

public class GetCores {
    static String SOLR_URL = "http://...:8983/solr/";    

    public static void getCores() {
        System.out.println("Building Solr server instance");
        HttpSolrClient solrClient=new HttpSolrClient.Builder(SOLR_URL).build();    

        System.out.println("Requesting core list"); 
        CoreAdminRequest request = new CoreAdminRequest();
        request.setAction(CoreAdminAction.STATUS);
        CoreAdminResponse cores=null;

        try {
            cores = request.process(solrClient);
        } catch (SolrServerException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println(" Listing cores");
        List<String> coreList = new ArrayList<String>();
        for (int i = 0; i < cores.getCoreStatus().size(); i++) {
            coreList.add(cores.getCoreStatus().getName(i));
        }

        System.out.println(coreList.get(0)+" is the first core");    
    }       
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6668534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档