【问题标题】:How to index an array of element in Elasticsearch?如何在 Elasticsearch 中索引元素数组?
【发布时间】:2015-02-24 23:44:24
【问题描述】:

我正在使用 Elasticsearch 1.4.3,并且正在尝试为数据库创建一个自动“填充器”。 想法是使用这个网站http://beta.json-generator.com/BhxCdZ6 生成一组随机数据,并将其推送到 Elasticsearch 的索引中。

为了与 Elasticsearch 交互,我将 Elasticsearch for Java API 与 Elasticsearch Web API 混合使用。

我设法每次推送一个用户,只需复制粘贴不包括 [] 字符的信息并创建一个调用的 shell 脚本

curl -XPOST 'http://localhost:9200/myindex/users/' -d '{
    "name": {
      "first": "Dickerson",
      "last": "Wood"
    }, etc...

如果我尝试复制一个由 3 人组成的完整块并尝试使用相同的脚本推送数据

curl -XPOST 'http://localhost:9200/geocon/users/' -d '[
  {
    "name": {
      "first": "Dickerson",
      "last": "Wood"
    }, etc ... 
]
  }'

返回的错误是:

org.elasticsearch.index.mapper.MapperParsingException:内容格式错误,必须以对象开头

你会如何解决这个问题?谢谢!

【问题讨论】:

    标签: java json elasticsearch


    【解决方案1】:

    您缺少包裹项目的右大括号:

      [
        {
        "name": {
          "first": "Dickerson",
          "last": "Wood"
        }, etc.
      ]
    

    您可以验证您的 JSON,例如通过http://jsonlint.com/

    另外,试试看http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-bulk.html

    【讨论】:

    • 感谢您的帮助,但如果我粘贴生成的 JSON(实际上是 json 的向量),即使没有 {,网站也会显示 Valid JSON b> 在外层
    • 如果在数组末尾插入缺少的 },可以。我举了你的第二个例子,删除了, etc ...(不是大括号!)它返回一个错误,因为你缺少带有 name 属性的 Object 的右大括号。我更新了我的答案。
    • 你是对的,我的错字。不幸的是,问题仍然存在
    猜你喜欢
    • 2011-09-21
    • 1970-01-01
    • 2020-11-28
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    相关资源
    最近更新 更多