solrconfig.xml中更改后SolrJ中的异常

时间:2012-10-26 11:22:34

标签: java solr solrj

SO !这是我的第一个问题,所以要善良;)

我一直在与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>

..而不是默认..

<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的内容...

提前致谢!

1 个答案:

答案 0 :(得分:0)

我一直在查看HttpSolrServer上可用的方法以及SolrJ库中SolrServer上的各种add方法,不幸的是,我没有看到任何可以覆盖的地方或在SolrJ中为updateHandler指定其他名称。它假定它可以通过http://HOST:PORT/solr/update

获得