json - solr 使用 json 更新导致 'error parsing json field. unexpected object_start'

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

非常感谢任何帮助。

最佳答案

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

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

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

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

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

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

add – 向列表添加附加值

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

关于json - solr 使用 json 更新导致 'error parsing json field. unexpected object_start',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21502722/

相关文章:

json - 是否可以使用 Eclipse 自动完成 JSON 模式和文档?

java - 使用HashMap JAVA覆盖JSON

sorting - Solr - 如何基于子查询进行排序

java - 需要帮助重新构建和优化大型 solr 索引

java - solrj 子父关系查询失败

json - 解析Flash JSON响应(Delphi/TWebbrowser)

json - JSON 指针中波浪号的用途

javascript - 如何在没有循环的情况下使用 mustache.js 呈现此 JSON

solr - 尝试启动 Solr 时导致 Java 异常 "Address already in use"的原因是什么?

solr - 正向索引与反向索引为什么?