Solr---查询不出结果,异常:org.apache.solr.client.solrj.SolrServerException: IOException occured when

原地址:https://www.cnblogs.com/mecca/p/3922455.html

场景描述:

        在按照我自己的遇到的问题在网上找解决办法时,偶然发现一篇很有意义的文章,并且按照他的描述非常符合实际效果。Solrj的query(SolrParams params)方法,查询按照默认的GET方法,可以在debug中查看到确实是按照GET方法将参数放到后缀中,解决办法是使用query(SolrParams params, SolrRequest.METHOD method),第二个参数为提交的方式。虽然我还未遇到这个问题,如果按照文章的来参数过长则会发生该问题。所以也当做提前做预防了。

更改前:

SolrQuery query = new SolrQuery();
...
QueryResponse rq = cloudSolrClient.query(query);

更改后:

SolrQuery query = new SolrQuery();
...
QueryResponse rq = cloudSolrClient.query(query, SolrRequest.METHOD.POST);

文章原文:

        最近做项目用solr,之前使用的时候没怎么注意,每次都是直接使用solrServer.query(SolrQuery);使用测试查询表达式什么问题都没有遇到过,等到上线后,产品发现他们的表达式一查就空白的,去后台看下发现报错了:
  org.apache.solr.client.solrj.SolrServerException: IOException occured when talking to server at: http:192.168.0.11/solr/,有时候还报 执行query错误,开始以为表达式错误,各种比对,main方法测试,Junit测试,各种不行,都是同一个错!当时愁怀我了,整整弄了一天,后来怕耽误工期,先整其他的,一个半小时以后,整完回头拿老大的代码看了下,原来一直没有发现,在一个不起眼的地方,老大使用的是solrServer.query(SolrQuery,METHOD.POST);恍然大悟,GET方式的时候所有查询条件都是拼装到url上边的,url过长当然没有响应,必然中断talking了,额……一天,就这么白白浪费了,当然也不能说浪费,涨姿势了啊,印象深刻。希望童鞋们使用时注意!

猜你喜欢

转载自blog.csdn.net/HenryMrZ/article/details/80993681
今日推荐