如何使用python访问Elasticsearch并实现大批量查询

问题背景:

近期的工作中,获取应用日志数据时,发现采用的是elk架构的日志服务器,需要访问ElasticSearch服务器来查询所需要的日志数据

自己也是第一次接触elk,因此走了不少的弯路,主要遇到的问题有:
1、Python如何连接es服务器——elasticsearch库
2、如何发送查询语句,获取查询结果——Query DSL查询语法
3、查询结果较多时,如何进行查询和保存——scroll方法
4、网络异常/查询失败时,如何自动重连——try+catch+while语法

在爆肝了几个晚上之后,总算把以上的全部问题都解决。目前脚本已经能够自动完成大批量的查询(百万量级以上),更改几个简单的参数就可以查询不同类型的日志数据。

总的来说,以下内容是基于实际工作应用的,可能无法包含所有的情况。大家遇到无法解决的问题都欢迎评论回复沟通

正文

问题1:Python如何连接es服务器

其实非常的简单,Python已经有了完善的库函数elasticsearch,只需要导入第三方库,然后实例化es对象就可以建立连接了。

from elasticsearch import Elasticsearch
es_url = "http://127.0.0.1:9200/"
es = Elasticsearch(es_url)

“http://127.0.0.1:9200/” 换成要访问的es服务器地址就可以,一般端口都是9200
连接过程是非常快的,基本在0.1秒左右就能完成连接的建立。但是这时候不会有数据回传,我们需要通过查询语句,才可以进行访问服务器数据

问题2:如何发送查询语句及获取查询结果
发送查询语句

es储存数据的结构和Mysql之类的数据库,其实是差不多的。都是选定表名,然后执行查询语句,通过es.search方法,可以完成查询的操作

res = es.search(index=index_name,
                body=query_body,
                scroll='20m',      
                request
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值