python批量从es取数据的方法(文档数超过10000)


Posted in Python onDecember 27, 2018

如下所示:

"""
提取文档数超过10000的数据
按照某个字段的值具有唯一性进行升序,
按照@timestamp进行降序,
第一次查询,先将10000条数据取出,
取出最后一个时间戳,
在第二次查询中,设定@timestamp小于将第一次得到的最后一个时间戳,
同时设定某个字段的值具有唯一性进行升序,
按照@timestamp进行降序,
"""

from elasticsearch import Elasticsearch
import os

write_path = "E:\\公司\\案例数据采集\\olt告警案例分析\\10000_data.txt"
es = Elasticsearch(hosts="", timeout=1500)
write_file = open(write_path, "a+")


def _first_query():
  index_ = "gather-010"
  _source = ["TWICE_BOOK_TIME", "@timestamp"]
  try:
    rs = es.search(index=index_, body={
      "size": 10000,
      "query": {
        "match_all": {}
      },
      "sort": [
        {
          "@timestamp": {
            "order": "desc"
          }
        },
        {
          "TASK_RECEIVE_ID.keyword": {
            "order": "asc"
          }
        }
      ],
      "_source": _source
    })
    return rs
  except:
    raise Exception("{0} search error".format(index_))


def _get_first_data(first_rs):
  i = 0
  if first_rs:
    for hit in first_rs['hits']['hits']:
      IptvAccount = hit['_source']['TWICE_BOOK_TIME']
      timestamp = hit['_source']['@timestamp']
      if IptvAccount is None:
        IptvAccount = ""
      write_file.write(IptvAccount + "," + timestamp + "\n")
      i += 1
      if i == 10000:
        return timestamp


def _second_query(timestamp):
  index_ = "gather-010"
  _source = ["TWICE_BOOK_TIME", "@timestamp"]
  try:
    rs = es.search(index=index_, body={
      "size": 10000,
      "query": {
        "bool": {
          "filter": {
            "range": {
              "@timestamp": {
                "lt": timestamp
              }
            }
          }
        }
      },
      "sort": [
        {
          "@timestamp": {
            "order": "desc"
          }
        },
        {
          "TASK_RECEIVE_ID.keyword": {
            "order": "asc"
          }
        }
      ],
      "_source": _source
    })
    return rs
  except:
    raise Exception("{0} search error".format(index_))


if __name__ == "__main__":
  first_rs = _first_query()
  first_timestamp = _get_first_data(first_rs)
  print(first_timestamp)
  while True:
    second_rs = _second_query(first_timestamp)
    first_timestamp = _get_first_data(second_rs)
    if first_timestamp is None:
      break
    print(first_timestamp)

以上这篇python批量从es取数据的方法(文档数超过10000)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用pdb模块调试Python程序实例
Jun 02 Python
在windows下快速搭建web.py开发框架方法
Apr 22 Python
python字典操作实例详解
Nov 16 Python
Python实现一个服务器监听多个客户端请求
Apr 12 Python
python 多维切片之冒号和三个点的用法介绍
Apr 19 Python
Flask框架实现给视图函数增加装饰器操作示例
Jul 16 Python
Python函数参数操作详解
Aug 03 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
Dec 22 Python
解决tensorflow读取本地MNITS_data失败的原因
Jun 22 Python
Python如何读取、写入JSON数据
Jul 28 Python
python opencv检测直线 cv2.HoughLinesP的实现
Jun 18 Python
Python 绘制多因子柱状图
May 11 Python
python 与服务器的共享文件夹交互方法
Dec 27 #Python
通过pykafka接收Kafka消息队列的方法
Dec 27 #Python
python利用thrift服务读取hbase数据的方法
Dec 27 #Python
python hbase读取数据发送kafka的方法
Dec 27 #Python
Python类和对象的定义与实际应用案例分析
Dec 27 #Python
在python环境下运用kafka对数据进行实时传输的方法
Dec 27 #Python
kafka-python批量发送数据的实例
Dec 27 #Python
You might like
双料怀旧--SHARP GF515的维护、修理和简单调试
2021/03/02 无线电
MySQL授权问题总结
2007/05/06 PHP
PHP curl模拟浏览器采集阿里巴巴的实现代码
2011/04/20 PHP
解决PHP超大文件下载,断点续传下载的方法详解
2013/06/06 PHP
PHP模板引擎Smarty的缓存使用总结
2014/04/24 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
2014/06/25 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
PHP的imageTtfText()函数深入详解
2021/03/03 PHP
鼠标图片振动代码
2006/07/06 Javascript
js 匿名调用实现代码
2009/06/19 Javascript
JavaScript节点及列表操作实例小结
2015/08/05 Javascript
基于Javascript实现倒计时功能
2016/02/22 Javascript
Bootstrap被封装的弹层
2016/07/20 Javascript
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
微信小程序表单弹窗实例
2018/07/19 Javascript
vue表单自定义校验规则介绍
2018/08/28 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
2019/09/23 Javascript
JS实现无限轮播无倒退效果
2020/09/21 Javascript
浅谈nuxtjs校验登录中间件和混入(mixin)
2020/11/06 Javascript
在Mac OS系统上安装Python的Pillow库的教程
2015/11/20 Python
Python中struct模块对字节流/二进制流的操作教程
2017/01/21 Python
python3实现多线程聊天室
2018/12/12 Python
python 阶乘累加和的实例
2019/02/01 Python
Django中ORM外键和表的关系详解
2019/05/20 Python
python操作小程序云数据库实现简单的增删改查功能
2019/06/06 Python
python flask中动态URL规则详解
2019/11/22 Python
浅谈keras保存模型中的save()和save_weights()区别
2020/05/21 Python
python绘制高斯曲线
2021/02/19 Python
Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 (附转换公式)
2020/03/18 HTML / CSS
马德里著名的运动鞋商店:NOIRFONCE
2019/04/12 全球购物
环境工程大学生自荐信
2013/10/21 职场文书
应届生面试求职信
2014/07/02 职场文书
十佳少年事迹材料
2014/12/25 职场文书
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
2022/04/11 Python
Python中的socket网络模块介绍
2022/07/23 Python