首页 > 解决方案 > 如何使用python以最有效的方式将大文件上传到elasticsearch?

问题描述

我正在尝试将大约 40gb 的数据上传到 elasticsearch。它是json格式的,因为有很多数据并且计算机无法加载文件,我无法将文件结构提供给elasticsearch,这样它就使用了结构的动态定义。

由于动态定义占用了宝贵的内存,但上传40gb也不是一件容易的事。我让脚本运行了一夜,早上发现它仍在运行(它上传了大约 12 小时以上,但仍然没有上传)。下面显示了如何进行上传。我知道这不是最好的方法,因为它遍历所有行,但我没有想出其他任何方法。

import os
from elasticsearch import Elasticsearch

es = Elasticsearch(
    ['elasticsearch'],
    port=9200

)

raiseFieldLimit = '''
{  
  "index.mapping.total_fields.limit": 10000
}'''

es.indices.create(index=os.environ.get('INDEX'), body=raiseFieldLimit)

i=0
f = open("test", "r")
for x in f:
    string_for_output = x.decode('utf-8').strip()
    es.index(index=os.environ.get('INDEX'), doc_type='Data', id=i, body=string_for_output)
    i=i+1

所以主要问题是,有没有其他方法可以更快地上传 40gb 文件而不需要等待 12 小时以上?

标签: pythonelasticsearch

解决方案


推荐阅读