有勇气的牛排博客
☰

es数据导出csv文件

有勇气的牛排 1272 Python 2023-05-18 21:00:28

知止自律打卡-微信小程序APP
一款微信自律打卡小程序,支持自定义打卡项目、习惯记录、项目日记、专注计时与数据统计。自律打卡、学习打卡、读书打卡、健身打卡、运动打卡、减肥打卡、戒色打卡、养生打卡、戒烟、戒酒、戒熬夜等多种场景。万能打卡模板自由创建。可自定义每日打卡目标,记录习惯连续天数,可视化追踪成长进度。
了解产品详情 →
微信搜索「知止自律打卡」
知止自律打卡微信小程序

1 介绍

es数据导出到csv文件,暂时不考虑效率问题,仅谈实现方式。

2 python3

def connect_elk(): client = Elasticsearch(hosts='http://192.168.56.20:9200', http_auth=("elastic", "elastic密码"), # 在做任何操作之前,先进行嗅探 # sniff_on_start=True, # 节点没有响应时,进行刷新,重新连接 sniff_on_connection_fail=True, # 每 60 秒刷新一次 sniffer_timeout=60 ) return client
from elasticsearch import Elasticsearch import csv # 获取es数据库 from common.util_es import connect_elk es = connect_elk() ''' 查询所有数据并导出 ''' index = 'blog_rate' body = {} item = ["r_id", "a_id"] # body = { # "query": { # "match": {"name": "张三"}, # } # } def ExportCsv(index, body,item): query = es.search(index=index, body=body, scroll='5m', size=1000) # es查询出的结果第一页 results = query['hits']['hits'] # es查询出的结果总量 total = query['hits']['total']["value"] # 游标用于输出es查询出的所有结果 scroll_id = query['_scroll_id'] for i in range(0, int(total / 100) + 1): # scroll参数必须指定否则会报错 query_scroll = es.scroll(scroll_id=scroll_id, scroll='5m')['hits']['hits'] results += query_scroll with open('./' + index + '.csv', 'w', newline='', encoding="utf_8_sig") as flow: csv_writer = csv.writer(flow) for res in results: csvrow1 = [] for i in item: csvrow1.append(res["_source"][i]) csv_writer.writerow(csvrow1) print('done!')

评论区

×
×