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中List.index()方法的使用教程
May 20 Python
详解Python 协程的详细用法使用和例子
Jun 15 Python
用python脚本24小时刷浏览器的访问量方法
Dec 07 Python
python3.x实现base64加密和解密
Mar 28 Python
Pycharm+Python+PyQt5使用详解
Sep 25 Python
Python pandas自定义函数的使用方法示例
Nov 20 Python
Python编程快速上手——强口令检测算法案例分析
Feb 29 Python
python实现npy格式文件转换为txt文件操作
Jul 01 Python
浅谈优化Django ORM中的性能问题
Jul 09 Python
Python中Yield的基本用法
Oct 18 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
Jan 12 Python
python 高阶函数简单介绍
Feb 19 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通过COM使用ADODB的简单例子
2006/12/31 PHP
php自定义函数截取汉字长度
2014/05/15 PHP
PHP使用标准库spl实现的观察者模式示例
2018/08/04 PHP
jquery 实现表单验证功能代码(简洁)
2012/07/03 Javascript
Jquery写一个鼠标拖动效果实现原理与代码
2012/12/24 Javascript
JS实现悬浮移动窗口(悬浮广告)的特效
2013/03/12 Javascript
将json对象转换为字符串的方法
2014/02/20 Javascript
百度地图自定义控件分享
2015/03/04 Javascript
JavaScript设计模式学习之“类式继承”
2015/03/12 Javascript
setTimeout内不支持jquery的选择器的解决方案
2015/04/28 Javascript
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
2015/10/08 Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
2017/12/07 Javascript
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
基于node搭建服务器,写接口,调接口,跨域的实例
2018/05/13 Javascript
解决Layui数据表格的宽高问题
2019/09/28 Javascript
[01:10]DOTA2英雄背景故事第四期之混沌法则混沌骑士
2020/07/16 DOTA
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
Python时间模块datetime、time、calendar的使用方法
2016/01/13 Python
python实现将excel文件转化成CSV格式
2018/03/22 Python
python的schedule定时任务模块二次封装方法
2019/02/19 Python
Python中Numpy mat的使用详解
2019/05/24 Python
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
2019/06/04 Python
Django的性能优化实现解析
2019/07/30 Python
python爬虫之爬取百度音乐的实现方法
2019/08/24 Python
python实现QQ邮箱发送邮件
2020/03/06 Python
Python爬虫制作翻译程序的示例代码
2021/02/22 Python
送给他或她的礼物:FUN.com
2018/08/17 全球购物
广州品高软件.net笔面试题目
2012/04/18 面试题
倡导文明标语
2014/06/16 职场文书
乡镇保密工作责任书
2014/07/28 职场文书
合伙经营协议书范本
2014/09/13 职场文书
老人节主持词
2015/07/04 职场文书
Pytorch中Softmax和LogSoftmax的使用详解
2021/06/05 Python
postman中form-data、x-www-form-urlencoded、raw、binary的区别介绍
2022/01/18 HTML / CSS
Python下载商品数据并连接数据库且保存数据
2022/03/31 Python
VUE之图片Base64编码使用ElementUI组件上传
2022/04/09 Vue.js