Solr 9.4.0-slim添加DIH仓库触发404错误求助
问题核心
执行命令 solr package add-repo data-import-handler "https://raw.githubusercontent.com/searchscale/dataimporthandler/master/repo/" 时,触发404错误,且返回内容MIME类型为text/html,与Solr期望的[application/octet-stream, application/vnd.apache.solr.javabin]不匹配;但相同命令在Docker容器中可正常执行,Solr版本为9.4.0-slim。
可能原因
该错误本质是Solr请求仓库元数据时,拿到的是GitHub的404错误页面(text/html格式),而非预期的Solr仓库元数据文件。Docker环境正常大概率是因为容器内网络路径解析无异常,或仓库文件在容器访问链路中可正常获取。
解决方案
1. 修正仓库路径的大小写与正确性
GitHub路径严格区分大小写,先确认命令中的URL大小写是否与仓库实际路径一致,尝试使用修正后的命令:
solr package add-repo data-import-handler "https://raw.githubusercontent.com/SearchScale/dataimporthandler/master/repo/"
同时手动访问该路径下的repo.properties文件(比如拼接为https://raw.githubusercontent.com/SearchScale/dataimporthandler/master/repo/repo.properties),如果返回404,说明仓库路径已变更,需确认最新仓库地址。
2. 本地托管仓库元数据
若远程仓库访问存在网络或路径问题,可手动托管仓库文件:
- 下载仓库的
repo.properties及对应data-import-handler包文件到本地目录(如./solr-local-repo/) - 用Python启动临时HTTP服务:
python3 -m http.server 8080 --directory ./solr-local-repo/ - 执行添加仓库命令指向本地服务:
solr package add-repo data-import-handler "http://localhost:8080/"
3. 检查并配置Solr代理
如果本地环境使用代理,可能导致Solr请求GitHub时被拦截或重定向:
- Linux环境:修改
solr.in.sh文件,添加代理参数:SOLR_JAVA_MEM="-Dhttp.proxyHost=你的代理地址 -Dhttp.proxyPort=代理端口 -Dhttps.proxyHost=你的代理地址 -Dhttps.proxyPort=代理端口" - Windows环境:修改
solr.in.cmd文件,添加代理参数:set SOLR_JAVA_MEM=-Dhttp.proxyHost=你的代理地址 -Dhttp.proxyPort=代理端口 -Dhttps.proxyHost=你的代理地址 -Dhttps.proxyPort=代理端口
修改后重启Solr再执行命令。
4. 跳过仓库直接安装本地包
若添加仓库始终失败,可直接下载data-import-handler的包文件,用本地安装命令完成部署:
solr package install /本地路径/data-import-handler-对应版本.zip
内容的提问来源于stack exchange,提问作者sladkkov

