2017-08-09 78 views
1

此问题来自this SO threadElasticsearch批量JSON数据

由于看起来我有一个类似但不相同的查询,因此可能最好有一个单独的问题供其他人从中受益,正如@Val所建议的那样。

所以,与上面类似,我需要将大量数据插入到索引中(我的初始测试大约有10 000个文档,但这仅仅是一个POC,还有更多)。我想插入的数据是一个以.json文件中,看起来是这样的(片段):

[ { "fileName": "filename", "data":"massive string text data here" }, 
    { "fileName": "filename2", "data":"massive string text data here" } ] 

在我自己承认我是新来ElasticSearch,不过,从通过文档阅读,我的假设是我可以创建一个.json文件并根据其中的数据创建一个索引。现在我已经了解到以来,它似乎每个项目中的JSON需要有一个“头”,是这样的:

{"index":{}} 
{ "fileName": "filename", "data":"massive string text data here" } 

意义,这是不实际的JSON格式(因为这样),而是操纵字符串。

我想知道是否有办法以import原样(以json格式)我的json数据,而不必手动操作文本(因为我的测试数据有10 000个条目,我相信你可以看到为什么我不希望手动执行此操作)。

任何建议或建议的自动化工具来帮助这?

PS - 我正在使用Windows Installer和Postman进行调用。

回答

1

您可以使用一个像这样的shell命令轻松转换文件。只要你的文件被称为input.json,你可以这样做:

jq -c -r ".[]" input.json | while read line; do echo '{"index":{}}'; echo $line; done > bulk.json 

此之后,你就会有一个名为bulk.json这是正确的格式,发送到批量端点。

然后,你可以打电话给你的批量端点这样的:

curl -XPOST localhost:9200/your_index/your_type/_bulk -H "Content-Type: application/x-ndjson" --data-binary @bulk.json 

注意:您需要先install jq如果你没有它了。

+0

运气好吗? – Val