批量插入时出现弹性搜索内存错误

Elastic search memoryerror on bulk insert

我一次将 5000 条记录插入弹性搜索 这些记录的总大小为:33936(我使用 sys.getsizeof())

弹性搜索版本:1.5.0 Python 2.7 Ubuntu

下面是错误

Traceback (most recent call last):
  File "run_indexing.py", line 67, in <module>
    index_policy_content(datatable, source, policyids)
  File "run_indexing.py", line 60, in index_policy_content
    bulk(elasticsearch_instance, actions)
  File "/usr/local/lib/python2.7/dist-packages/elasticsearch/helpers.py", line 148, in bulk
    for ok, item in streaming_bulk(client, actions, **kwargs):
  File "/usr/local/lib/python2.7/dist-packages/elasticsearch/helpers.py", line 107, in streaming_bulk
    resp = client.bulk(bulk_actions, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/elasticsearch/client/utils.py", line 70, in _wrapped
    return func(*args, params=params, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/elasticsearch/client/__init__.py", line 568, in bulk
    params=params, body=self._bulk_body(body))
  File "/usr/local/lib/python2.7/dist-packages/elasticsearch/transport.py", line 259, in perform_request
    body = body.encode('utf-8')
MemoryError

请帮我解决问题。

感谢和问候, 冻结

如果非要我猜的话,我会说这个内存错误是在 python 加载和序列化数据时发生的。尝试减少批量大小,直到你得到一些有用的东西,然后向上进行二进制搜索,直到它再次失败。这应该可以帮助您确定要使用的安全批量大小。

(您可能想要包括的其他有用信息:您 运行 您的 python 进程所在的服务器中的内存量,您的 elasticsearch 服务器节点的内存量,分配给 Java.)

的堆数量