2012-10-26 55 views
1

SO!這是我的第一個問題,所以要種;)solrconfig.xml中SolrJ更改後的異常

我一直使用Solr和我最近發現它有 幾乎 沒有安全性可言.. 所以在瀏覽器中,你可以寫 http://HOST:PORT/solr/update?stream.body=<delete><query>*:*</query></delete>&commit=true 並輕而易舉地刪除我的索引。

閱讀Solr wiki我編輯了我的solrconfig.xml文件,添加了自己的RequestHandler以進行更新。

<requestHandler name="/theupdate" 
    class="solr.XmlUpdateRequestHandler"> 
</requestHandler> 

默認的..instead ..

<requestHandler name="/update" 
    class="solr.XmlUpdateRequestHandler"> 
</requestHandler> 

,現在我將文檔集合到服務器時獲得此異常(前提交)。

org.apache.solr.client.solrj.SolrServerException: Server at http://HOST:PORT/solr returned non ok status:400, message:Missing solr core name in path 
    at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:328) 
    at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:211) 
    at org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractUpdateRequest.java:105) 
    at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:69) 
    at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:54) 

這是我的索引代碼:

SolrServer server = new HttpSolrServer("http://HOST:PORT/solr"); 
Collection<SolrInputDocument> colection = new ArrayList<SolrInputDocument>(); 
SolrInputDocument solrDoc = new SolrInputDocument(); 
OracleCachedRowSet rsX = getDataFromDB(); // not actual line 
while (rsX.next()) { 
    solrDoc.addField("id", rsX.getLong(1), 1.0f); 
    solrDoc.addField("name", rsX.getString(2), 1.0f); 
    colection.add(solrDoc); 
} 
server.add(colection); //<-- the exception is thrown here! 
server.commit(); 
colection.clear(); 

注:我讀了一些關於通過防火牆和/或基本身份驗證在servlet容器我工作太保護Solr的.. 。

在此先感謝!

回答

0

我一直在尋找通過對HttpSolrServer可用的方法,並在SolrJ庫中的各種add方法上SolrServer不幸的是,我沒有看到,你可以覆蓋或SolrJ爲updateHandler指定一個不同名稱的任何地方。它假設它將通過http://HOST:PORT/solr/update

+0

這是快!我認爲,如果我無法解決這個問題,我將不得不採取防火牆/認證aproach ..謝謝! – Nefreo