Solr读取数据异常
前话:大家都是知道Solr的请求方式为:get请求,
在Http1.1协议中并没有提出针对URL的长度进行限制,RFC协议里面是这样描述的,HTTP协议并不对URI的长度做任何的限制,服务器端必须能够处理任何它们所提供服务多能接受的URI,并且能够处理无限长度的URI,如果服务器不能处理过长的URI,那么应该返回414状态码。
虽然Http协议规定了,但是Web服务器和浏览器对URI都有自己的长度限制。
服务器的限制:我接触的最多的服务器类型就是Nginx和Tomcat,对于url的长度限制,它们都是通过控制http请求头的长度来进行限制的,Nginx的配置参数为
large_client_header_buffers
,tomcat的请求配置参数为maxHttpHeaderSize
都是可以自己去进行设置。IE : 2803
Firefox:65536
Chrome:8182
Safari:80000
Opera:190000对于get请求,在url的长度限制范围之内,请求的参数个数没有限制。
搜索关键字:q
org.apache.solr.client.solrj.SolrServerException: Error executing query
at org.apache.solr.client.solrj.request.QueryRequest.process(QueryRequest.java:98)
at org.apache.solr.client.solrj.SolrServer.query(SolrServer.java:301)
at com.mediaadx.dmp.comset.common.solr.solrcloud.SolrCloudServerImpl.main(SolrCloudServerImpl.java:115)
Caused by: java.lang.RuntimeException
at org.apache.solr.common.cloud.SolrZkClient.<init>(SolrZkClient.java:115)
at org.apache.solr.common.cloud.SolrZkClient.<init>(SolrZkClient.java:83)
at org.apache.solr.common.cloud.ZkStateReader.<init>(ZkStateReader.java:138)
at org.apache.solr.client.solrj.impl.CloudSolrServer.connect(CloudSolrServer.java:140)
at org.apache.solr.client.solrj.impl.CloudSolrServer.request(CloudSolrServer.java:165)
at org.apache.solr.client.solrj.request.QueryRequest.process(QueryRequest.java:90)
... 2 more
这是保留的草稿,大概情况是因为,查询字符串太长了,超过了服务器所能处理的长度。
可以参考这篇文章修改: