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 相关文章推荐
在Django的模型中执行原始SQL查询的方法
Jul 21 Python
Python基于pygame实现的font游戏字体(附源码)
Nov 11 Python
Python实现在线音乐播放器
Mar 03 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
May 07 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
Jun 13 Python
python-Web-flask-视图内容和模板知识点西宁街
Aug 23 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
Oct 30 Python
Pycharm和Idea支持的vim插件的方法
Feb 21 Python
idea2020手动安装python插件的实现方法
Jul 17 Python
如何在Python3中使用telnetlib模块连接网络设备
Sep 21 Python
python 如何实现遗传算法
Sep 22 Python
Python爬虫之爬取二手房信息
Apr 27 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
BBS(php & mysql)完整版(八)
2006/10/09 PHP
PHP易混淆函数的区别及用法汇总
2014/11/22 PHP
php清除和销毁session的方法分析
2015/03/19 PHP
php layui实现前端多图上传实例
2019/07/30 PHP
PHP 裁剪图片
2021/03/09 PHP
取得一定长度的内容,处理中文
2006/12/20 Javascript
js实现iframe动态调整高度的代码
2008/01/06 Javascript
javascript使用中为什么10..toString()正常而10.toString()出错呢
2013/01/11 Javascript
常用的jQuery前端技巧收集
2014/12/24 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
2016/08/05 Javascript
Bootstrap3 datetimepicker控件使用实例
2016/12/13 Javascript
AngularJS 最常用的八种功能(基础知识)
2017/06/26 Javascript
vue+mockjs模拟数据实现前后端分离开发的实例代码
2017/08/08 Javascript
three.js中文文档学习之通过模块导入
2017/11/20 Javascript
Vue.js路由实现选项卡简单实例
2019/07/24 Javascript
python多线程http下载实现示例
2013/12/30 Python
python海龟绘图实例教程
2014/07/24 Python
python的类变量和成员变量用法实例教程
2014/08/25 Python
python正则表达式的使用
2017/06/12 Python
Python简单计算文件MD5值的方法示例
2018/04/11 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
2019/04/11 Python
使用python实现unix2dos和dos2unix命令的例子
2019/08/13 Python
python基于socket实现的UDP及TCP通讯功能示例
2019/11/01 Python
pytorch模型预测结果与ndarray互转方式
2020/01/15 Python
Python-jenkins模块之folder相关操作介绍
2020/05/12 Python
日本高端护肤品牌:Tatcha
2016/08/29 全球购物
澳大利亚在线购买儿童玩具:Toy Universe
2017/12/28 全球购物
80年代复古T恤:TruffleShuffle
2018/07/02 全球购物
TCP/IP的分层模型
2013/10/27 面试题
会计与出纳自荐书范文
2014/03/16 职场文书
本科毕业生求职自荐信
2014/04/09 职场文书
2014年党员自我评议对照检查材料
2014/09/20 职场文书
2016教师年度考核评语大全
2015/12/01 职场文书
python实现简单倒计时功能
2021/04/21 Python
浅谈Redis存储数据类型及存取值方法
2021/05/08 Redis
vue中data里面的数据相互使用方式
2022/06/05 Vue.js