我有一个包含一百万行数据的数据框。我想使用批量将其保存到elasticsearch。
到目前为止,这是我的方法
from elasticsearch import helpers
import pandas as pd
def save_views(self, df_views):
es = self.es
bulk_data = []
df_views['update_time'] = datetime.now()
df_dicts = df_views.to_dict(orient='records')
for doc in df_dicts:
doc_id = str(doc['date']) + "_" + doc['name']
action = {"_id" : doc_id, "_index" : my_index, "_type" : my_type, "_source" : doc}
bulk_data.append(action)
try:
helpers.bulk(es, bulk_data, stats_only=False)
self.logger.info ("Views saved!")
except Exception as e:
self.logger.error(str(e))
它可以在我的测试环境中运行,但是,它在进程中消耗了大量的ram内存,而我的服务器没有处理它。
是否有更好的方法创建此bulk_data列表?