📜  Elasticsearch-管理索引生命周期(1)

📅  最后修改于: 2023-12-03 15:14:51.392000             🧑  作者: Mango

Elasticsearch-管理索引生命周期

简介

Elasticsearch是一个开源的分布式搜索引擎,支持全文检索、复杂查询、聚合分析等功能。随着数据量的增加,索引的管理就成了一个重要的问题,这时候Elasticsearch的索引生命周期管理就成了必不可少的功能。

索引生命周期可以自动化地管理索引的删除、关闭、压缩等操作,从而减少存储空间的浪费,提高查询性能。

生命周期的四个阶段

Elasticsearch的索引生命周期管理包含了四个阶段:

  1. 定义阶段:定义索引生命周期策略

  2. 热阶段:索引处于活动状态,数据频繁更新和查询

  3. 温暖阶段:索引不再频繁更新和查询,但仍需要保留,以备后续查询

  4. 冷阶段:索引不再更新和查询,但需要长期保存,以便后续分析或合规需求。

生命周期策略

在Elasticsearch中,通过Index Lifecycle Management (ILM)来管理索引生命周期,与index.lifecycle.*参数交互,这些参数可以定义索引生命周期的各个阶段的动作、时间和条件,如下:

  • index.lifecycle.name:策略名称
  • index.lifecycle.rollover_alias:重定向写入的索引
  • index.lifecycle.read_only:索引从写入转为只读的状态

当一个索引的过渡到Lifecycle Policy规定的生命周期的另一个阶段时,它的状态会变化,如下:

  • hot:刚创建的索引
  • warm:不是很活跃的索引,对于新查询不是特别有用。
  • cold:不再执行查询,仅当有出现错误时使用
  • delete:标记索引可由Elasticsearch清除
索引生命周期策略的示例

下面是一个索引生命周期策略的示例,代码如下:

PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_age": "30d",
            "max_size": "50gb"
          }
        }
      },
      "warm": {
        "min_age": "30d",
        "actions": {
          "forcemerge": {
            "max_num_segments": 1
          },
          "shrink": {
            "number_of_shards": 1
          }
        }
      },
      "cold": {
        "min_age": "60d",
        "actions": {
          "freeze": {},
          "allocation": {
            "require": {
              "box_type": "cold"
            }
          }
        }
      },
      "delete": {
        "min_age": "90d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

上述代码定义了一个名为my_policy的索引生命周期策略,通过设置阶段和各个阶段的条件来定义动作,例如在热阶段(hot)中,每个索引的最大年龄为30天,最大大小为50GB,超过该阈值,将会执行rollover动作;在温暖阶段(warm)中,强制合并每个分片,将分片数限制为1;在冷阶段(cold)中,将索引移动到冷存储中,限制只能分配到“cold”盒子中;在删除阶段(delete)中,每个索引最小的存在时间为90天,超过该阈值,将会执行delete动作来删除索引。

结论

使用索引生命周期管理,将能够自动管理索引的存储空间和性能,减少存储空间的浪费,同时提高查询性能。对于那些无人问津的索引,自动清除将减少昂贵的存储占用。使用Elasticsearch的Index Lifecycle Management,您可以为不同的索引定义不同的生命周期策略,以便在符合要求时自动运行生命周期的动作。