【solr專題之三】Solr常見異常
阿新 • • 發佈:2019-01-26
1、RemoteSolrException: Expected mime type application/octet-stream but got text/html
現象:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" org.apache.solr.client.solrj.impl.HttpSolrServer$RemoteSolrException
at org.apache.solr.client.solrj.impl.HttpSolrServer.executeMethod(HttpSolrServer.java:516)
at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:210)
at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:206)
at org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractUpdateRequest.java:124)
at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:116)
at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:102)
at org.ljh.test.solr.BasicSolrJIndexDemo.main(BasicSolrJIndexDemo.java:23)
分析:
由於各種錯誤導致了solr返回一個錯誤頁面,而不是index成功的結果,因此出現以上異常。
其中上述html程式碼格式化後呈現:
HTTP Status 405 - HTTP method POST is not supported by this URL
type Status report
message HTTP method POST is not supported by this URL
description The specified HTTP method is not allowed for the requested resource.
Apache Tomcat/7.0.54
在使用Tomcat部署Solr後,Collection1的地址為:http://ip:8080/solr/#/collection1,但使用SolrJ進行索引的時候,應該使用http://ip:8080/solr/collection1,即無中間的#號。
即正確程式碼為:
String serverUrl = (args != null && args.length > 0) ? args[0]
: "http://ip:8080/solr/collection1";
錯誤程式碼為:
String serverUrl = (args != null && args.length > 0) ? args[0]
: "http://ip:8080/solr/#/collection1";
錯誤程式碼將導致上述錯誤。