Python操作es批量读取数据

1. Python连接elasticserach

python连接elasticsearch有一下几种连接方式

pip3 instal elasticsearch

from elasticsearch import Elasticsearch   

es = Elasticsearch()  # 默认连接本地elasticsearch
es = Elasticsearch(["127.0.0.1:9200"])  # 连接本地9200端口
es = Elasticsearch(["192.168.1.10", "192.168.1.11",
"192.168.1.12"],  # 连接集群,以列表的形式存放各节点的IP地址
sniff_on_start=True,    # 连接前测试
sniff_on_connection_fail=True,  # 节点无响应时刷新节点
sniff_timeout=60)    # 设置超时时间

配置可忽略的状态码

es = Elasticsearch([‘127.0.0.1:9200‘],ignore=400)  # 忽略返回的400状态码
es = Elasticsearch([‘127.0.0.1:9200‘],ignore=[400, 405, 502])  # 以列表的形式忽略多个状态码

2.Python操作es批量读取数据

from elasticsearch import Elasticsearch

es = Elasticsearch()

query_json = {
  "query": {
        "match_all": {}  # 获取所有数据
  }
}
page_num = 100  # 每次获取数据

query = es.search(index=8, body=query_json, scroll=‘5m‘, size=page_num)

results = query[‘hits‘][‘hits‘]  # es查询出的结果第一页
total = query[‘hits‘][‘total‘]  # es查询出的结果总量
scroll_id = query[‘_scroll_id‘]  # 游标用于输出es查询出的所有结果
every_num = int(total/page_num)  #

alist = []
for i in range(0, every_num+1):
    # scroll参数必须指定否则会报错
    query_scroll = es.scroll(scroll_id=scroll_id, scroll=‘5m‘)[‘hits‘][‘hits‘]
    results += query_scroll
for key in results:
    es_data_dict = key["_source"]["word"]
    # print(es_data_dict)
    alist.append(es_data_dict)
print(len(alist))

参考资料地址:https://blog.csdn.net/fwj_ntu/article/details/87863788?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

原文地址:https://www.cnblogs.com/zangyue/p/12521095.html

时间: 2024-10-11 11:55:19

Python操作es批量读取数据的相关文章

php操作XML,读取数据和写入数据的方法

xml文件 <?xml version="1.0" encoding="utf-8"?> <vip> <id>23</id> <username>开心的路飞</username> <sex>男</sex> <face>face/43.jpg</face> <email>[email protected]</email> &l

python操作txt文件中数据教程[1]-使用python读写txt文件

python操作txt文件中数据教程[1]-使用python读写txt文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 原始txt文件 程序实现后结果 程序实现 filename = './test/test.txt' contents = [] DNA_sequence = [] # 打开文本并将所有内容存入contents中 with open(filename, 'r') as f: for line in f.readlines(): contents.append(line

在ES批量插入数据超时时自动重试

当我们使用ES批量插入数据的时候,一般会这样写代码: from elasticsearch import Elasticsearch,helpers es =Elasticsearch(hosts=[{'host':'localhost','port':9200}]) def gendata(): mywords =['foo','bar','baz'] for word in mywords: yield {"_index":"mywords","_ty

Python从文件中读取数据(2)

一.读取文件中各行的内容并存储到一个列表中 继续用resource.txt 举例 resource.txt my name is joker, I am 18 years old, How about you? test.py 1 file_name = 'resource.txt' 2 3 with open(file_name) as file_obj: 4 lines = file_obj.readlines() 5 print(lines) 控制台打印如下: 解释:可以看到在file_o

使用python向Redis批量导入数据

1.使用pipeline进行批量导入数据.包含先使用rpush插入数据,然后使用expire改动过期时间 class Redis_Handler(Handler): def connect(self): #print self.host,self.port,self.table self.conn = Connection(self.host,self.port,self.table) def execute(self, action_name): filename = "/tmp/temp.t

项目测试一 批量读取数据到数组

功能实现: 通过Reader类方法每次读入一行数据,然后对该行的8列数据进行转换为double型,显示  (n列) 通过readLine方法判断行是否读取完,进而判断有多少行  (m行) 功能缺陷: 虽然实现了对每一行数据按空格截取(使用正则可以区分多个空格),但是没有做到将数据读到二维数组中,然后对数据处理 代码: package com.swust.file; import java.io.*; public class fileTest { public static void main(

Python操作es

操作几个方面 结果过滤,对于返回结果做过滤,主要是优化返回内容. 直接操作elasticsearch对象,处理一些简单的索引信息.一下几个方面都是建立在es对象的基础上. Indices,关于索引的细节操作,比如创建自定义的mappings. Cluster,关于集群的相关操作. Nodes,关于节点的相关操作. Cat API,换一种查询方式,一般的返回都是json类型的,cat提供了简洁的返回结果. Snapshot,快照相关,快照是从正在运行的Elasticsearch集群中获取的备份.我

Python操作Word批量生成文章

需要做一些会议记录.总共有多少呢?五个地点x7个月份x每月4篇=140篇.虽然不很重要,但是140篇记录完全雷同也不好.大体看了一下,此类的记录大致分为四段.于是决定每段提供四种选项,每段从四选项里随机选一项,拼凑成四段文字,存成一个文件.而且要打印出来,所以准备生成一个140页的Word文档,每页一篇. 需要用到win32com模块(下载链接:http://sourceforge.net/projects/pywin32/files/), 通过COM让Python与Word建立连接.代码如下:

Python操作mysql之插入数据

之前有写过一篇python查询mysql数据的文章,今天写通过python插入数据到mysql数据库. 1.先建库,建表,建用户 mysql> create database top_ten; mysql> use top_ten mysql> create table log (id int PRIMARY KEY  AUTO_INCREMENT, ip char(20), url char(30), status int, total int) charset=utf8; mysql