1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      Python腳本刪除查詢出來的數(shù)據(jù)進-創(chuàng)新互聯(lián)

      需求背景

      業(yè)務(wù)系統(tǒng)將各類的報表和統(tǒng)計數(shù)據(jù)存放于ES中,由于歷史原因,系統(tǒng)每天均以全量方式進行統(tǒng)計,隨著時間的推移,ES的數(shù)據(jù)存儲空間壓力巨大。同時由于沒有規(guī)劃好es的索引使用,個別索引甚至出現(xiàn)超過大文檔數(shù)限制的問題,現(xiàn)實情況給運維人員帶來的挑戰(zhàn)是需要以最小的代價來解決這個問題。下面以內(nèi)網(wǎng)開發(fā)、測試環(huán)境舉例使用python腳本解決這個問題。

      創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站設(shè)計、成都做網(wǎng)站、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)彝良,10多年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

      Each Elasticsearch shard is a Lucene index. There is a maximum number of documents you can have in a single Lucene index. As of LUCENE-5843, the limit is 2,147,483,519 (= Integer.MAX_VALUE - 128) documents. You can monitor shard sizes using the _cat/shards API.

      實現(xiàn)思路

      es本身支持“_delete_by_query”的形式對查詢出來的數(shù)據(jù)進行刪除。首先我們通過”_cat/indices“入口獲取當(dāng)前es服務(wù)上所有的索引信息。Python腳本刪除查詢出來的數(shù)據(jù)進

      第一列表示索引當(dāng)前的健康狀態(tài)
      第三列表示索引的名稱
      第四列表示索引在服務(wù)器上的存儲目錄名
      第五、六列表示索引的副本數(shù)和分片信息
      第七列表示當(dāng)前索引的文檔數(shù)
      最后兩列分別表示當(dāng)前索引的存儲占用空間,倒數(shù)第二列等于倒數(shù)第一列乘以副本數(shù)

      其次我們通過curl形式拼接成刪除命令發(fā)送給es服務(wù)端執(zhí)行,其中createtime字段為數(shù)據(jù)的產(chǎn)生時間,單位為毫秒

      curl -X POST "http://192.168.1.19:9400/fjhb-surveyor-v2/_delete_by_query?pretty" -H 'Content-Type: application/json' -d '
         {"query":{ "range": {
             "createTime": {  
               "lt": 1580400000000,   
               "format": "epoch_millis"
             }
           }
      }}'

      具體實現(xiàn)

      #!/usr/bin/python
      # -*- coding: UTF-8 -*-
      
      ###導(dǎo)入必須的模塊
      import requests
      import time
      import datetime
      import os
      
      #定義獲取ES數(shù)據(jù)字典函數(shù),返回索引名和索引占用存儲空間大小字典
      def getData(env):
         header = {"Content-Type": "application/x-www-form-urlencoded",
              "user-agent": "User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36"
      }
         data = {}
         with open('result.txt','w+') as f:
           req = requests.get(url=env+'/_cat/indices',headers=header).text
           f.write(req)
           f.seek(0)
           for line in f.readlines():
             data[line.split()[2]] = line.split()[-1]
         return data
      
      #定義unix時間轉(zhuǎn)換函數(shù),以毫秒形式返回,返回值為int類型
      def unixTime(day):
         today = datetime.date.today()
         target_day = today + datetime.timedelta(day)
         unixtime = int(time.mktime(target_day.timetuple())) * 1000
         return unixtime
      
      #定義刪除es數(shù)據(jù)函數(shù),調(diào)用系統(tǒng)curl命令進行刪除,需要傳入環(huán)境、需要刪除數(shù)據(jù)的時間范圍(即多少天之前的數(shù)據(jù))參數(shù),由于索引數(shù)量眾多,我們只處理超過1G的索引即可
      def delData(env,day):
         header = 'Content-Type: application/json'
         for key, value in getData(env).items():
           if 'gb' in value:
             size = float(value.split('gb')[0])
             if size > 1:
               url = dev + '/' + key + '/_delete_by_query?pretty'
               command = ("curl -X POST \"%s\" -H '%s' "
                    "-d '{\"query\":{ \"range\": {\"createTime\": {\"lt\": %s,\"format\": \"epoch_millis\"}}}}'" % (
                    url, header, day))
               print(command)
               os.system(command)
      
      if __name__ == '__main__':
         dev = 'http://192.168.1.19:9400'
         test1 = 'http://192.168.1.19:9200'
         test2 = 'http://192.168.1.19:9600'
         day = unixTime(-30)
         delData(dev,day)
         delData(test1,day)
         delData(test2,day)

      結(jié)果驗證

      刪除前
      Python腳本刪除查詢出來的數(shù)據(jù)進
      刪除后
      Python腳本刪除查詢出來的數(shù)據(jù)進

      注意事項

      1、目前腳本采用操作系統(tǒng)crontab方式調(diào)度,一天運行一次
      2、首次刪除因為數(shù)據(jù)量龐大,需要耗費較長時間,后續(xù)每天刪除一天的數(shù)據(jù)量,刪除效率尚可
      3、腳本未考慮服務(wù)器報錯等例外情況與告警通知,實際應(yīng)用場景需要進行補充
      4、腳本未考慮日志記錄,實際應(yīng)用場景需要進行補充

      另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


      網(wǎng)頁標(biāo)題:Python腳本刪除查詢出來的數(shù)據(jù)進-創(chuàng)新互聯(lián)
      URL網(wǎng)址:http://www.ef60e0e.cn/article/jhjih.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        苏州市| 横山县| 江西省| 奎屯市| 东至县| 汕头市| 石台县| 古丈县| 正宁县| 峨眉山市| 云阳县| 孙吴县| 雷州市| 和顺县| 海门市| 浏阳市| 永靖县| 安庆市| 定兴县| 自治县| 新和县| 黄石市| 保山市| 琼结县| 耒阳市| 离岛区| 祁连县| 巢湖市| 确山县| 黄浦区| 多伦县| 元朗区| 仁布县| 南郑县| 广德县| 洛川县| 中方县| 开封市| 靖远县| 定兴县| 明光市|