2015-02-23 42 views
0

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

为了与Elasticsearch接口,我使用Elasticsearch for Java API与Elasticsearch Web API混合使用。

我成功地使每一次一个用户简单地复制,粘贴不包括[]信息文字和创建调用

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

一个shell脚本,如果我试图复制一个完整的块3人组成,并尝试以相同的脚本

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

返回错误推的数据是:

org.elasticsearch.index.mapper.MapperParsingException:格式不正确的内容,必须与对象

你将如何解决这个问题的开始?谢谢!

回答

0

你缺少右括号包裹项目:

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

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

同时,尽量考虑看看http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-bulk.html

+0

感谢您对帮扶,但如果我贴JSON产生的(实际上,jsons的载体)的网站上说,**有效的JSON **即使没有** {**在外层 – BlacK 2015-02-23 12:53:31

+0

如果在数组结尾之前插入缺少的},是的。我拿了你的第二个例子,删除',etc ...'(不是大括号!),它返回一个错误,因为你缺少用于名称属性的Object的右括号。我更新了我的答案。 – user3001 2015-02-23 12:56:28

+0

你说得对,我的错字。不幸的是,问题依然存在 – BlacK 2015-02-23 13:02:13