中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

罗城| 利辛县| 获嘉县| 花莲市| 涪陵区| 江津市| 龙海市| 呼伦贝尔市| 澄城县| 芦溪县| 施甸县| 含山县| 三原县| 庄河市| 巩义市| 合江县| 江华| 灵石县| 江西省| 儋州市| 曲周县| 安庆市| 眉山市| 汶川县| 田林县| 仁布县| 曲松县| 洛南县| 普安县| 文昌市| 西峡县| 德阳市| 宁乡县| 广昌县| 固安县| 中宁县| 波密县| 南华县| 枣庄市| 康乐县| 上林县|