ElasticSearch索引生命周期管理--DELETE

概要

  • ElasticSearch中的索引生命周期管理,也就是ilm(Manage the index lifecycle),是指定了索引在不同周期下的处理策略。
  • ilm 的对象是索引而不是索引中的数据。
  • ilm 包括四个阶段:hot 、warm、cold和delete。
  • hot、warm和cold表示索引的使用情况,delete可以指定索引完成rollover后的旧索引的删除条件。
  • hot中常用策略为 rollover, 满足指定条件后创建新的索引。
  • delete中常用属性为min_age,也就是索引完成rollover后的删除策略。已经有可以提供相同功能的索引,就索引可以删除。
  • 索引生命周期中的delete不能删除索引,只能删除滚动之前的旧索引。

使用命令

  • 查询所有策略
json 复制代码
GET _ilm/policy
  • 查询单个策略
json 复制代码
GET _ilm/policy/<policy-name>
  • 查询索引的策略执行情况
json 复制代码
GET <index-name>/_ilm/explain
  • 查询索引的创建时间
json 复制代码
GET /_cat/indices/<index-name>?format=json&h=index,creation.date

DELETE策略执行分析

  1. 先查询索引的创建时间。
  • 命令为:
json 复制代码
GET /_cat/indices/<index-name>?format=json&h=index,creation.date`
  • 响应值为:
json 复制代码
[
  {
    "index" : "<index-name>",
    "creation.date" : "1688537411543" // 创建日期
  }
]
  1. 在查询索引的中生命周期的执行情况
  • 命令为:
json 复制代码
GET <index-name>/_ilm/explain
  • 响应值为:
json 复制代码
{
  "indices" : {
    "<index-name>" : {
      ...
      "policy" : "<policy-name>", //策略名称
      "lifecycle_date_millis" : 1691129648787, //生命周期时间,这里是进入delete计算阶段时间
      "age" : "3.87d", //年龄,存活时间,这个是创建时间到当前时间的时间间隔,一般需要减去hot中rollover设定的min-age。
      ...
      },
      ...
    }
  }
}
  1. 生命周期策略的具体信息
  • 命令为:
json 复制代码
GET _ilm/policy/<policy-name>
  • 响应值为:
json 复制代码
{
  "<policy-name>" : {
    ...
    "policy" : {
      "phases" : { //阶段
        "hot" : {
          "min_age" : "0ms", // 索引建立后就进入hot阶段
          "actions" : {
            "rollover" : { //创建新索引
              "max_primary_shard_size" : "50gb", // 当分片容积大于50Gb后执行
              "max_age" : "30d" // 分片的年龄达到30天
            }
          }
        },
        "delete" : {
          "min_age" : "30d", // 老索引超过rollover后的最小存活时间
          "actions" : { //执行策略为删除
            "delete" : { 
              "delete_searchable_snapshot" : true //删除相关的快照
            }
          }
        }
      },
      ...
    },
    "in_use_by" : {
      "indices" : [...],//被设置的索引
      ...
    }
  }
}
  1. 所以整个流程为索引超过30天后,会自动rollover出个新的索引,之后按照delete策略删除旧的索引。所以生命周期不会自动删除索引,索引的删除需要手动执行。
相关推荐
muyun28001 天前
Docker 下部署 Elasticsearch 8 并集成 Kibana 和 IK 分词器
elasticsearch·docker·容器
在未来等你1 天前
Elasticsearch面试精讲 Day 17:查询性能调优实践
大数据·分布式·elasticsearch·搜索引擎·面试
在未来等你2 天前
Elasticsearch面试精讲 Day 18:内存管理与JVM调优
大数据·分布式·elasticsearch·搜索引擎·面试
Elasticsearch2 天前
在 Elastic Observability 中使用 Discover 的追踪获取更深入的应用洞察
elasticsearch
婲落ヽ紅顏誶2 天前
测试es向量检索
大数据·elasticsearch·搜索引擎
咖啡Beans2 天前
Docker安装ELK(Elasticsearch + Logstash + Kibana)
后端·elasticsearch·docker
一勺菠萝丶2 天前
Jenkins 构建 Node 项目报错解析与解决——pnpm lockfile 问题实战
elasticsearch·servlet·jenkins
小花鱼20253 天前
Elasticsearch (ES)相关
大数据·elasticsearch
阿里嘎多哈基米3 天前
ES——(三)DSL高级查询
elasticsearch·搜索引擎·全文检索·kibana·倒排索引
AAA修煤气灶刘哥3 天前
ES 高级玩法大揭秘:从算分骚操作到深度分页踩坑,后端 er 速进!
java·后端·elasticsearch