python多条件抓去es数据并写入excel(大量数据)

环境:python3.7
注意elasticsearch包要跟es环境版本号对应上

from elasticsearch import Elasticsearch as es
import xlwt

instance = es(hosts='192.168.21.120')

query = {
    "query": {

        "bool": {

            "must": [

                {"wildcard": {"eventLevel": "error"}},

                {"wildcard": {"@message": "*exception*"}}

            ]

        }

    }


}
query_all = {

    "query":{

          "match_all":{}

    }

}
page = instance.search(index='test',doc_type='log',from_=0,body=query,scroll='2m',size=10000)
firstdata = page['hits']['hits']
alldata = [i['_source'] for i in firstdata]
sid = page['_scroll_id']
scroll_size = page['hits']['total']
print('共计命中{}行'.format(scroll_size))
print('scroll_size:{}'.format(len(alldata)))
while scroll_size>0:
    page = instance.scroll(scroll_id=sid,scroll='2m')
    sid = page['_scroll_id']
    scroll_size = len(page['hits']['hits'])
    print('scroll_size:{}'.format(scroll_size))
    data = [i['_source'] for i in page['hits']['hits']]
    alldata  = alldata + data



import os
os.chdir(os.path.dirname(__file__))
'''
wk = xlwt.Workbook(encoding = 'utf-8')
st = wk.add_sheet('data')
'''
import openpyxl
wb = openpyxl.Workbook()
ws = wb.create_sheet("Mysheet")
columns = list(alldata[0].keys())

for line_num in range(len(alldata)):
    line_data = alldata[line_num]
    for k,v in enumerate(line_data.values()):
        ws.cell(row=line_num+1,column=k+1,value=v)
wb.save('result.xlsx')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值