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类的多重继承问题深入分析
Nov 09 Python
剖析Django中模版标签的解析与参数传递
Jul 21 Python
深入解析Python设计模式编程中建造者模式的使用
Mar 02 Python
python处理html转义字符的方法详解
Jul 01 Python
Python使用QQ邮箱发送Email的方法实例
Feb 09 Python
详解Python多线程Selenium跨浏览器测试
Apr 01 Python
Python中的groupby分组功能的实例代码
Jul 11 Python
Python魔法方法功能与用法简介
Apr 04 Python
python3的数据类型及数据类型转换实例详解
Aug 20 Python
学生如何注册Pycharm专业版以及pycharm的安装
Sep 24 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
Dec 01 Python
Python使用tkinter制作在线翻译软件
Feb 22 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在线打包程序源码
2008/07/27 PHP
JS JavaScript获取Url参数,src属性参数
2021/03/09 Javascript
JS BASE64编码 window.atob(), window.btoa()
2021/03/09 Javascript
javascript 动态添加事件代码
2008/11/30 Javascript
javascript对JSON数据排序的3个例子
2014/04/12 Javascript
JQuery调用绑定click事件的3种写法
2015/03/28 Javascript
jquery分割字符串的方法
2015/06/24 Javascript
详解React-Todos入门例子
2016/11/08 Javascript
函数四种调用模式以及其中的this指向
2017/01/16 Javascript
vue.js实现备忘录功能的方法
2017/07/10 Javascript
vue服务端渲染的实例代码
2017/08/28 Javascript
JS隐藏号码中间4位代码实例
2019/04/09 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
2019/05/27 Javascript
使用js在layui中实现上传图片压缩
2019/06/18 Javascript
详解vue-router的Import异步加载模块问题的解决方案
2020/05/13 Javascript
Vue项目开发常见问题和解决方案总结
2020/09/11 Javascript
解决vuex改变了state的值,但是页面没有更新的问题
2020/11/12 Javascript
在vue中使用inheritAttrs实现组件的扩展性介绍
2020/12/07 Vue.js
[28:48]《真视界》- 2017年国际邀请赛
2017/09/27 DOTA
[09:34]2018DOTA2国际邀请赛寻真——永不放弃的iG
2018/08/14 DOTA
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
2017/09/05 Python
Python使用爬虫爬取静态网页图片的方法详解
2018/06/05 Python
Python基于滑动平均思想实现缺失数据填充的方法
2019/02/21 Python
python中enumerate() 与zip()函数的使用比较实例分析
2019/09/03 Python
Python编程快速上手——强口令检测算法案例分析
2020/02/29 Python
获取python运行输出的数据并解析存为dataFrame实例
2020/07/07 Python
Python实现删除某列中含有空值的行的示例代码
2020/07/20 Python
python Scrapy爬虫框架的使用
2021/01/21 Python
css3+伪元素实现鼠标移入时下划线向两边展开的效果
2017/04/25 HTML / CSS
html5+css3进度条倒计时动画特效代码【推荐】
2016/03/08 HTML / CSS
德国珠宝和手表在线商店:VALMANO
2019/03/24 全球购物
政法大学毕业生自荐信范文
2014/01/01 职场文书
又涨知识了,自律到底多重要?
2019/06/27 职场文书
PHP中->和=>的意思
2021/03/31 PHP
用php如何解决大文件分片上传问题
2021/07/07 PHP
Mysql 8.x 创建用户以及授予权限的操作记录
2022/04/18 MySQL