Elasticsearch数据二进制文件内存不足

我试图将800GB的文件上传到elasticsearch,但是我不断收到内存错误,告诉我数据二进制文件内存不足。我的系统上有64GB的RAM和3TB的存储空间

curl -XPOST 'http://localhost:9200/carrier/doc/1/_bulk' --data-binary @carrier.json

我想知道配置文件中是否有设置可以增加内存量,以便我可以上传到他的文件

谢谢

回答:

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

如果您想解释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"])';

以上是 Elasticsearch数据二进制文件内存不足 的全部内容, 来源链接: utcz.com/qa/414722.html

回到顶部