Solr Realtime获取RemoteSolrException:预期的mime类型application / xml但是得到了text / html

时间:2014-06-06 20:01:19

标签: solr lucene solrj

远程服务器上的Solr版本:solr-4.3.1 我试图在提交之前使用Solr Realtime Get来检索文档。我的代码

class Test3
{    
  static main(args) 
  {
    def test = new Test3()
    test.run()
  }

  private run() 
  {
    String url = "DEV_SERVER:8983/solr/emr"

    HttpSolrServer solr = new HttpSolrServer(url)

    SolrQuery q = new SolrQuery();
    q.setRequestHandler("/get");
    q.set("rid", "6662c0f2.ee6a64fe.588j6qohe.9kd087u.0r00dg.6kr5pc2as0qu9m4ibr7f7");

    QueryRequest req = new QueryRequest(q);
    req.setResponseParser(new BinraryResponseParser());

    println "=============================================="
    rsp = req.process(solr);    // ERROR
  }    
}

错误堆栈跟踪是:

Caught: org.apache.solr.client.solrj.impl.HttpSolrServer$RemoteSolrException: Expected mime type application/octet-stream but got
text/html. <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>Error 404 Not Found</title>
</head>
<body><h2>HTTP ERROR 404</h2>
<p>Problem accessing /solr/emr/get. Reason:
<pre>    Not Found</pre></p><hr /><i><small>Powered by Jetty://</small></i><br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>

</body>
</html>

org.apache.solr.client.solrj.impl.HttpSolrServer$RemoteSolrException: Expected mime type application/octet-stream but got text/htm
l. <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>Error 404 Not Found</title>
</head>
<body><h2>HTTP ERROR 404</h2>
<p>Problem accessing /solr/emr/get. Reason:
<pre>    Not Found</pre></p><hr /><i><small>Powered by Jetty://</small></i><br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>

</body>
</html>

        at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:459)
        at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:199)
        at org.apache.solr.client.solrj.request.QueryRequest.process(QueryRequest.java:91)
        at org.apache.solr.client.solrj.request.QueryRequest$process.call(Unknown Source)
        at com.att.songtao.test.Test3.run(Test3.groovy:48)
        at com.att.songtao.test.Test3.this$2$run(Test3.groovy)
        at com.att.songtao.test.Test3$this$2$run.call(Unknown Source)
        at com.att.songtao.test.Test3.main(Test3.groovy:14)

我正在关注Realtime Get文档,并在updateLog中将updateHandler添加到solrconfig.xml。我的localhost "localhost:8983/solr/collection1"(版本solr-4.7.2)Realtime Get工作正常,但在远程服务器上使用它会抛出上述错误。

任何人都可以提供见解?

谢谢,

3 个答案:

答案 0 :(得分:1)

如果您指定的集合名称或Solr URL的配置文件不正确,则通常会出现此类错误。就我而言,我的属性文件缺少我正在搜索的集合的属性。

答案 1 :(得分:0)

你回来了404。看起来您没有启用ReplicationHandler。您可以将其添加到solrconfig.xml文件中,看看问题是否消失

<requestHandler name="/get" class="solr.RealTimeGetHandler"> 
     <lst name="defaults"> 
       <str name="omitHeader">true</str> 
       <str name="wt">json</str> 
       <str name="indent">true</str> 
     </lst> 
</requestHandler>

答案 2 :(得分:0)

此错误可能是由于服务器连接造成的。您在系统中安装的服务器意味着Tomcat或Jetty等。

当您尝试在Solr上搜索索引时,基本上您的服务器配置不正确并拒绝您的连接。

验证您的服务器连接:

对于Tomcat执行给定语句 -

http://Your_Ip:8080/solr

并且,如果服务器连接失败,请验证您使用的服务器。