2014-06-18 61 views
0

我在使用Datastax Enterprise和DSE Search(Cassandra上的SolR)編寫應用程序。Datastax DSE搜索:如何使用java發佈solrconfig.xml和schema.xml?

我的問題是我需要生成schema.xml並使用Java動態發送到SolR solrconfig.xml和schema.xml。不使用捲曲。

我試過使用Commons HttpComponents,但插入到cassandra表中的solrconfig.xml文件不正確。在XML文件的開始之前插入Http相關數據,如下所示:

��: 
solr_adminsolr_resourcesresource_value��--9NDJNu2AW4jtIyX6ggQAgEqI3FXp3JpDZ6 
Content-Disposition: form-data; name="solrconfig.xml"; filename="solrconfig.xml" 
Content-Type: application/xml; charset=ISO-8859-1 
Content-Transfer-Encoding: binary 

<config> 
<!-- In all configuration below, a prefix of "solr." for class names 
    is an alias that causes solr to search appropriate packages, 
    including org.apache.solr.(search|update|request|core|analysis) 

[Continued...] 

當然,當SolR嘗試讀取此配置時,它會失敗。

有人知道如何正確地將這兩個文件以編程方式從java發送到SolR嗎?

在此先感謝您的答案。

+0

使用HttpClient不起作用(從cassandra blob中讀取)。 使用SolrJ創建核心不起作用(抱怨丟失的文件)。 ContentStream請求失敗,出現500錯誤 HttpSolrServer server = new HttpSolrServer(solrUrl); ContentStreamUpdateRequest req = new ContentStreamUpdateRequest(「/ resources /」+ solrKeyspace +「。」+ datasetName +「/」); req.addContentStream(new ContentStreamBase.FileStream(new File(「solrconfig.xml」))); server.request(req); server.commit(); 返回的非正常狀態:500,消息:內部服務器錯誤 – fesnault

回答

0

我終於找到了辦法。 我看着Solandra測試,並發現他們如何將文件發送到solr。

  URL url = new URL("http://hostname:port/solr/resource/solrksname.tablename/schema.xml"); 

     // write 
     try { 

      HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
      conn.setDoOutput(true); 
      OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
      wr.write(builder.toString()); 
      wr.flush(); 
      wr.close(); 

      System.out.println("Schema insert response code : " + conn.getResponseCode()); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

和響應代碼是200,檢查返回正確的模式,在Solr管理沒有錯誤,並沒有錯誤,同時創造Solr的核心。不知道我第一次做錯了,方式是使用基本的HttpURLConnection和流數據與輸出流編寫器。無需HttpCommons。

0

使用HttpClient的HTTP Post應該可以工作。也許schema.xml文件指的是需要上傳的其他文件。你能檢查DSE system.log嗎?您可以驗證HTTP Post是否與另一個schema.xml文件一起工作?

+0

沒有對schema.xml中的任何文件的引用。解釋文件時,這不是問題,只是解析器停在第一行,因爲文件不正確。你可以分享一個代碼示例將schema和solrconfig上傳到DSE搜索中嗎? (也許一段代碼加載模式或solrconfig文件blob在卡桑德拉表? – fesnault