我下载了 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字段指定的值有关,该字段是一个对象数组。如果我将值放入数组或对象中,它就可以正常工作,只有当它是对象数组时才会出现问题。
非常感谢任何帮助。
最佳答案
我认为 Solr 不支持将对象存储到多值字段中。您可以将其存储为字符串数组。您还可以将该对象存储为字符串并在应用程序中解析它。
如果您有这样的用例,您只想拥有 Solr 中的所有对象,您可以按照以下步骤操作。
- 为您的键创建一个多值字段。
- 保持相同的键顺序并为值创建另一个多值字段。
因此,您可以在不同字段中以相同的顺序获取键和值。但在这种方法中,您在更新这些多值字段时可能会遇到问题。您可能想看看here
最后,您的更新语句中还缺少一些语法。
set
– 设置或替换特定值,或者如果指定 null 作为新值则删除该值
add
– 向列表添加附加值
关于json - solr 使用 json 更新导致 'error parsing json field. unexpected object_start',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21502722/