一、插入数据

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数据的更多相关文章

  1. Python批量插入SQL Server数据库

    因为要做性能测试,需要大量造数据到数据库中,于是用python写了点代码去实现,批量插入,一共四张表 简单粗暴地插入10万条数据 import pymssql import random __auth ...

  2. python批量插入mysql数据库(性能相关)以及反引号的使用

    参考link: https://blog.csdn.net/qq_35958094/article/details/78462800(插入相关) https://www.cnblogs.com/hya ...

  3. 机器学习之数据预处理,Pandas读取excel数据

    Python读写excel的工具库很多,比如最耳熟能详的xlrd.xlwt,xlutils,openpyxl等.其中xlrd和xlwt库通常配合使用,一个用于读,一个用于写excel.xlutils结 ...

  4. 用python批量插入数据到数据库中

    既然使用python操作数据库必不可少的得使用pymysql模块 可使用两种方式进行下载安装: 1.使用pip方式下载安装 pip install pymysql 2.IDE方式 安装完成后就可以正常 ...

  5. Python 基于Python从mysql表读取千万数据实践

    基于Python 从mysql表读取千万数据实践   by:授客 QQ:1033553122 场景:   有以下两个表,两者都有一个表字段,名为waybill_no,我们需要从tl_waybill_b ...

  6. MSSQL数据的批量插入

    一.概述: 对于数据的批量插入操作似乎成了某些大数据量操作的必用手段,MSSQL也提供了一些数据批量插入的操作方法,先将这些方法汇总,以便于下次用到使用.面对数据的批量插入操作,我们也应该考虑一个问题 ...

  7. .Net批量插入数据

    1. 一般我们普通数据插入是这样的: 现在我们写一个控制台程序用常规办法添加10000条数据. //以下是批量插入数据的办法 //连接字符串 string str = "Server=.;D ...

  8. python MySQL 插入Elasticsearch

    一.需求分析 注意: 本环境使用 elasticsearch 7.0版本开发,切勿低于此版本 mysql 表结构 有一张表,记录的数据特别的多,需要将7天前的记录,插入到Elasticsearch中, ...

  9. Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案

    转自http://www.cnblogs.com/fnz0/p/5713102.html 不知道自己什么时候才有这种钻研精神- -. 1      背景 系统中需要批量生成单据数据到数据库表,所以采用 ...

随机推荐

  1. JVM虚拟机详解+Tomcat性能优化

    1.JVM(java virtual mechinal) ()JVM有完善的硬件架构,如处理器.堆栈.寄存器当,还具有相应的指令系统. ()JVM的主要工作时解释自己的指令集(即字节码),并映射到本地 ...

  2. (一)sync分析之为啥el-dialog中的visible需要使用.sync

    首先,笔者在使用element-ui 中的dialog组件时,发现visible属性在使用时需要添加.sync才生效,心中好奇,所以研究一下原理 我们先自己创建一个dialog组件,如下 当我们点击关 ...

  3. 化鲲为鹏,我有话说 ,鲲鹏ARM架构的优势

    首先我在想为什么会用到鲲鹏,我个人认为最重要的还是要掌握自主研发的能力,打破国外关键技术的封锁.鲲鹏芯片完全是华为于自主设计内核,华为云Kunpeng服务器关键计算芯片全自研,提供产品可持续供应能力. ...

  4. 全新一代云服务器S6,重新定义性价比

    S6通用计算型云服务器,搭载全新一代处理器,配套华为自研高性能智能网卡,计算与网络性能全面升级.S6进一步强化高性价比定位,满足企业性能要求的同时,降低中小企业上云成本. 更多详情请访问ECS产品介绍 ...

  5. qs库使用指南

    qs是一个流行的查询参数序列化和解析库.可以将一个普通的object序列化成一个查询字符串,或者反过来将一个查询字符串解析成一个object,而且支持复杂的嵌套.它上手很容易: Qs.parse('x ...

  6. React-native ESLint & Prettier & Pre-commit Hook配置

    目录 前言 一 eslint 1.1. 局部安装eslint 1.2 初始化配置文件 1.3 安装步骤 1.3.1 ESLint 风格 选Use a popular style guide 1.3.2 ...

  7. Servlet和Tomcat底层源码分析

    Servlet 源码分析   Servlet 结构图 Servlet 和 ServletConfig 都是顶层接口,而 GenericServlet 实现了这两个顶层接口,然后HttpServlet ...

  8. BZOJ 3033 太鼓达人(DFS+欧拉回路)

    Description 七夕祭上,Vani牵着cl的手,在明亮的灯光和欢乐的气氛中愉快地穿行.这时,在前面忽然出现了一台太鼓达人机台,而在机台前坐着的是刚刚被精英队伍成员XLk.Poet_shy和ly ...

  9. 源码编译安装 ganesha

    源码编译安装 ganesha 简介 系统环境:CentOS 7.5 ceph:luminous nfs-ganesha:v2.6 stable 安装步骤 安装依赖 首先需要安装编译会用到的公共库 1 ...

  10. Python深入之python内存管理机制(重点)

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:醍醐三叶   关于python的存储问题, (1)由于python中 ...