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

首頁 > 編程 > Python > 正文

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

2020-01-04 13:40:58
字體:
來源:轉載
供稿:網友

如下所示:

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


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永善县| 远安县| 赞皇县| 昌都县| 乐平市| 会宁县| 邓州市| 阜宁县| 新巴尔虎左旗| 农安县| 平乡县| 高密市| 乐昌市| 忻州市| 古田县| 陕西省| 正宁县| 建德市| 青神县| 柳州市| 韩城市| 宁南县| 洛宁县| 宁安市| 义乌市| 昌黎县| 安图县| 临潭县| 武胜县| 大姚县| 石阡县| 湾仔区| 五台县| 罗田县| 志丹县| 临湘市| 綦江县| 泰顺县| 衡阳市| 潜江市| 彝良县|