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:Expected mime type application/octet-stream but got text/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
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";
错误代码将导致上述错误。