solr 请求参数过长报错,Solr配置maxBooleanClauses属性不生效原因分析
博客分类:
上次已经写过一篇关于solr中,查询条件过多的异常的文章,这次在总结扩展一下:
有时候我们的查询条件会非常多,由于solr的booleanquery默认设置的条件数为1024,所以超过这个限制的
会报异常,这样设置的原因是为了限制过多条件查询,降低查询的性能,但有时候又必须这样查,或分析数据用,
所以可以临时改变下,修改方法:
修改solrconfig.xml文件:
伦理片 http://www.dotdy.com/
- <maxBooleanClauses>20000</maxBooleanClauses>
理想情况下,配置完这个属性,重启应该就生效了,但是让你意外的是,并没有生效,拼接5000个查询条件,依然报这个异常:
- too many boolean clauses Exception
为什么? 仔细看solr的文档里面,写这下面一段话:
- Max Boolean Clauses
- Maximum number of clauses in each BooleanQuery, an exception
- is thrown if exceeded.
- ** WARNING **
- This option actually modifies a global Lucene property that
- will affect all SolrCores. If multiple solrconfig.xml files
- disagree on this property, the value at any given moment will
- be based on the last SolrCore to be initialized.
什么意思?大致就是说,这个属性是全局的lucene配置,如果你的solr里面存在多个core,那么必须多个core的配置
文件都得配置maxBooleanClauses才会生效,否则只有当你配置的那个core最后一个被加载时,它才会生效,如果不幸,不是最后一个加载,那么即使你设置成20000那么它默认还是1024,这就是为什么配置完成之后依旧不生效的原因,散仙的场景中,参数大概有8000多个,虽然改变配置可以查询,但不建议这么用,内存不给力的情况下,查询速度非常之慢,用于离线分析某些数据,倒还可以接受。
影音先锋电影 http://www.iskdy.com/
最后在补充一些查询知识:
- //过滤的几种写法
- (1)q=category:1 AND category:2 AND category:3 ... AND category:2000
- (2)q=*:*&fq=category:(1 2 3 ... 2000)
- (3)q=*:*&fq=category:1&fq=category:2&fq=category:3&....&fq=category:2000
在solr请求的参数中,我们一般情况下是不会有太多的参数,有一种情况会有很多,就是有关联关系的时候,查出来了一个ids的集合,然后传给你的solr当参数,这个时候,你的参数就可能会报长度错误。如果没有报,那只能说明你的长度还不够长。
接下来介绍如何解决长度问题。
1.在solr的实例中有一个conf的文件solrconfig.xml文件中 在<query>的标签下有一个<maxBooleanClauses>1024</maxBooleanClauses>这个时候,你修改这个1024就可以,有些人修改完事了,重启了solr但是没有起效,原因:实例core有多个,但是你只修改了这一个,当solr在加载的时候,只会按照最后一个设置的值做标准。它的标准是最后加载的一个core实例的maxBooleanClauses值。(当你修改这个配置的时候,自己读一下修改位置上面被注释掉的文字)
2.(这个是第二天来补充的,不和上面是一起写的),虽然你的solr配置没问题,但是你的tomcat并不能接收那么多的参数,所以需要修改tomcat的conf/server.xml文件 <Connector connectionTimeout="20000" port="8088" protocol="HTTP/1.1" redirectPort="8443" maxHttpHeaderSize=""/> maxHttpHeaderSize的属性就是请求头的大小设置。
把请求模式改成post模式, QueryResponse qr = solr.query(this.getSolrQuery(ids));改成
QueryResponse qr = solr.query(this.getSolrQuery(ids),METHOD.POST);
总结:
(1)如果是or操作多个条件,只能配置最大限制条件
(2)如果是and操作多个条件,可以上面的3方法,而不用配置最大限制条件
solr 请求参数过长报错,Solr配置maxBooleanClauses属性不生效原因分析的更多相关文章
- 解决solr 请求参数过长报错too many boolean clauses Exception
booleanClauses属性的意义 貌似是查询条件有几个逻辑判断而不是参数长度. 如下面两种情况 a:1 OR b:2 AND C:3那么此时booleanClauses=3 id(1 2 3 4 ...
- mybatis从dao传入多个参数到sqlmap时dao中要使用map或实例对象(如:user)作为参数传入, 否则报错找不到属性getter方法
23:37 2015-07-02 注意1. 使用mybaits的resultMap查询时, 如果想传入多个参数(比如where 1=1动态多条件查询时)sqlmap文件中对应的方法中, selectL ...
- Spring Cloud Gateway 动态修改请求参数解决 # URL 编码错误传参问题
Spring Cloud Gateway 动态修改请求参数解决 # URL 编码错误传参问题 继实现动态修改请求 Body 以及重试带 Body 的请求之后,我们又遇到了一个小问题.最近很多接口,收到 ...
- Ajax请求参数较长导致请求失败
Ajax请求参数比较长,第5行参数大概1100个字符吧,是接口的请求报文. $.ajax({ type:"POST", url:"${ctx}/test.action?m ...
- idea中 参数没有描述报错 @param XX tag description is missing错误,去除黄色警告
最近在使用idea开发工具,在方法备注中参数没有描述报错就会报一些黄色警告: @param XX tag description is missing,下面展示去除黄色警告的方法 File--sett ...
- EF执行存储工程报错 String[4]: Size 属性具有无效大小值 0。
EF中执行存储过程报错 String[4]: Size 属性具有无效大小值 0 排查后是如下问题所致,给定的参数没有设定大小(加入红框内的就可以了) private string GetCode(MC ...
- selenium+phantomjs报错:Unable to find a free port的分析和解决
selenium+phantomjs报错:Unable to find a free port的分析和解决 Table of Contents 1. 现象 2. 分析 3. 解决办法 1 现象 在做项 ...
- 【原创】IBM Websphere 报错:JSPG0120E: 为 pageEncoding 属性和匹配 URI 模式的配置元素指定不同的值是非法的。
websphere中间件,在打开一个jsp页面时报: IBM Websphere 报错:JSPG0120E: 为 pageEncoding 属性和匹配 URI 模式的配置元素指定不同的值是非法的. . ...
- excel导出使用get请求参数过长问题
遇到的问题: excel导出功能时,使用的是window.location.href=url也就是get请求.当传入参数过长的时候就报了414,地址过长的错误. 解决思路: 将get请求换为post请 ...
随机推荐
- vue-cli、create-react-app 项目如何查看打包分析?
vue-cli.create-react-app 项目如何查看打包分析? 项目 如何查看打包分析 vue-cli 创建的项目 已经集成 webpack-bundle-analyzer,运行npm ru ...
- beautifulSoup使用
- DEVC++ C++ Builder6.0
Devc++安装后无法正常编译程序 出现错误,不知道是什么,可能是不兼容的原因 然后就是一直编译出错,程序是最简单的helloworld程序. 之后选择安装C++ Builder 6.0
- js控制html5 【video】标签中视频的播放和停止
需求:页面中有2个普通按钮a,b.还有一个video标签,能成功播放出视频..我想要的效果是,点击a按钮,视频开始播放,点击b按钮,视频播放停止!!!<br><br>----- ...
- C# .net WebRequest HttpWebRequest 禁用系统默认代理。
直接将Proxy属性设置为null即可. 等同于配置文件里的 <proxy usesystemdefault="False" />
- 跟着未名学 - 录屏套件 Camtasia Studio
目录 Camtasia Recorder. 1 Camtasia Studio.. 2 时间线... 2 渲染... 5 Camtasia MenuMaker. 6 Camtasia Play. 6 ...
- Ntfs 下的链接符号创建
熟悉过 Unix/Linux 都应该知道,Unix/Linux 用 ln 建立硬链接,ln -s 建立软链接(符号链接). 硬链接和符号链接的区别 Ntfs下的也有链接符: 内置命令:mklink ...
- x230安装黑苹果
https://forum.51nb.com/forum.php?mod=viewthread&tid=1802786&extra=page%3D1&page=1 下载 主要就 ...
- Facebook Login api
http://blog.kenyang.net/2012/01/androidfacebook-login-api.html http://blog.kenyang.net/2012/01/faceb ...
- ghost之后仍然中病毒----与病毒的斗争
ghost之后仍然中病毒----与病毒的斗争我的电脑系统是XP,从来都没有安装任何杀毒软件,所有的软件都是安装在C盘的,感觉系统卡顿就用Windows一键还原(基于DOS下的ghost)还原一下,一直 ...