【问题标题】:solr update with json causes 'error parsing json field. unexpected object_start'使用 json 进行 solr 更新会导致“解析 json 字段时出错。意外的 object_start'
【发布时间】:2014-02-02 15:58:41
【问题描述】:

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

非常感谢任何帮助。

【问题讨论】:

    标签: json solr


    【解决方案1】:

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

    如果您有这样的用例,您只想拥有来自 Solr 的所有对象,您可以按照以下步骤操作..

    1. 为您的键创建一个多值字段。
    2. 保持键的相同顺序并为值创建另一个多值字段。

    因此,您可以在不同的字段中以相同的顺序获取键和值。但是在这种方法中,您在更新这些多值字段时可能会遇到问题。你可能想看看here

    最后,您的更新语句中还缺少一些语法。

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

    add - 向列表添加附加值

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

    【讨论】:

    • “/update”是您链接的 wiki 页面上建议的内容。我会考虑分解我的对象并以不同的方式存储它。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-28
    • 2023-03-15
    • 2023-02-08
    • 2022-01-01
    • 2013-05-31
    相关资源
    最近更新 更多