我查询了我的MariaDB并将所有数据解析为根据Elasticsearch批量api here的文档格式化的JSON文件。
Json样本:
{“index”:{“_ index”:“test”,“_ type”:“test-type”,“_ id”:“5”}
{“testcase”:“testcase_value”,“load”:“load_value”,“detcause”:“DETAILED_CAUSE_UNKNOWN”,“time”:“2017-09-28T08:07:03”,“br_proc”:“ProcDetCause”,“ proc_message“:”MME_CB_DEF“,”cause“:null,”count“:3}
{“index”:{“_ index”:“test”,“_ type”:“test-type”,“_ id”:“17”}
{“testcase”:“testcase_value”,“load”:“load_value”,“detcause”:“DETAILED_CAUSE_UNKNOWN”,“time”:“2017-09-28T08:07:03”,“br_proc”:“BrDetCause”,“ proc_message“:”MME_CB_DEF“,”cause“:null,”count“:2}
{“index”:{“_ index”:“test”,“_ type”:“test-type”,“_ id”:“20”}
{“testcase”:“testcase_value”,“load”:“load_value”,“detcause”:null,“time”:“2017-09-28T08:07:03”,“br_proc”:“BrCause”,“proc_message” :“MME_CB_DEF”,“原因”:“CAUSE_UNKNOWN”,“count”:2}
{“index”:{“_ index”:“test”,“_ type”:“test-type”,“_ id”:“23”}
{“testcase”:“testcase_value”,“load”:“load_value”,“detcause”:null,“time”:“2017-09-28T08:07:03”,“br_proc”:“ProcCause”,“proc_message” :“MME_CB_DEF”,“原因”:“CAUSE_UNKNOWN”,“count”:1}
{“index”:{“_ index”:“test”,“_ type”:“test-type”,“_ id”:“39”}
{“testcase”:“testcase_value”,“load”:“load_value”,“detcause”:null,“time”:“2017-09-28T08:07:03”,“br_proc”:“ProcCause”,“proc_message” :“MME_CB_DEF”,“原因”:“CAUSE_UNKNOWN”,“count”:2}
...
当我跑步时:
curl -s -H "Content-Type: application/x-ndjson" -XPOST 'localhost:9200/_bulk' --data-binary @data.json
我完全没有回应。我试图获取一些数据子集(即100,1000行)和那些工作(我甚至接收JSON响应)。但是,当我超过一百万时,它没有给出任何回应。目前,Elasticsearch数据库中只有500个条目。
我还检查了elasticsearch日志,它们都是空的。
该文件有2000万行,大约2.7 GB。
为什么我发布更大的JSON文件时没有得到任何回复?难道我做错了什么?有没有更好的方法来处理批量索引?
答案 0 :(得分:0)
基于评论,我正在创建一个“解决方法”:
将大文件拆分为当前有效的multiple json files
周围的500k lines
。
我的猜测是内存问题在这里工作(你可以通过内存使用,cpu,网络等来检查)。