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 30 Python
Python中动态创建类实例的方法
Mar 24 Python
Python只用40行代码编写的计算器实例
May 10 Python
Python中动态检测编码chardet的使用教程
Jul 06 Python
Python操作csv文件实例详解
Jul 31 Python
Python利用公共键如何对字典列表进行排序详解
May 19 Python
python调用opencv实现猫脸检测功能
Jan 15 Python
在Python 字典中一键对应多个值的实例
Feb 03 Python
Python中如何引入第三方模块
May 27 Python
Django实现聊天机器人
May 31 Python
python 爬取吉首大学网站成绩单
Jun 02 Python
Python IO文件管理的具体使用
Mar 20 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
一个从别的网站抓取信息的例子(域名查询)
2006/10/09 PHP
简单的移动设备检测PHP脚本代码
2011/02/19 PHP
php中自定义函数dump查看数组信息类似var_dump
2014/01/27 PHP
Laravel 5框架学习之子视图和表单复用
2015/04/09 PHP
iOS+PHP注册登录系统 PHP部分(上)
2016/12/26 PHP
php实现的简单多进程服务器类完整示例
2020/02/01 PHP
javascript window.opener的用法分析
2010/04/07 Javascript
利用js实现在浏览器状态栏显示访问者在本页停留的时间
2013/12/29 Javascript
引用其它js时如何同时处理多个window.onload事件
2014/09/02 Javascript
在HTML代码中使用JavaScript代码的例子
2014/10/16 Javascript
DOM节点删除函数removeChild()用法实例
2015/01/12 Javascript
JS查找字符串中出现次数最多的字符
2016/09/05 Javascript
JavaScript基础——使用Canvas绘图
2016/11/02 Javascript
jQuery实现页面滚动时智能浮动定位
2017/01/08 Javascript
jQuery获取Table某列的值(推荐)
2017/03/03 Javascript
提升页面加载速度的插件InstantClick
2017/09/12 Javascript
vue项目持久化存储数据的实现代码
2018/10/01 Javascript
js中的闭包实例展示
2018/11/01 Javascript
JS面向对象之单选框实现
2020/01/17 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
python用BeautifulSoup库简单爬虫实例分析
2018/07/30 Python
python TKinter获取文本框内容的方法
2018/10/11 Python
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
python numpy 常用随机数的产生方法的实现
2019/08/21 Python
pygame库实现俄罗斯方块小游戏
2019/10/29 Python
用python的turtle模块实现给女票画个小心心
2019/11/23 Python
在Tensorflow中实现梯度下降法更新参数值
2020/01/23 Python
PyCharm如何导入python项目的方法
2020/02/06 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
pip install命令安装扩展库整理
2021/03/02 Python
纯CSS3实现圆圈动态发光特效动画的示例代码
2021/03/08 HTML / CSS
环境科学专业大学生自荐信格式
2013/09/21 职场文书
新郎父亲婚宴答谢词
2014/01/11 职场文书
应届大专毕业生自我鉴定
2014/04/08 职场文书
继承公证书
2014/04/09 职场文书
sqlserver2017共享功能目录路径不可改的解决方法
2021/04/16 SQL Server