使用json更新solr会导致'解析json字段时出错'。意外的object_start'

时间:2014-02-01 19:45:39

标签: json solr

我下载了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字段指定的值有关,该字段是一个对象数组。如果我将值设置为数组或对象,它可以正常工作,只有当它是一个对象数组时才会出现问题。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

我不认为Solr支持将对象存储到多值字段中。您可以将其存储为字符串数组。您还可以将对象存储为字符串并在应用程序中解析它。

如果您有这样的用例,您希望只拥有Solr中的所有对象,则可以按照以下步骤进行操作。

  1. 为您的密钥创建一个多值字段。
  2. 维护相同的键顺序,并为值创建另一个多值字段。
  3. 因此,您可以在不同的字段中以相同的顺序获取键和值。但是在这种方法中,您可能在更新这些多值字段时遇到问题。您可能希望查看here

    最后,您还在更新语句中遗漏了一些语法。

    set - 设置或替换特定值,或者如果将null指定为新值,则删除该值

    add - 为列表添加额外值

    检查http://wiki.apache.org/solr/UpdateJSON