当前位置: 首页 > news >正文

微信网站建设流程图江阴百度推广公司

微信网站建设流程图,江阴百度推广公司,校园宿舍网网络设计案例,天辰建设网站1. 插入数据 现在我们如果有大量的文档(例如10000000万条文档)需要写入es 的某条索引中,该怎么办呢? 1.1 顺序插入 import time from elasticsearch import Elasticsearches Elasticsearch()def timer(func):def wrapper(*arg…

1. 插入数据

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

1.1 顺序插入

import time
from elasticsearch import Elasticsearches = Elasticsearch()def timer(func):def wrapper(*args, **kwargs):start = time.time()res = func(*args, **kwargs)print('共耗时约 {:.2f} 秒'.format(time.time() - start))return resreturn 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 helperses = Elasticsearch()def timer(func):def wrapper(*args, **kwargs):start = time.time()res = func(*args, **kwargs)print('共耗时约 {:.2f} 秒'.format(time.time() - start))return resreturn wrapper@timer
def create_data():""" 写入数据 """for line in range(100):es.index(index='s2', doc_type='doc', body={'title': line})@timer
def batch_data():""" 批量写入数据 """action = [{"_index": "s2","_type": "doc","_source": {"title": i}} for i in range(10000000)]helpers.bulk(es, action)if __name__ == '__main__':# create_data()batch_data()  # MemoryError

我们通过elasticsearch模块导入helper,通过helper.bulk来批量处理大量的数据。首先我们将所有的数据定义成字典形式,各字段含义如下:

  • _index对应索引名称,并且该索引必须存在。
  • _type对应类型名称。
  • _source对应的字典内,每一篇文档的字段和值,可有有多个字段。

首先将每一篇文档(组成的字典)都整理成一个大的列表,然后,通过helper.bulk(es, action)将这个列表写入到es对象中。
然后,这个程序要执行的话——你就要考虑,这个一千万个元素的列表,是否会把你的内存撑爆(MemoryError)!很可能还没到没到写入es那一步,却因为列表过大导致内存错误而使写入程序崩溃!很不幸,我的程序报错了。下图是我在生成列表的时候,观察任务管理器的进程信息,可以发现此时Python消耗了大量的系统资源,而运行es实例的Java虚拟机却没什么变动。

解决办法是什么呢?我们可以分批写入,比如我们一次生成长度为一万的列表,再循环着去把一千万的任务完成。这样, Python和Java虚拟机达到负载均衡。

下面的示例测试10万条数据分批写入的速度

import time
from elasticsearch import Elasticsearch
from elasticsearch import helperses = Elasticsearch()def timer(func):def wrapper(*args, **kwargs):start = time.time()res = func(*args, **kwargs)print('共耗时约 {:.2f} 秒'.format(time.time() - start))return resreturn wrapper
@timer
def batch_data():""" 批量写入数据 """# 分批写# for i in range(1, 10000001, 10000):#     action = [{#         "_index": "s2",#         "_type": "doc",#         "_source": {#             "title": k#         }#     } for k in range(i, i + 10000)]#     helpers.bulk(es, action)# 使用生成器for i in range(1, 100001, 1000):action = ({"_index": "s2","_type": "doc","_source": {"title": k}} for k in range(i, i + 1000))helpers.bulk(es, action)if __name__ == '__main__':# create_data()batch_data()	# 耗时 93.53 s

1.3 批量插入优化

采用 Python 生成器

import time
from elasticsearch import Elasticsearch
from elasticsearch import helperses = Elasticsearch()def timer(func):def wrapper(*args, **kwargs):start = time.time()res = func(*args, **kwargs)print('共耗时约 {:.2f} 秒'.format(time.time() - start))return resreturn wrapper
@timer
def gen():""" 使用生成器批量写入数据 """action = ({"_index": "s2","_type": "doc","_source": {"title": i}} for i in range(100000))helpers.bulk(es, action)if __name__ == '__main__':# create_data()# batch_data()gen()		# 约90s

参考文章:https://www.cnblogs.com/Neeo/articles/10788573.html

http://www.yayakq.cn/news/193807/

相关文章:

  • 电商网站设计思路免费购物网站建设
  • 潍坊做网站的公司ui培训班一般学费多少
  • 网站建设策划基本流程广州seo学徒
  • 沈阳响应式网站制作wordpress的版本号
  • 在线教育网站开发软件上海市建设网站
  • wordpress建购物网站wordpress的阅读量
  • 如何让域名跳转网站网站宝建站助手
  • 设计师网站推荐免费表格模板网站
  • 搭建网站有费用吗wordpress 做app分销
  • 021新手学做网站宣传海报模板
  • app 网站 区别百度搜索智能精选
  • 网站建设与管理的论文wordpress插件后台慢
  • 推销产品怎样才能打动客户搜索引擎优化面对哪些困境
  • 做pc端网站如何阳江最新通知今天
  • 网站建设策划书 范文公司网站设计需要多少钱
  • 百度SEO网站山西公司网站建设效果
  • 成都网站建设软件网站地图 格式
  • 做3d图的网站有哪些外国做营销方案的网站
  • 微小店网站建设费用北京丰台做网站
  • wordpress怎么关注站点网站是怎么被挂马
  • 做网站都要用到框架吗从零学建设网站
  • 做网站软件图标是一个箭头的深圳网络营销推广
  • 网站建设仿站企业公司企业咨询管理培训公司
  • 网络公司手机网站外贸俄罗斯俄语网站开发
  • 苏州学做网站电子工程师培训机构哪个好
  • 广州网站设计权威乐云践新做网站需要哪些参考文献
  • 免费北京网站建设南宁网站建设企业网站
  • 九江市建设规划局网站喷码机营销型网站
  • 网站建设公司怎样选手机在线做ppt的网站
  • 苏州沧浪区做网站的直播网站开发教程