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爬虫之爬虫的定义及URL构成
Nov 04 Python
Python中为什么要用self探讨
Apr 14 Python
深入理解Python对Json的解析
Feb 14 Python
利用python写个下载teahour音频的小脚本
May 08 Python
详解如何使用Python编写vim插件
Nov 28 Python
Python中将变量按行写入txt文本中的方法
Apr 03 Python
python elasticsearch环境搭建详解
Sep 02 Python
对Tensorflow中tensorboard日志的生成与显示详解
Feb 04 Python
Pycharm最常用的快捷键及使用技巧
Mar 05 Python
Python docutils文档编译过程方法解析
Jun 23 Python
python为什么会环境变量设置不成功
Jun 23 Python
2021年最新用于图像处理的Python库总结
Jun 15 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 has encountered an Access Violation
2007/01/15 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
php使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
jQuery EasyUI API 中文文档 - Calendar日历使用
2011/10/19 Javascript
js将json格式内容转换成对象的方法
2013/11/01 Javascript
javascript中不提供sleep功能如何实现这个功能
2014/05/27 Javascript
谈谈对offsetleft兼容性的理解
2015/11/11 Javascript
js clearInterval()方法的定义和用法
2015/11/11 Javascript
详解javascript遍历方式
2015/11/11 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
2016/01/04 Javascript
JavaScript Math 对象常用方法总结
2016/04/28 Javascript
基于JavaScript实现点击页面任何位置返回
2016/08/31 Javascript
关于使用js算总价的问题
2017/06/23 Javascript
详解webpack模块加载器兼打包工具
2018/09/11 Javascript
webpack开发环境和生产环境的深入理解
2018/11/08 Javascript
js中arguments对象的深入理解
2019/05/14 Javascript
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
vue如何实现自定义底部菜单栏
2019/07/01 Javascript
JS数组方法concat()用法实例分析
2020/01/18 Javascript
js和jquery判断数据类型的4种方法总结
2020/08/28 jQuery
Python生成验证码实例
2014/08/21 Python
python利用rsa库做公钥解密的方法教程
2017/12/10 Python
Django使用httpresponse返回用户头像实例代码
2018/01/26 Python
Python3列表内置方法大全及示例代码小结
2019/05/10 Python
Python如何在DataFrame增加数值
2020/02/14 Python
使用python-cv2实现视频的分解与合成的示例代码
2020/10/26 Python
Django后端按照日期查询的方法教程
2021/02/28 Python
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
机械工程师求职自我评价
2013/09/23 职场文书
自动化专业个人求职信范文
2013/11/29 职场文书
《中华少年》教学反思
2014/02/15 职场文书
店面销售职位的职责
2014/03/09 职场文书
销售经理岗位职责
2014/03/16 职场文书
导游词之北京明十三陵
2019/10/28 职场文书
5行Python代码实现一键批量扣图
2021/06/29 Python
python脚本框架webpy模板控制结构
2021/11/20 Python