python批量插入数据到es和读取es数据
一、插入数据
1、首先准备类似如下数据
{"_type": "type1", "_id": 1, "_index": "test", "_source": {"JOBNAME0": "guba_eastmoney_com_265162", "JOBNAME1": "guba_eastmoney_com_265162"}}
2、调用es相关模块插入数据到es中
#!/usr/bin/python
import threading
import queue
import json
import time
from elasticsearch import Elasticsearch
from elasticsearch import helpers
import os
import sys # # host_list = [
# {"host":"10.58.7.190","port":9200},
# {"host":"10.58.55.191","port":9200},
# {"host":"10.58.55.192","port":9200},
# ]
#
host_list = [
{"host":"10.87.7.190","port":9200},
] # create a es clint obj
client = Elasticsearch(host_list) with open(os.path.join(os.path.dirname(os.path.abspath(__file__)),"insert.json"),"r") as f:
for line in f:
actions = []
actions.append(json.loads(line))
try:
for k, v in helpers.parallel_bulk(client=client, thread_count=1, actions=actions):
# 这里的actions是插入es的数据,这个格式必须是列表的格式,列表的每个元素又必须是字典
pass
except Exception as e:
sys.stderr(e)
3、查看es索引中的文档数
[root@test1 cdrom]# curl -XGET 'http://10.87.7.190:9200/_cat/indices?v&pretty'
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open test r91GhsFVT7iF6M3iAuNEKg 2 5 19362 0 1.3mb 499.7kb
二、读取es的数据
#!/usr/bin/python
from kafka import KafkaProducer
import threading
import json
import time
from elasticsearch import Elasticsearch
from elasticsearch import helpers
import os
import sys
import argparse
import random def get_data_from_es():
host_list = [
{"host": "10.58.55.1", "port": 9200},
{"host": "10.58.55.2", "port": 9200},
{"host": "10.58.55.7", "port": 9200},
# {"host": "10.58.55.201", "port": 9200},
# {"host": "10.58.55.202", "port": 9200},
# {"host": "10.58.55.203", "port": 9200},
] es = Elasticsearch(host_list)
err_data_num = 0
correct_data_num = 0
size = 100
query = es.search(index='full_sight', scroll='1m', size=size)
for m in query['hits']['hits']:
# print(m)
d_id = m["_id"]
if "LASTOPER" in m["_source"].keys():
# if "UPDATE_TEST" in m["_source"].keys(): if m["_source"]["LASTOPER"] == "" + str(d_id):
correct_data_num += 1
else:
err_data_num += 1
else:
err_data_num += 1
# print("id为{d_id}数据未更新成功,错误的条数为{num}".format(d_id=d_id, num=err_data_num)) results = query['hits']['hits'] total = query['hits']['total']
scroll_id = query['_scroll_id'] page = divmod(total, size)
if page[1] == 0:
page = page[0]
else:
page = page[0] + 1 for i in range(0, page):
try:
query_scroll = es.scroll(scroll_id=scroll_id, scroll='1m', )['hits']['hits']
except Exception as e:
continue
else:
for m in query_scroll: d_id = m.get("_id",None)
if "LASTOPER" in m["_source"].keys(): if m["_source"]["LASTOPER"] == "test" + str(d_id):
correct_data_num += 1
else:
err_data_num += 1
else:
err_data_num += 1 return err_data_num,correct_data_num if __name__ == '__main__':
while True:
error,correct = get_data_from_es()
print("未更新的数据的条数为:{num}".format(num = error))
print("已更新的数据的条数为:{num}".format(num = correct))
print("=" * 200)
if int(error) == 0:
break
else:
continue
python批量插入数据到es和读取es数据的更多相关文章
- Python批量插入SQL Server数据库
因为要做性能测试,需要大量造数据到数据库中,于是用python写了点代码去实现,批量插入,一共四张表 简单粗暴地插入10万条数据 import pymssql import random __auth ...
- python批量插入mysql数据库(性能相关)以及反引号的使用
参考link: https://blog.csdn.net/qq_35958094/article/details/78462800(插入相关) https://www.cnblogs.com/hya ...
- 机器学习之数据预处理,Pandas读取excel数据
Python读写excel的工具库很多,比如最耳熟能详的xlrd.xlwt,xlutils,openpyxl等.其中xlrd和xlwt库通常配合使用,一个用于读,一个用于写excel.xlutils结 ...
- 用python批量插入数据到数据库中
既然使用python操作数据库必不可少的得使用pymysql模块 可使用两种方式进行下载安装: 1.使用pip方式下载安装 pip install pymysql 2.IDE方式 安装完成后就可以正常 ...
- Python 基于Python从mysql表读取千万数据实践
基于Python 从mysql表读取千万数据实践 by:授客 QQ:1033553122 场景: 有以下两个表,两者都有一个表字段,名为waybill_no,我们需要从tl_waybill_b ...
- MSSQL数据的批量插入
一.概述: 对于数据的批量插入操作似乎成了某些大数据量操作的必用手段,MSSQL也提供了一些数据批量插入的操作方法,先将这些方法汇总,以便于下次用到使用.面对数据的批量插入操作,我们也应该考虑一个问题 ...
- .Net批量插入数据
1. 一般我们普通数据插入是这样的: 现在我们写一个控制台程序用常规办法添加10000条数据. //以下是批量插入数据的办法 //连接字符串 string str = "Server=.;D ...
- python MySQL 插入Elasticsearch
一.需求分析 注意: 本环境使用 elasticsearch 7.0版本开发,切勿低于此版本 mysql 表结构 有一张表,记录的数据特别的多,需要将7天前的记录,插入到Elasticsearch中, ...
- Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案
转自http://www.cnblogs.com/fnz0/p/5713102.html 不知道自己什么时候才有这种钻研精神- -. 1 背景 系统中需要批量生成单据数据到数据库表,所以采用 ...
随机推荐
- 从自动化到智能化,网易杭研的AIOps探索与实践
在大数据时代下,我们借助机器学习.数据仓库.大数据平台等大数据技术手段,将运维产生的数据进行分析.处理,得出最佳运维策略,以期实现对故障的事先干预,将风险降低到最低,从而降低运维成本,提升运维效率,最 ...
- eclipse svn 问题记录
1. 标记为合并,则是 舍弃的是资源库中的文件:覆盖,则是 舍弃本地文件
- 【java基础】Thread类之join方法
- 详解TCP连接的“三次握手”与“四次挥手”(上)
一.TCP connection 客户端与服务器之间数据的发送和返回的过程当中需要创建一个叫TCP connection的东西: 由于TCP不存在连接的概念,只存在请求和响应,请求和响应都是数据包,它 ...
- react-native 相对项目路径导入组件 ___ babel-plugin-module-resolver
babel-plugin-module-resolver 是一个Babel模块解析插件, 在.babelrc中可以配置模块的导入搜索路径. 为模块添加一个新的解析器.这个插件允许你添加新的" ...
- 第6节:Java基础 - 三大集合(上)
第6节:Java基础 - 三大集合(上) 本小节是Java基础篇章的第四小节,主要介绍Java中的常用集合知识点,涉及到的内容包括Java中的三大集合的引出,以及HashMap,Hashtable和C ...
- 2017 ACM/ICPC 沈阳 I题 Little Boxes
Little boxes on the hillside. Little boxes made of ticky-tacky. Little boxes. Little boxes. Little b ...
- (全国多校重现赛一)D Dying light
LsF is visiting a local amusement park with his friends, and a mirror room successfully attracts his ...
- Where/Order by/Ggroup by/Having使用的注意事项
1.Where.Order by.Group by .having Where作用对象是:基本表或视图,从中选出符合条件的元素. Order by 作用对象是:基本表或视图,就是排序方式,分为升序(A ...
- 纯手工搭建K8s(单节点)
准备说明: 因为为纯手动搭建,所以针对安装时需要的一些安装包需提前下载好 cfssl_linux-amd64. cfssljson_linux-amd64. cfssl-certinfo_linux- ...