Solr从8.11.1升级至9.5.0后单个集合报“Stream Body is disabled”错误
Solr 9.5.0升级后"Stream Body is disabled."错误解决指南
问题背景
Solr从8.11.1升级至9.5.0后,多数核心正常运行,但某一集合持续抛出Stream Body is disabled.错误,尝试修改solrconfig.xml、启动脚本、请求头均未解决,低版本Solr中相同代码可正常运行。
针对性解决方案
1. 修正solrconfig.xml配置结构
确保<requestParsers>标签嵌套在<requestDispatcher>内部,Solr 9.x严格要求配置结构层级,直接放置<requestParsers>会导致配置不生效:
<requestDispatcher handleSelect="true"> <requestParsers enableRemoteStreaming="true" enableStreamBody="true" multipartUploadLimitInKB="2048000" formdataUploadLimitInKB="2048" addHttpRequestToContext="false"/> </requestDispatcher>
修改后需重载核心配置或重启Solr服务。
2. 排查集群ConfigSet覆盖问题(SolrCloud模式)
若使用SolrCloud,检查该集合绑定的ConfigSet是否已更新:
- 登录Solr Admin UI,进入
Collections页面找到目标集合 - 查看其关联的ConfigSet,确认ConfigSet中的solrconfig.xml已添加上述正确配置
- 若ConfigSet未更新,需重新上传ConfigSet并重新加载集合
3. 修正启动脚本配置(区分操作系统)
你之前混用了bash脚本逻辑和Windows的solr.cmd,需根据运行环境调整:
- Windows环境:修改
solr.cmd,添加以下内容并重启服务:
set SOLR_ENABLE_REMOTE_STREAMING=true set SOLR_ENABLE_STREAM_BODY=true set SCRIPT_SOLR_OPTS=%SCRIPT_SOLR_OPTS% -Dsolr.enableRemoteStreaming=%SOLR_ENABLE_REMOTE_STREAMING% -Dsolr.enableStreamBody=%SOLR_ENABLE_STREAM_BODY%
- Linux/macOS环境:修改
solr.sh,添加以下内容并重启服务:
SCRIPT_SOLR_OPTS+=("-Dsolr.enableRemoteStreaming=true") SCRIPT_SOLR_OPTS+=("-Dsolr.enableStreamBody=true")
注意:启动脚本修改后必须重启Solr,否则JVM参数不会生效。
4. 放弃请求头配置方式
Solr 9.x已移除通过请求头动态修改requestDispatcher.requestParsers.*参数的支持,这类配置属于静态核心配置,只能通过solrconfig.xml或JVM启动参数设置,请求头配置无效。
5. 检查安全策略限制
Solr 9.x默认收紧安全规则,排查以下内容:
- 检查核心配置中
<security>标签是否存在限制stream body的规则 - 确认Solr安全插件(如BasicAuth)未拦截相关请求路径
- 验证请求的Content-Type是否符合Solr要求(如
application/json或text/plain)
验证步骤
完成上述配置后,通过Postman或Solr Admin UI的API测试工具发送请求,确认Stream Body is disabled.错误是否消失。
内容的提问来源于stack exchange,提问作者pandu.s Jadhav
相关产品推荐
相关产品推荐

