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正则表达式去掉数字中的逗号(python正则匹配逗号)
Dec 25 Python
python实现清屏的方法
Apr 30 Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
Apr 17 Python
Python 爬虫之超链接 url中含有中文出错及解决办法
Aug 03 Python
Pycharm新手教程(只需要看这篇就够了)
Jun 18 Python
python+openCV调用摄像头拍摄和处理图片的实现
Aug 06 Python
Python 等分切分数据及规则命名的实例代码
Aug 16 Python
python匿名函数的使用方法解析
Oct 10 Python
解决Python中回文数和质数的问题
Nov 24 Python
python随机模块random使用方法详解
Feb 14 Python
Python私有属性私有方法应用实例解析
Sep 15 Python
Python爬虫破解登陆哔哩哔哩的方法
Nov 17 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 form 表单传参明细研究
2009/07/17 PHP
php实现的百度搜索某地天气的小偷代码
2014/04/23 PHP
Yii2下点击验证码的切换实例代码
2017/03/14 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
2020/04/07 PHP
jQuery 1.8 Release版本发布了
2012/08/14 Javascript
php 中序列化和json使用介绍
2013/07/08 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
2013/12/08 Javascript
IE浏览器不支持getElementsByClassName的解决方法
2014/08/27 Javascript
js实现图片从左往右渐变切换效果的方法
2015/02/06 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
2015/07/20 Javascript
一起学写js Calender日历控件
2016/04/14 Javascript
使用JavaScript判断手机浏览器是横屏还是竖屏问题
2016/08/02 Javascript
node.js文件上传处理示例
2016/10/27 Javascript
无法获取隐藏元素宽度和高度的解决方案
2017/03/07 Javascript
探究react-native 源码的图片缓存问题
2017/08/24 Javascript
关于redux-saga中take使用方法详解
2018/02/27 Javascript
webpack的CSS加载器的使用
2018/09/11 Javascript
Vue.js实现大屏数字滚动翻转效果
2019/11/29 Javascript
Vue使用自定义指令实现拖拽行为实例分析
2020/06/06 Javascript
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
2019/02/20 Python
使用pytorch和torchtext进行文本分类的实例
2020/01/08 Python
SteelSeries赛睿官网:游戏外设和配件的领先制造商(耳机、键盘、鼠标和鼠标垫)
2018/06/17 全球购物
BLACKMORES澳洲官网:澳大利亚排名第一的保健品牌
2018/09/27 全球购物
德国二手设计师时装和复古时装跳蚤市场:Mädchenflohmarkt
2020/11/09 全球购物
商得四方公司面试题(gid+)
2014/04/30 面试题
小班开学寄语
2014/04/04 职场文书
社区工作者演讲稿
2014/05/23 职场文书
乔丹名人堂演讲稿
2014/05/24 职场文书
园林专业毕业生自荐信
2014/07/04 职场文书
九一八事变纪念日演讲稿
2014/09/14 职场文书
租房协议书范例
2014/10/14 职场文书
2014年服务员工作总结
2014/11/18 职场文书
2015新年寄语(一句话)
2014/12/08 职场文书
长江三峡导游词
2015/01/31 职场文书
技能培训通讯稿
2015/07/18 职场文书
搞笑Gif:这么白这么长的腿像极了一楼的女朋友
2022/03/21 杂记