Solr Cloud模式下批量添加文件夹文档至集合失败求助
Solr Cloud批量导入JSON文档失败的解决方案
嘿,我看你在Solr Cloud模式下批量导入指定文件夹的JSON文档时踩坑了,咱们一步步来排查解决:
最关键的错误:API端点URL用错了
你当前命令里的URL是带#的Solr管理后台页面地址:
http://mysolr.net:8983/solr/#/collection_indexer_shard1_replica1/update/json/docs
这个#后面的内容是浏览器前端的路由路径,服务器根本不会处理这部分内容,相当于你请求的是无效的API端点,这肯定会失败。
正确的批量更新API地址应该直接指向集合的更新接口,不需要带#和分片副本的后缀:
http://mysolr.net:8983/solr/collection_indexer/update/json/docs
修正后的执行命令
考虑到你在CDH的/opt/cloudera/parcels/CDH/jars目录下执行命令,推荐两种方式:
方式1:使用Solr自带的post.jar(CDH通常包含这个包)
java -jar solr-post.jar -Dtype=application/json -Drecursive -Durl="http://mysolr.net:8983/solr/collection_indexer/update/json/docs" /tmp/solr_data
方式2:使用Solr的post脚本(如果能找到Solr bin目录)
如果你的Solr安装目录下有bin/post脚本,用这个更简便:
bin/post -c collection_indexer -filetype json -recursive /tmp/solr_data
额外排查点(如果修正后还是失败)
- JSON格式检查:确保
/tmp/solr_data下的每个JSON文件是单个合法的JSON文档,或者是标准的JSON数组(如果是数组,可能需要添加-Dcommit=true参数确保提交) - Schema匹配验证:检查你的
collection_indexer集合的schema是否和JSON里的字段匹配,有没有必填字段未提供的情况 - 查看Solr日志:去Solr的日志目录(CDH中通常是
/var/log/solr/)查看具体错误信息,比如字段不匹配、权限问题等 - 权限确认:确保执行命令的用户有读取
/tmp/solr_data的权限,同时Solr服务器允许当前客户端IP的请求
内容的提问来源于stack exchange,提问作者Choix
相关产品推荐
相关产品推荐

