日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Elasticsearch如何物理删除给定期限的历史数据?

發(fā)布時(shí)間:2024/1/17 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Elasticsearch如何物理删除给定期限的历史数据? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、題記

想到刪除,基礎(chǔ)認(rèn)知是delete,細(xì)分為刪除文檔(document)和刪除索引;要?jiǎng)h除歷史數(shù)據(jù),基礎(chǔ)認(rèn)知是:刪除了給定條件的數(shù)據(jù),用delete_by_query。?
實(shí)際操作發(fā)現(xiàn):?
- 刪除文檔后,磁盤空間并沒有立即減少,反而增加了??
- 除了定時(shí)任務(wù)+delete_by_query,有沒有更好的方式呢?

2、常見的刪除操作

2.1 刪除單個(gè)文檔

DELETE /twitter/_doc/1

2.2 刪除滿足給定條件的文檔

POST twitter/_delete_by_query {"query": { "match": {"message": "some message"}} }

注意:執(zhí)行批量刪除的時(shí)候,可能會(huì)發(fā)生版本沖突。強(qiáng)制執(zhí)行刪除的方式如下:

POST twitter/_doc/_delete_by_query?conflicts=proceed {"query": {"match_all": {}} }

2.3 刪除單個(gè)索引

DELETE /twitter

2.4 刪除所有索引

DELETE /_all

或者

DELETE /*

刪除所有索引是非常危險(xiǎn)的操作,要注意謹(jǐn)慎操作。

3、刪除文檔后臺(tái)做了什么?

執(zhí)行刪除后的返回結(jié)果:

{"_index": "test_index","_type": "test_type","_id": "22","_version": 2,"result": "deleted","_shards": {"total": 2,"successful": 1,"failed": 0},"_seq_no": 2,"_primary_term": 17 }

解讀:

索引的每個(gè)文檔都是版本化的。?
刪除文檔時(shí),可以指定版本以確保我們?cè)噲D刪除的相關(guān)文檔實(shí)際上被刪除,并且在此期間沒有更改。

每個(gè)在文檔上執(zhí)行的寫操作,包括刪除,都會(huì)使其版本增加

真正的刪除時(shí)機(jī):

deleting a document doesn’t immediately remove the document from disk; it just marks it as deleted. Elasticsearch will clean up deleted documents in the background?as you continue to index more data.

4、刪除索引和刪除文檔的區(qū)別?

1)刪除索引是會(huì)立即釋放空間的,不存在所謂的“標(biāo)記”邏輯。

2)刪除文檔的時(shí)候,是將新文檔寫入,同時(shí)將舊文檔標(biāo)記為已刪除。 磁盤空間是否釋放取決于新舊文檔是否在同一個(gè)segment file里面,因此ES后臺(tái)的segment merge在合并segment file的過程中有可能觸發(fā)舊文檔的物理刪除。

但因?yàn)橐粋€(gè)shard可能會(huì)有上百個(gè)segment file,還是有很大幾率新舊文檔存在于不同的segment里而無法物理刪除。想要手動(dòng)釋放空間,只能是定期做一下force merge,并且將max_num_segments設(shè)置為1。

POST /_forcemerge

5、如何僅保存最近100天的數(shù)據(jù)?

有了上面的認(rèn)知,僅保存近100天的數(shù)據(jù)任務(wù)分解為:?
- 1)delete_by_query設(shè)置檢索近100天數(shù)據(jù);?
- 2)執(zhí)行forcemerge操作,手動(dòng)釋放磁盤空間。

刪除腳本如下:

#!/bin/sh curl -H'Content-Type:application/json' -d'{"query": {"range": {"pt": {"lt": "now-100d","format": "epoch_millis"}}} } ' -XPOST "http://192.168.1.101:9200/logstash_*/ _delete_by_query?conflicts=proceed"

merge腳本如下:

#!/bin/sh curl -XPOST 'http://192.168.1.101:9200/_forcemerge? only_expunge_deletes=true&max_num_segments=1'

6、有沒有更通用的方法?

有,使用ES官網(wǎng)工具——curator工具。

6.1 curator簡(jiǎn)介

主要目的:規(guī)劃和管理ES的索引。支持常見操作:創(chuàng)建、刪除、合并、reindex、快照等操作。

6.2 curator官網(wǎng)地址

http://t.cn/RuwN0oM

Git地址:https://github.com/elastic/curator

6.4 curator命令行操作

$ curator --help Usage: curator [OPTIONS] ACTION_FILECurator for Elasticsearch indices.See http://elastic.co/guide/en/elasticsearch/client/curator/currentOptions:--config PATH Path to configuration file. Default: ~/.curator/curator.yml--dry-run Do not perform any changes.--version Show the version and exit.--help Show this message and exit.

核心:?
- 配置文件config.yml:配置要連接的ES地址、日志配置、日志級(jí)別等;

  • 執(zhí)行文件action.yml: 配置要執(zhí)行的操作(可批量)、配置索引的格式(前綴匹配、正則匹配方式等)

6.5 curator適用場(chǎng)景

最重要的是:

  • 僅以刪除操作為例:curator可以非常簡(jiǎn)單地刪除x天后的索引的前提是:索引命名要遵循特定的命名模式——如:以天為命名的索引:logstash_2018.04.05。

  • 命名模式需要和action.yml中的delete_indices下的timestring對(duì)應(yīng)。

7、小結(jié)

  • 多參考官網(wǎng)最新的文檔,歷史版本的歷史文檔很容易誤導(dǎo)人;
  • 多真正去實(shí)踐,而不是僅限于知道;
  • medcl:ES新版本6.3 有一個(gè) Index LifeCycle Management 可以很方便的管理索引的保存期限。

參考:

[1]http://t.cn/RuwOTv?
[2]http://t.cn/RuwXHBr?
[3]http://t.cn/RuwOofC

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的Elasticsearch如何物理删除给定期限的历史数据?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。