国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2020-02-16 00:22:12
字體:
來源:轉載
供稿:網友

如下所示:

"""提取文檔數超過10000的數據按照某個字段的值具有唯一性進行升序,按照@timestamp進行降序,第一次查詢,先將10000條數據取出,取出最后一個時間戳,在第二次查詢中,設定@timestamp小于將第一次得到的最后一個時間戳,同時設定某個字段的值具有唯一性進行升序,按照@timestamp進行降序,"""from elasticsearch import Elasticsearchimport oswrite_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 timestampdef _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)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石城县| 芜湖市| 五家渠市| 阜南县| 会同县| 溧水县| 蕉岭县| 溧阳市| 漯河市| 广宁县| 会理县| 六盘水市| 那曲县| 丁青县| 玉田县| 武强县| 高平市| 含山县| 讷河市| 新干县| 扎赉特旗| 达孜县| 江津市| 新源县| 福贡县| 南充市| 界首市| 文化| 万年县| 辛集市| 新建县| 贺州市| 尼玛县| 大余县| 姚安县| 曲麻莱县| 福州市| 黄石市| 赤城县| 高邑县| 龙泉市|