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

ben*_*hsu 16 java solr solrj

我们使用Solr进行搜索,并将数据分片到多个核心.我们每周有一个核心数据,因此我们每周都会动态创建和删除核心.

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

Mau*_*fer 22

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

  • 首先,这不是 SolrJ。此外,作为文本响应,您可以获得的最好的是每个核心的 **name**,而不是 `SolrCore` 的实例。 (2认同)

Mat*_*oli 20

按照你的要求使用SolrJ,这是我的做法:

// 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));
}
Run Code Online (Sandbox Code Playgroud)