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 相关文章推荐
Python验证码识别的方法
Jul 10 Python
Python外星人入侵游戏编程完整版
Mar 30 Python
python+matplotlib绘制3D条形图实例代码
Jan 17 Python
Python退火算法在高次方程的应用
Jul 26 Python
python从子线程中获得返回值的方法
Jan 30 Python
详解Python3之数据指纹MD5校验与对比
Jun 11 Python
python语言基本语句用法总结
Jun 11 Python
python将字符串转换成json的方法小结
Jul 09 Python
用django设置session过期时间的方法解析
Aug 05 Python
django实现支付宝支付实例讲解
Oct 17 Python
python实现批量提取指定文件夹下同类型文件
Apr 05 Python
教你用Python爬取英雄联盟皮肤原画
Jun 13 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
PHP中的加密功能
2006/10/09 PHP
php生成EXCEL的东东
2006/10/09 PHP
基于PHP5魔术常量与魔术方法的详解
2013/06/13 PHP
php获得url参数中具有&的值的方法
2014/03/05 PHP
什么情况下可以不写PHP的闭合标签“?>”
2014/08/28 PHP
php实现的双色球算法示例
2017/06/20 PHP
完美兼容各大浏览器获取HTTP_REFERER方法总结
2014/06/24 Javascript
javascritp添加url参数将参数加入到url中
2014/09/25 Javascript
jQuery通用的全局遍历方法$.each()用法实例
2016/07/04 Javascript
利用BootStrap弹出二级对话框的简单实现方法
2016/09/21 Javascript
基于JavaScript实现图片剪切效果
2017/03/07 Javascript
基于JavaScript实现焦点图轮播效果
2017/03/27 Javascript
JavaScript+HTML5实现的日期比较功能示例
2017/07/12 Javascript
easyui-datagrid开发实践(总结)
2017/08/02 Javascript
AngularJS实现图片上传和预览功能的方法分析
2017/11/08 Javascript
LayUI表格批量删除方法
2018/08/15 Javascript
javascript中的this作用域详解
2019/07/15 Javascript
Koa从零搭建到Api实现项目的搭建方法
2019/07/30 Javascript
小程序中使用css var变量(使js可以动态设置css样式属性)
2020/03/31 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
2020/04/28 Javascript
微信小程序自定义modal弹窗组件的方法详解
2020/12/20 Javascript
python 第三方库的安装及pip的使用详解
2017/05/11 Python
Python json模块dumps、loads操作示例
2018/09/06 Python
利用Pyhton中的requests包进行网页访问测试的方法
2018/12/26 Python
python3.6实现学生信息管理系统
2019/02/21 Python
pandas实现将dataframe满足某一条件的值选出
2019/06/12 Python
python飞机大战pygame游戏背景设计详解
2019/12/17 Python
Python实现图像去噪方式(中值去噪和均值去噪)
2019/12/18 Python
python 实现 hive中类似 lateral view explode的功能示例
2020/05/18 Python
阿迪达斯西班牙官方网站:adidas西班牙
2016/07/21 全球购物
库存图片、照片、矢量图、视频和音乐:Shutterstock
2021/02/12 全球购物
Linux内核产生并发的原因
2016/11/08 面试题
工商管理专业实习大学生自我鉴定
2013/09/19 职场文书
民族精神月活动总结
2014/08/28 职场文书
小区环境卫生倡议书
2015/04/29 职场文书
保护环境建议书作文400字
2015/09/14 职场文书