2013-04-24 118 views
2

我試圖通過我的java應用程序在具有兩個碎片的solr雲中動態創建核心。solr雲中創建Solr核心(solr 4.1.0)

CloudSolrServer cloudSolrServer = new CloudSolrServer("localhost:9983", new LBHttpSolrServer ("http://localhost:8983/solr")); 
CoreAdminRequest.Create req = new CoreAdminRequest.Create() { 

     private static final long serialVersionUID = -8825247378713661625L; 

      @Override public SolrParams getParams() { 
      ModifiableSolrParams modifiableSolrParams =  (ModifiableSolrParams) super.getParams(); 
      modifiableSolrParams.set("collection.configName", "mycore"); 
      return modifiableSolrParams; 
      } 
     }; 

req.setInstanceDir("/solr/master/mycorepath"); 
req.setCollection("mycore"); 

CoreAdminResponse res = req.process(cloudSolrServer.getLbServer()); 

但是我得到的錯誤: 指定配置中的ZooKeeper不存在:mycore

當我在Solr管理控制檯檢查我發現集「mycore」沒有完全建立[即它沒有文件夾符號],並且沒有名稱爲「mycore」的配置。

我該如何解決這個問題。在2個分片solr雲(solr 4.1.0)中動態創建核心的標準方式是什麼?

回答

0

我也在使用Solr 4.1.0,並且在創建內核時遇到了一些麻煩。我只使用一個碎片,但我回答here.

1

我已經成功地創建集合使用集合API

CloudSolrServer cs = new CloudSolrServer("localhost:9983"); 

CollectionAdminResponse res=CollectionAdminRequest.createCollection("testCollection", 2, 1, 1, "127.0.1.1:7574_solr,127.0.1.1:8983_solr", "myconf", null, cs); 

這將創建一個有兩個碎片,並沒有副本solr4.4沿着類似的路線另一個問題使用compositeID路由器收集

myconf是在集羣啓動期間上載到動物園飼養員的配置名稱。