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的Flask框架开发环境的一些技巧总结
Jul 12 Python
python实现八大排序算法(1)
Sep 14 Python
Python2/3中urllib库的一些常见用法
Dec 19 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
Apr 11 Python
python动态进度条的实现代码
Jul 03 Python
Python @property装饰器原理解析
Jan 22 Python
带你学习Python如何实现回归树模型
Jul 16 Python
python openCV实现摄像头获取人脸图片
Aug 20 Python
如何创建一个Flask项目并进行简单配置
Nov 18 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
Jan 08 Python
Python tkinter实现日期选择器
Feb 22 Python
Python字符串常规操作小结
Apr 03 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 获取客户端真实IP地址多种方法小结
2010/05/15 PHP
php图片的二进制转换实现方法
2014/12/15 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
php源码之将图片转化为data/base64数据流实例详解
2016/11/27 PHP
PHP中危险的file_put_contents函数详解
2017/11/04 PHP
PHP实现本地图片转base64格式并上传
2020/05/29 PHP
KindEditor在php环境下上传图片功能集成的方法示例
2020/07/20 PHP
十个迅速提升JQuery性能让你的JQuery跑得更快
2012/12/10 Javascript
Javascript算符的优先级介绍
2013/03/20 Javascript
基于javascript的COOkie的操作实现只能点一次
2014/12/26 Javascript
jQuery中prepend()方法使用详解
2015/08/11 Javascript
js基于cookie方式记住返回页面用法示例
2016/05/27 Javascript
JS去除空格和换行的正则表达式(推荐)
2016/06/14 Javascript
ionic2 tabs使用 Modal底部tab弹出框
2016/12/30 Javascript
TypeScript入门-基本数据类型
2017/03/28 Javascript
基于JQuery和原生JavaScript实现网页定位导航特效
2017/04/03 jQuery
详解vue渲染从后台获取的json数据
2017/07/06 Javascript
ES6中的Promise代码详解
2017/10/09 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
2018/09/15 Javascript
使用Python对Excel进行读写操作
2017/03/30 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
2019/08/05 Python
python for循环remove同一个list过程解析
2019/08/14 Python
opencv3/C++ 平面对象识别&透视变换方式
2019/12/11 Python
详解Python中的分支和循环结构
2020/02/11 Python
解析HTML5的存储功能和web SQL的相关操作方法
2016/02/19 HTML / CSS
html2 canvas生成清晰的图片实现打印功能
2019/09/23 HTML / CSS
美国网上订购鲜花:FTD
2016/09/23 全球购物
Nili Lotan官网:Nili Lotan同名品牌
2018/01/07 全球购物
澳大利亚床上用品、浴巾和家居用品购物网站:Bambury
2020/04/16 全球购物
PHP如何去执行一个SQL语句
2016/03/05 面试题
jQuery treeview树形结构应用
2021/03/24 jQuery
学术会议邀请函范文
2014/01/22 职场文书
工地安全生产标语
2014/06/06 职场文书
绵山导游词
2015/02/05 职场文书
关于开学的感想
2015/08/10 职场文书
高中议论文(范文2篇)
2019/08/19 职场文书