我下载了solr 4.6.1并尝试使用以下命令行更新solr索引:
curl http://localhost:8983/solr/update?commit=true -H 'Content-type:application/json' -d '
[{
"id" : "1",
"phoneNumber_ss": [{"foo_ss" : "bar"}]
}]
'
我正在使用示例schema.xml,这就是我使用所有“_ss”字段的原因。
问题在于,当我执行此操作时,我得到以下响应:
{"responseHeader":{"status":400,"QTime":1},"error":{"msg":"Error parsing JSON field value. Unexpected OBJECT_START","code":400}}
这似乎与为phoneNumber_ss字段指定的值有关,该字段是一个对象数组。如果我将值设置为数组或对象,它可以正常工作,只有当它是一个对象数组时才会出现问题。
非常感谢任何帮助。
答案 0 :(得分:3)
我不认为Solr支持将对象存储到多值字段中。您可以将其存储为字符串数组。您还可以将对象存储为字符串并在应用程序中解析它。
如果您有这样的用例,您希望只拥有Solr中的所有对象,则可以按照以下步骤进行操作。
因此,您可以在不同的字段中以相同的顺序获取键和值。但是在这种方法中,您可能在更新这些多值字段时遇到问题。您可能希望查看here
最后,您还在更新语句中遗漏了一些语法。
set
- 设置或替换特定值,或者如果将null指定为新值,则删除该值
add
- 为列表添加额外值