获取当前solr.xml中register的所有coreName

有时候需要通过对solr实例URL的一次http访问,获得该实例当前register的存活core,实现方法如下:

  1. public static List<String> GetShardsList(String serverName) {   
  2.     List<String> shardlist = new ArrayList<String>();   
  3.     //http://localhost:8080/solr   
  4.     HttpSolrServer server = new HttpSolrServer(serverName);   
  5.     server.setConnectionTimeout(1000);   
  6.     server.setDefaultMaxConnectionsPerHost(100);   
  7.     server.setMaxTotalConnections(100);   
  8.     server.setRequestWriter(new BinaryRequestWriter());   
  9.     // Get Shards   
  10.     SolrQuery solrQuery = new SolrQuery();   
  11.     solrQuery.setParam(CommonParams.QT, “/admin/cores”);   
  12.     solrQuery.setParam(CoreAdminParams.ACTION, CoreAdminParams.CoreAdminAction.STATUS.name));   
  13.     QueryResponse ds = null;   
  14.     try {   
  15.         ds = server.query(solrQuery);   
  16.     } catch (SolrServerException e1) {   
  17.         // TODO Auto-generated catch block   
  18.         e1.printStackTrace();   
  19.     }   
  20.     NamedList<NamedList<Object>> ctLst = (NamedList<NamedList<Object>>)ds.getResponse().get(“status”);// 得到响应的头信息   
  21.     for (int i = 0; i < ctLst.size(); i++) {   
  22.         NamedList<Object> sap = ctLst.getVal(i);   
  23.         shardlist.add(sap.get(“name”).toString());   
  24.     }   
  25.     return shardlist;   
  26. }  

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>