一尘不染

Elasticsearch批量JSON数据

elasticsearch

似乎我有一个相似但不相同的查询,因此最好像@Val建议的那样,让其他人从中受益。

因此,类似于上述内容,我需要在索引中插入大量数据(我的初始测试大约是10000个文档,但这只是针对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格式(如此),而是操纵的字符串。

我想知道是否有一种方法可以直接获取importjson数据(采用json格式),而无需先手动操作文本(因为我的测试数据有10000个条目,我敢肯定,你会明白为什么我会d不想手动执行此操作)。

有什么建议或自动工具可以帮助您解决此问题吗?

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


阅读 484

收藏
2020-06-22

共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

注意:如果尚未安装,jq则需要先安装

2020-06-22