我尝试将 800GB 文件上传到 Elasticsearch,但我不断收到内存错误,告诉我数据二进制文件内存不足。我的系统有 64GB RAM 和 3TB 存储空间
curl -XPOST 'http://localhost:9200/carrier/doc/1/_bulk' --data-binary @carrier.json
我想知道配置文件中是否有一个设置可以增加内存量,以便我可以上传到他的文件
thanks
一次性发送 800GB 是相当大的,ES 必须将所有内容放入内存中才能处理它,所以这对于您拥有的内存量来说可能太大了。
解决此问题的一种方法是将文件分成几个文件,然后逐个发送。您可以使用如下所示的一个小型 shell 脚本来实现它。
#!/bin/sh
# split the main file into files containing 10,000 lines max
split -l 10000 -a 10 carrier.json /tmp/carrier_bulk
# send each split file
BULK_FILES=/tmp/carrier_bulk*
for f in $BULK_FILES; do
curl -s -XPOST http://localhost:9200/_bulk --data-binary @$f
done
UPDATE
如果你想解释 ES 响应,你可以通过将响应管道传输到一个小的 python 单行代码来轻松完成,如下所示:
curl -s -XPOST $ES_HOST/_bulk --data-binary @$f | python -c 'import json,sys;obj=json.load(sys.stdin);print " <- Took %s ms with errors: %s" % (obj["took"], obj["errors"])';
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)