使用SolrJ索引Solr数据时遇405错误,寻求解决方案
解决SolrJ索引时的405错误与MIME类型不匹配问题
嘿,这个问题我太熟悉了!你遇到的405 HTTP POST method is not supported和MIME类型不匹配错误,根源其实出在你配置的Solr服务器URL上——你把浏览器管理界面的URL直接拿来给SolrJ用了,里面的#是关键问题!
为什么会报错?
浏览器地址栏里的http://localhost:8983/solr/#/corename中,#是前端路由的锚点标记,当你用这个URL发送请求时,服务器实际收到的路径是/solr/,而这个路径只支持GET请求(用来返回管理界面),不接受POST请求,自然就会返回405错误,同时返回的是HTML页面(管理界面的内容),而不是SolrJ期望的二进制流,所以才会有Expected mime type application/octet-stream but got text/html的提示。
怎么解决?
只需要把URL里的#去掉,改成Solr API的正确路径:
- 错误URL:
http://localhost:8983/solr/#/corename - 正确URL:
http://localhost:8983/solr/corename
举个SolrJ初始化的代码例子,修正前可能是这样:
HttpSolrClient client = new HttpSolrClient.Builder("http://localhost:8983/solr/#/corename").build();
修正后改成:
HttpSolrClient client = new HttpSolrClient.Builder("http://localhost:8983/solr/corename").build();
额外验证步骤
如果你还不确定,可以用curl命令测试一下正确的URL是否能接受POST请求:
curl -X POST http://localhost:8983/solr/corename/update -d '[{"id":"test_doc_1"}]' -H 'Content-Type: application/json'
如果返回类似{"responseHeader":{"status":0,"QTime":1}}的响应,说明URL没问题,再用SolrJ重试应该就正常了。
内容的提问来源于stack exchange,提问作者Dilak
相关产品推荐
相关产品推荐

