背景: - 我有一个ES集群,它拥有许多客户索引,早在几年前我们的应用程序用于为每个客户每月创建一个新索引,我们从未删除旧索引。
现在由于磁盘空间问题,我们需要清理未使用的索引,但我们想要确保没有以任何方式使用旧索引。
我们使用了https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-stats.html,但它没有提供关于最近是否使用该指数的可靠证据。
听说marvel
它可能是有用的,但它看起来有点矫枉过正,因为我们已经使用data dog
对我们的ES集群进行基本监控,并且已经这么多年了,我们没有迫切需要marvel
。
最好的解决方案是来自ES的一些API,通过它我们可以快速确定和删除旧索引。
您可以使用index stats API,它允许您查看自上次重新启动以来是否已由给定索引处理搜索或索引请求。
GET index/_stats
=>
"_all": {
"primaries": {
"docs": {
"count": 396885916,
"deleted": 1712210
},
"store": {
"size_in_bytes": 207383595268,
"throttle_time_in_millis": 0
},
"indexing": {
"index_total": 8, <-- writes are happening if you see this increase
"index_time_in_millis": 41,
"index_current": 0,
"index_failed": 0,
"delete_total": 0,
"delete_time_in_millis": 0,
"delete_current": 0,
"noop_update_total": 0,
"is_throttled": false,
"throttle_time_in_millis": 0
},
"get": {
"total": 0,
"time_in_millis": 0,
"exists_total": 0,
"exists_time_in_millis": 0,
"missing_total": 0,
"missing_time_in_millis": 0,
"current": 0
},
"search": {
"open_contexts": 7,
"query_total": 30238, <-- reads are happening if you see this increase
"query_time_in_millis": 254000,
"query_current": 0,
"fetch_total": 816,
"fetch_time_in_millis": 25997,
"fetch_current": 0,
"scroll_total": 7637,
"scroll_time_in_millis": 686963111,
"scroll_current": 7,
"suggest_total": 0,
"suggest_time_in_millis": 0,
"suggest_current": 0
},