import pymongo
import math
from elasticsearch import Elasticsearch
from elasticsearch import helpers
import time
HOST = ['ip:端口']
es = Elasticsearch(HOST,timeout=3600) # 链接ES HOST可以是[ip:端口,ip:端口] 的集群
client = pymongo.MongoClient("") # 链接数据库
db = client["blue_book_news_dev"]["blue_book_news"]
# 统计mongo里面的数量, 计算分页
nums = db.count()
print(nums)
pages = math.ceil(nums/500)
_index = "ai51_main_prod"
start_time = time.time()
for i in range(pages):
n = 500 * i
print("第{}多少个500,第{}条".format(i,n))
l=list(db.find({},projection={'_id':False,'news_url': True,"content":True,"title": True,"publish_time":True}).skip(n).limit(500))
for line in l:
actions = []
if line.get("news_url"):
action = {
"_index": _index, # 类似于主键类型
"_type": "sources", # 类型
"_id": line["news_url"], # id 如果不自己定义系统会给创建
"_source": {
"page_category": None,
"url": line.get("news_url"),
"article_title": line.get("title"),
"article_content": line.get("content"),
"publish_time_raw": line.get("publish_time"),
"publish_time_nomalized": None,
"summary":None }}
actions.append(action)
helpers.bulk(es, actions) # 批量写入 end_time =time.time()
print(start_time-end_time)

  

mongo批量写入es的更多相关文章

  1. Spring Boot + Elasticsearch 实现索引批量写入

    在使用Eleasticsearch进行索引维护的过程中,如果你的应用场景需要频繁的大批量的索引写入,再使用上篇中提到的维护方法的话显然效率是低下的,此时推荐使用bulkIndex来提升效率.批写入数据 ...

  2. Flink从Kafka取数WordCount后TableApi写入ES

    一.背景说明 需求为从Kafka消费对应主题数据,通过TableApi对数据进行WordCount后,基于DDL写法将数据写入ES. 二.代码部分 说明:代码中关于Kafka及ES的连接部分可以抽象到 ...

  3. DataTable数据批量写入数据库三种方法比较

    DataTable数据批量写入数据库三种方法比较 标签: it 分类: C#1)   insert循环插入:2)   sqldataadapter.update(dataset,tablename); ...

  4. mysql批量写入

    MySQL批量写入语法是: INSERT INTO table (field1,field2,field3) VALUES (“a”,”b”,”c”), (“a1”,”b1”,”c1”),(“a2”, ...

  5. SqlBulkCopy批量写入25万条数据只需3s

    Microsoft SQL Server 提供一个称为 bcp 的流行的命令提示符实用工具,用于将数据从一个表移动到另一个表(表既可以在同一个服务器上,也可以在不同服务器上).SqlBulkCopy  ...

  6. openerp 产品图片的批量写入

    Write a short python script which loops over the image files, encode with base64 and write to OpenER ...

  7. MySQL通用批量写入工具(Python)

    背景   平台目前的分析任务主要以Hive为主,分析后的结果存储在HDFS,用户通过REST API或者Rsync的方式获取分析结果,这样的方式带来以下几个问题:   (1)任务执行结束时间未知,用户 ...

  8. 使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历

    原文:使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历 常常遇到需要向SQL Server插入批量数据,然后在存储过程中对这些数据进行进一步处理的情况.存储过 ...

  9. Python-将json文件写入ES数据库

    1.安装Elasticsearch数据库 PS:在此之前需首先安装Java SE环境 下载elasticsearch-6.5.2版本,进入/elasticsearch-6.5.2/bin目录,双击执行 ...

随机推荐

  1. Python3 Selenium自动化web测试 ==>FAQ:PyCharm中脚本不执行main函数内容解决方案

    FAQ: 情景:之前写好可以正常执行的python脚本,突然main函数下的代码不运行 原因:pycharm中,会设置py脚本按照unittest的方式运行,也就是只运行用例,不运行main函数下代码 ...

  2. 解决升Win10系统后VMware虚拟机不能联网的问题

    刚升级到Win10系统,打开虚拟机发现不能联网,其实是系统服务项里缺少两个用到的服务,不能联网了,下面教大家解决联网问题. 1.打开VMware虚拟机主页,点击“编辑——虚拟网络编辑器”. 2.点击左 ...

  3. kibana配置文件说明书

    #端口号 server.port: 5601 #kibana服务安装的地址 server.host: "192.168.122.21" #当使用代理时,这里可能对应的是加工后的ki ...

  4. vue-router 在微信浏览器中操作history URl未改变的解决方案

    在PC端和手机浏览器中router.replace() or router.push()能够正常使用,页面的地址和页面都正常显示:但是在微信中,从/a页面通过router.push('/b')跳转到/ ...

  5. elasticsearch进行远程访问,所面对的问题解决方案

    elasticsearch6.2进行远程访问,修改yml文件后,启动会报错: 上面四个问题解决方案如下: 问题1,问题2,问题3,解决如下: 注意: 针对第二个问题,你可能在limits.d目录中没有 ...

  6. js中实现输入框类似百度搜索的智能提示效果

    说明:我这里显示的数据采用词典(词典在js中自定义的,看下面文字),主要显示key. 页面元素: <style type="text/css">.search { le ...

  7. LC 599. Minimum Index Sum of Two Lists

    题目描述 Suppose Andy and Doris want to choose a restaurant for dinner, and they both have a list of fav ...

  8. NOIP(CSP)答题技巧&小细节

    1.主函数类型 通常使用int main(),然而可以使用完全等价的signed main() 解锁 #define int long long  的操作 2.long long 的使用 数列长度/边 ...

  9. linux下如何查看一个服务所在的安装路径?

    当接手一个不是自己维护的linux服务器,我们常常会想要看看该服务器上是否安装了某个服务,这个服务安装的路径在哪? redis 是开发过程中常常会用到的一个服务,我这里就以这个服务为例,进行说明. 1 ...

  10. Go语言学习之斐波那契数列的测试例子和定义常量方法

    ### Go语言学习之斐波那契数列的测试例子和定义常量方法 1.go语言中测试文件必须以test.go结尾,比如:fib_test.go 2.测试文件内的方法必须是Test开头,比如:func Tes ...