bulk插入 es_使用 Python 批量将数据插入到 ES中

本文介绍了如何使用Python的Elasticsearch库进行数据批量插入,对比了顺序插入和批量插入的效率,并展示了如何通过分批写入和使用生成器来避免内存错误和优化性能,以处理大量数据写入的场景。
摘要由CSDN通过智能技术生成

1. 插入数据

现在我们如果有大量的文档(例如10000000万条文档)需要写入es 的某条索引中,该怎么办呢?

1.1 顺序插入

import time

from elasticsearch import Elasticsearch

es = Elasticsearch()

def timer(func):

def wrapper(*args, **kwargs):

start = time.time()

res = func(*args, **kwargs)

print('共耗时约 {:.2f} 秒'.format(time.time() - start))

return res

return wrapper

@timer

def create_data():

""" 写入数据 """

for line in range(100):

es.index(index='s2', doc_type='doc', body={'title': line})

if __name__ == '__main__':

create_data() # 执行结果大约耗时 7.79 秒

1.2 批量插入

import time

from elasticsearch import Elasticsearch

from elasticsearch import helpers

es = Elasticsearch()

def timer(func

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值