亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python批量從es取數據的方法(文檔數超過10000)

發布時間:2020-09-14 05:42:57 來源:腳本之家 閱讀:373 作者:sxf_0123 欄目:開發技術

如下所示:

"""
提取文檔數超過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)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黔西| 墨玉县| 潜江市| 贡嘎县| 铜陵市| 祁阳县| 修水县| 深州市| 临洮县| 汉源县| 商城县| 花莲市| 平原县| 白银市| 田东县| 石林| 兰西县| 格尔木市| 东明县| 陆良县| 盐城市| 建始县| 郁南县| 六枝特区| 景宁| 布尔津县| 绍兴县| 德州市| 比如县| 克拉玛依市| 礼泉县| 介休市| 赤峰市| 称多县| 林芝县| 赫章县| 濮阳县| 台安县| 双江| 宁强县| 泉州市|