es刪除索引


背景

集群的索引沒有預先規划大小,導致索引特別大,刪除數據刪除索引的形式進行,只能在原來的索引上進行數據刪除操作。

刪除索引時采用最經典的方式,即按照時間戳進行刪除,比如刪除90天以前的歷史數據,保留最新的。

Elasticseach會有后台線程根據Lucene的合並規則定期進行segment merging合並操作,一般不需要我們擔心。被刪除的文檔在segment合並時,才會被真正刪除掉。在此之前,它仍然會占用着JVM heap和操作系統的文件cache、磁盤等資源。在某些特定情況下,我們需要強制Elasticsearch進行segment merging,已釋放其占用的大量系統、磁盤等資源。

執行的期間你會發現,磁盤空間會有一個反復變化的過程,磁盤使用率會先增長,然后在刪除釋放空間這樣一個過程。這個過程無需緊張,都是正常現象

實踐

# 假如現在是中午11點,這個表示刪除8點-10點之間的全部數據
curl -X POST "http://localhost:9200/nginx-error-2021-10-12/_delete_by_query?pretty" -H 'Content-Type: application/json' -d'
{
  "query": {
    "range": {
      "@timestamp": {
        "gte": "now-3h",
        "lt": "now-1h"
      }
    }
  }
}'



#假如現在是中午11點,這個表示刪除早上6點之前的全部數據,也就是比6點早的數據全部刪除
curl -X POST "http://localhost:9200/nginx-error-2021-10-12/_delete_by_query?pretty" -H 'Content-Type: application/json' -d'
{
  "query": {
    "range": {
      "@timestamp": {
        "lt": "now-5h"
      }
    }
  }
}'



#假如現在是中午11點,這個表示刪除早上6點-11點之間的數據
curl -X POST "http://localhost:9200/nginx-error-2021-10-12/_delete_by_query?pretty" -H 'Content-Type: application/json' -d'
{
  "query": {    
    "range": {
        "@timestamp": {
          "gt": "now-5h"
        }
    }
  }
}'



#最后再執行下面命令即可開始正式刪除數據了,會產生大量的io
curl -X POST http://localhost:9200/nginx-error-2021-10-12/_forcemerge?max_num_segments=1&only_expunge_deletes=true

附帶一張實踐圖片

啟發:

上面的過程由自己實踐而來,其中受到了下面執行的啟發,特此記錄一下

POST /index-name/_delete_by_query?slices=auto&conflicts=proceed&wait_for_completion=false
{         //多線程並發刪除滿足查詢條件的數據
  "query": {
    "bool": {
      "filter": {
        "bool": {
          "must_not": [
            {
              "term": {     //查詢條件,可以自定義
                "action": "XXXXXXX"
              }
            },
            {
              "exists": {
                "field": "XXXXXXXX"   //查詢條件,可以自定義
              }
            }
          ]
        }
      }
    }
  }
}

參考的一些鏈接:

騰訊雲博客參考:https://cloud.tencent.com/developer/article/1737025

官方文檔演示:https://www.elastic.co/guide/cn/elasticsearch/guide/current/_ranges.html

官網文檔使用:https://www.elastic.co/guide/en/elasticsearch/reference/6.4/common-options.html#date-math


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM