Solr7.2无法上传含数字与字母数字混合字段的CSV文件求助
解决Solr本地CSV上传失败的问题
嘿,刚上手Solr就遇到CSV上传问题太正常了,我帮你排查下几个关键的坑,一步步解决:
1. 先搞定CSV文件本身的格式问题
你的CSV里有两个明显的格式错误,这是Solr解析失败的重灾区:
- 未闭合的全角引号:第三行的
“sw Like123用了全角的中文引号,而且没闭合。CSV里要包裹带空格的字段,必须用半角双引号"并配对,改成"sw Like123"才行。 - 列分隔符不规范:你的CSV用空格分隔列,但Solr的CSV处理器默认认逗号
,作为分隔符。要么把CSV改成逗号分隔的标准格式,要么在请求URL里明确指定分隔符(空格的URL编码是%20)。
修正后的标准CSV示例:
Col_1,Name,Workouts,To_Do
1,Abh,gym,123
2,Kar,pilate,wh123Ap
3,adi,"sw Like123"
2. 补全managed-schema的字段配置
你提到To_Do字段配置不完整,而且CSV里的Workouts字段也没在你给出的配置里出现,Solr需要明确的字段定义才能正确映射数据:
- 打开
solr-7.2.1/server/solr/demo4/conf/managed-schema,补全这两个字段的配置,比如用文本类型的话:
<field name="Workouts" type="text_general" indexed="true" stored="true"/> <field name="To_Do" type="text_general" indexed="true" stored="true"/>
如果To_Do是纯字符串不需要分词,就把type改成string。修改后记得重启Solr生效。
3. 调整curl命令的细节
你的命令框架是对的,但可以根据CSV格式调整:
- 如果用逗号分隔的CSV,直接用原命令就行,确认文件路径正确(
/home/User1/.../test1.csv要真实存在,且Solr进程有读取权限):
curl 'http://localhost:8983/solr/demo4/update?commit=true' --data-binary @/home/User1/solr-7.2.1/example/test_solr_csv/test1.csv -H 'Content-type:application/csv;charset=utf-8'
- 如果用空格分隔的CSV,要在URL里加
&separator=%20指定分隔符:
curl 'http://localhost:8983/solr/demo4/update?commit=true&separator=%20' --data-binary @/home/User1/solr-7.2.1/example/test_solr_csv/test1.csv -H 'Content-type:application/csv;charset=utf-8'
4. 排查错误的终极办法
如果还是失败,去Solr的日志目录solr-7.2.1/server/logs看具体的错误日志,里面会告诉你是字段不存在、CSV解析错误还是权限问题,比模糊的失败提示有用多了。
内容的提问来源于stack exchange,提问作者anarchy
相关产品推荐
相关产品推荐

