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语言编写电脑时间自动同步小工具
Mar 08 Python
python生成日历实例解析
Aug 21 Python
Python3实现连接SQLite数据库的方法
Aug 23 Python
python 查找字符串是否存在实例详解
Jan 20 Python
PyCharm的设置方法和第一个Python程序的建立
Jan 16 Python
python抓取需要扫微信登陆页面
Apr 29 Python
Python 安装 virturalenv 虚拟环境的教程详解
Feb 21 Python
Python如何脚本过滤文件中的注释
May 27 Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
Jun 01 Python
Python实现验证码识别
Jun 15 Python
python 命令行传参方法总结
May 25 Python
浅谈怎么给Python添加类型标注
Jun 08 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实现获取第一个中文首字母并进行排序的方法
2017/05/09 PHP
PHP-FPM 的管理和配置详解
2019/02/17 PHP
Laravel5.7 数据库操作迁移的实现方法
2019/04/12 PHP
jquery 学习之二 属性相关
2010/11/23 Javascript
javascript 星级评分效果(手写)
2012/12/24 Javascript
JavaScript起点(严格模式深度了解)
2013/01/28 Javascript
6款经典实用的jQuery小插件及源码(对话框/提示工具等等)
2013/02/04 Javascript
js中parseInt函数浅谈
2013/07/31 Javascript
JS幻灯片可循环播放可平滑旋转带滚动导航(自写)
2013/08/05 Javascript
jquery html动态生成select标签出问题的解决方法
2013/11/20 Javascript
jQuery中index()的用法分析
2014/09/05 Javascript
jQuery实现转动随机数抽奖效果的方法
2015/05/21 Javascript
javascript委托(Delegate)blur和focus用法实例分析
2015/05/26 Javascript
AngualrJS中的Directive制作一个菜单
2016/01/26 Javascript
js仿百度切换皮肤功能(html+css)
2016/07/10 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
2017/02/05 Javascript
vue.js中created方法作用
2018/03/30 Javascript
微信小程序实现张图片合成为一张并下载
2019/07/16 Javascript
微信小程序与公众号实现数据互通的方法
2019/07/25 Javascript
vue自定义正在加载动画的例子
2019/11/14 Javascript
[47:06]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第一局
2016/03/05 DOTA
Python简单实现子网掩码转换的方法
2016/04/13 Python
python 获取页面表格数据存放到csv中的方法
2018/12/26 Python
解决Pycharm界面的子窗口不见了的问题
2019/01/17 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
Django 多对多字段的更新和插入数据实例
2020/03/31 Python
python通过函数名调用函数的几种场景
2020/09/23 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
基于CSS3实现图片模糊过滤效果
2015/11/19 HTML / CSS
英国时尚家具、家居饰品及礼品商店:Graham & Green
2016/09/15 全球购物
甲方资料员岗位职责
2013/12/13 职场文书
德语专业求职信
2014/03/12 职场文书
统计专业自荐书
2014/07/06 职场文书
法人授权委托书样本
2014/09/19 职场文书
诉讼授权委托书范本
2014/10/05 职场文书
国际贸易实训报告
2014/11/05 职场文书