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获取CPU、内存和硬盘等windowns系统信息的2个例子
Apr 15 Python
Python实现快速多线程ping的方法
Jul 15 Python
python 去除txt文本中的空格、数字、特定字母等方法
Jul 24 Python
python读取和保存图片5种方法对比
Sep 12 Python
Python 读写文件的操作代码
Sep 20 Python
Python绘图Matplotlib之坐标轴及刻度总结
Jun 28 Python
python输入多行字符串的方法总结
Jul 02 Python
python烟花效果的代码实例
Feb 25 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
May 18 Python
matplotlib.pyplot.matshow 矩阵可视化实例
Jun 16 Python
keras.layer.input()用法说明
Jun 16 Python
keras实现多GPU或指定GPU的使用介绍
Jun 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
一个MYSQL操作类
2006/11/16 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
2011/09/13 PHP
探讨如何在php168_cms中提取验证码
2013/06/08 PHP
php数组键值用法实例分析
2015/02/27 PHP
javascript 多种搜索引擎集成的页面实现代码
2010/01/02 Javascript
Ajax执行顺序流程及回调问题分析
2012/12/10 Javascript
jQuery 无限级菜单的简单实例
2014/02/21 Javascript
浅谈javascript属性onresize
2015/04/20 Javascript
javascript设计简单的秒表计时器
2020/09/05 Javascript
jQuery实现下拉加载功能实例代码
2016/04/01 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
解决vue-router在同一个路由下切换,取不到变化的路由参数问题
2018/09/01 Javascript
vue主动刷新页面及列表数据删除后的刷新实例
2018/09/16 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
vue自动路由-单页面项目(非build时构建)
2019/04/30 Javascript
JavaScript提升机制Hoisting详解
2019/10/23 Javascript
Vuex的实战使用详解
2019/10/31 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
js实现小球在页面规定的区域运动
2020/06/16 Javascript
Vue实现背景更换颜色操作
2020/07/17 Javascript
Python cookbook(数据结构与算法)实现优先级队列的方法示例
2018/02/18 Python
pandas基于时间序列的固定时间间隔求均值的方法
2019/07/04 Python
TensorFlow实现自定义Op方式
2020/02/04 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
TensorFlow-gpu和opencv安装详细教程
2020/06/30 Python
CSS3利用text-shadow属性实现多种效果的文字样式展现方法
2016/08/25 HTML / CSS
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
行政文员岗位职责
2013/11/08 职场文书
运动会口号16字
2014/06/07 职场文书
陈胜吴广起义口号
2014/06/20 职场文书
国际贸易本科毕业生求职信
2014/09/26 职场文书
个人查摆剖析材料
2014/10/16 职场文书
《草船借箭》教学反思
2016/02/23 职场文书
健身房被搭讪?用python写了个小米计时器助人为乐
2021/06/08 Python
MySQL外键约束(FOREIGN KEY)案例讲解
2021/08/23 MySQL
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技