es数据导出csv文件

简介: es数据导出csv文件

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!')

参考地址:
https://blog.csdn.net/github_27244019/article/details/115351640

相关文章
|
7月前
|
Java Apache
导出csv格式的文件
导出csv格式的文件
69 0
|
4月前
|
存储 Python
使用CSV模块读取CSV文件--含代码
使用CSV模块读取CSV文件--含代码
50 0
|
4月前
|
开发框架 算法 .NET
C#使用MiniExcel导入导出数据到Excel/CSV文件
C#使用MiniExcel导入导出数据到Excel/CSV文件
110 0
|
7月前
|
关系型数据库 大数据 Python
如何快速创建千万行CSV 数据?
如何快速创建千万行CSV 数据?
178 0
|
存储 数据挖掘 数据库
|
关系型数据库 数据库 PostgreSQL
导出CSV文件
导出CSV文件
388 0
|
SQL Shell 数据库
利用groovy把表中数据导出成txt或csv
胶水语言就是胶水,写起也挺快的.这个脚本主要是从数据库中把表中的数据导出来生成文件.而不用每次都打开数据库编辑器去手工收集.
1135 0
|
关系型数据库 MySQL 中间件
Hyperf结合PhpOffice/PhpSpreadsheet实现Excel&CSV文件导出导入
Hyperf结合PhpOffice/PhpSpreadsheet实现Excel&CSV文件导出导入。PhpSpreadsheet是一个用纯PHP编写的库,它提供了一组类,允许您读取和写入各种电子表格文
1011 0
Hyperf结合PhpOffice/PhpSpreadsheet实现Excel&CSV文件导出导入
|
分布式计算 Hadoop 分布式数据库
通过Datax将CSV文件导入Hbase,导入之前的CSV文件大小和导入之后的Hadoop分布式文件大小对比引入的思考
由于项目需要做系统之间的离线数据同步,因为实时性要求不高,因此考虑采用了阿里的datax来进行同步。在同步之前,将数据导出未csv文件,因为需要估算将来的hbase运行的hadoop的分布式文件系统需要占用多少磁盘空间,因此想到了需要做几组测试。
2289 0