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自动化测试之连接几组测试包实例
Sep 28 Python
python使用PythonMagick将jpg图片转换成ico图片的方法
Mar 26 Python
举例讲解Python程序与系统shell交互的方式
Apr 09 Python
在Django的session中使用User对象的方法
Jul 23 Python
Python使用defaultdict读取文件各列的方法
May 11 Python
django用户登录验证的完整示例代码
Jul 21 Python
Python urlencode和unquote函数使用实例解析
Mar 31 Python
Python实现自动打开电脑应用的示例代码
Apr 17 Python
Python selenium爬取微博数据代码实例
May 22 Python
Django QuerySet查询集原理及代码实例
Jun 13 Python
简单介绍Python的第三方库yaml
Jun 18 Python
一些让Python代码简洁的实用技巧总结
Aug 23 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 进程锁定问题分析研究
2009/11/24 PHP
PHP代码保护--Zend Guard的使用详解
2013/06/03 PHP
php遍历树的常用方法汇总
2015/06/18 PHP
php生成静态html页面的方法(2种方法)
2015/09/14 PHP
thinkPHP中钩子的两种配置调用方法详解
2016/11/11 PHP
CI框架实现框架前后端分离的方法详解
2016/12/30 PHP
JavaScript国旗变换效果代码
2008/08/13 Javascript
ExtJS下grid的一些属性说明
2009/12/13 Javascript
jQuery 打造动态渐变按钮 详细图文教程
2010/04/25 Javascript
使用jQuery模板来展现json数据的代码
2010/10/22 Javascript
JQuery+CSS提示框实现思路及代码(纯手工打造)
2013/05/07 Javascript
浅析jQuery中常用的元素查找方法总结
2013/07/04 Javascript
jquery mobile页面跳转后样式丢失js失效的解决方法
2014/09/06 Javascript
JavaScript检测上传文件大小的方法
2015/07/22 Javascript
jQuery实现批量判断表单中文本框非空的方法(2种方法)
2015/12/09 Javascript
JS与Ajax Get和Post在使用上的区别实例详解
2016/06/08 Javascript
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
2017/08/30 Javascript
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
2018/10/15 Javascript
React手稿之 React-Saga的详解
2018/11/12 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
2020/03/05 Javascript
Python中itertools模块用法详解
2014/09/25 Python
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
利用Python循环(包括while&for)各种打印九九乘法表的实例
2017/11/06 Python
Python入门之后再看点什么好?
2018/03/05 Python
Python sorted函数详解(高级篇)
2018/09/18 Python
Python将一个Excel拆分为多个Excel
2018/11/07 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
2019/09/20 Python
Python操作dict时避免出现KeyError的几种解决方法
2020/09/20 Python
python3 os进行嵌套操作的实例讲解
2020/11/19 Python
HTML5 SEO优化的一些建议
2020/08/27 HTML / CSS
For Art’s Sake官网:手工制作的奢华眼镜
2018/12/15 全球购物
Tomcat中怎么使用log4j输出所有的log
2016/07/07 面试题
职工趣味运动会方案
2014/02/10 职场文书
2016年119消防宣传日活动总结
2016/04/05 职场文书
python tkinter模块的简单使用
2021/04/07 Python