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实现监控linux性能及进程消耗性能的方法
Jul 25 Python
python处理PHP数组文本文件实例
Sep 18 Python
python通过字典dict判断指定键值是否存在的方法
Mar 21 Python
python魔法方法-属性访问控制详解
Jul 25 Python
ubuntu安装sublime3并配置python3环境的方法
Mar 15 Python
numpy中实现二维数组按照某列、某行排序的方法
Apr 04 Python
python挖矿算力测试程序详解
Jul 03 Python
python实现图像拼接
Mar 05 Python
django model object序列化实例
Mar 13 Python
python列表删除和多重循环退出原理详解
Mar 26 Python
在python中使用nohup命令说明
Apr 16 Python
解决pytorch多GPU训练保存的模型,在单GPU环境下加载出错问题
Jun 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 IE中下载附件问题解决方法
2014/01/07 PHP
php多文件打包下载的实例代码
2017/07/12 PHP
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
2019/08/14 PHP
JavaScript 判断日期格式是否正确的实现代码
2011/07/04 Javascript
基于jquery实现的移入页面上空文本框时,让它变为焦点,移出清除焦点
2011/07/26 Javascript
JavaScript在IE和FF下的兼容性问题
2014/05/19 Javascript
node.js中的fs.createWriteStream方法使用说明
2014/12/17 Javascript
去除字符串左右两边的空格(实现代码)
2016/05/12 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
详谈js中window.location.search的用法和作用
2017/02/13 Javascript
jquery实现手机端单店铺购物车结算删除功能
2017/02/22 Javascript
Vue render渲染时间戳转时间,时间转时间戳及渲染进度条效果
2018/07/27 Javascript
深入理解js A*寻路算法原理与具体实现过程
2018/12/13 Javascript
浅谈vue.use()方法从源码到使用
2019/05/12 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
2020/02/05 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
jQuery中getJSON跨域原理的深入讲解
2020/09/02 jQuery
JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法
2021/01/29 Javascript
python获取android设备的GPS信息脚本分享
2015/03/06 Python
使用numpy和PIL进行简单的图像处理方法
2018/07/02 Python
python3实现名片管理系统
2020/11/29 Python
Python 运行 shell 获取输出结果的实例
2019/01/07 Python
python异步实现定时任务和周期任务的方法
2019/06/29 Python
python requests库的使用
2021/01/06 Python
基于Python的接口自动化读写excel文件的方法
2021/01/15 Python
java关于string最常出现的面试题整理
2021/01/18 Python
html5 乒乓球(碰撞检测)实例二
2013/07/25 HTML / CSS
贷款委托书怎么写
2014/08/02 职场文书
党的群众路线教育实践活动对照检查材料思想汇报
2014/09/19 职场文书
工商局副局长个人对照检查材料
2014/09/25 职场文书
校园之声广播稿
2015/08/18 职场文书
2019西餐厅创业计划书范文!
2019/07/12 职场文书
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
2021/07/07 Servers
golang操作rocketmq的示例代码
2022/04/06 Golang
Java死锁的排查
2022/05/11 Java/Android