欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 【Elasticsearch】Rollover 操作与Skip Rollover

【Elasticsearch】Rollover 操作与Skip Rollover

2025/3/15 10:46:58 来源:https://blog.csdn.net/risc123456/article/details/145992947  浏览:    关键词:【Elasticsearch】Rollover 操作与Skip Rollover

Elasticsearch 的 Rollover 操作是索引生命周期管理(ILM)中的一个重要功能,用于在索引达到预设条件时自动将写入操作切换到一个新的索引,从而避免单个索引变得过大或过旧,影响性能和管理效率。

Rollover 操作的核心概念

1. 滚动条件(Rollover Conditions)

Rollover 操作基于预设的条件触发,这些条件可以包括:

• `max_age`:索引的年龄达到指定时间(如 30 天)。

• `max_size`:索引的大小达到指定值(如 50GB)。

• `max_docs`:索引中的文档数量达到指定值(如 1 亿个文档)。

• `max_primary_shard_size`和`max_primary_shard_docs`:主分片的大小或文档数量达到指定值。

2. 滚动目标(Rollover Target)

Rollover 的目标可以是一个数据流(Data Stream)或索引别名(Index Alias)。当目标是别名时,需要满足特定的命名规则(如`my-index-000001`),并且必须配置`index.lifecycle.rollover_alias`。

3. 滚动行为(Rollover Behavior)

满足条件时,Elasticsearch 会自动创建一个新索引(如`my-index-000002`),并将别名指向新索引。旧索引保留,但不再接收新的写入操作。

配置 Rollover 操作

1.创建生命周期策略(ILM Policy)

定义索引的生命周期规则,包括滚动条件。例如:

```json

PUT _ilm/policy/my_policy

{

  "policy": {

    "phases": {

      "hot": {

        "actions": {

          "rollover": {

            "max_size": "50GB",

            "max_age": "30d",

            "max_docs": 100000000

          }

        }

      }

    }

  }

}

```

在这个策略中,索引会在大小达到 50GB、年龄达到 30 天或文档数量达到 1 亿时触发滚动。

2.创建索引模板(Index Template)

将生命周期策略应用到新索引,并定义滚动时使用的别名:

```json

PUT _index_template/my_template

{

  "index_patterns": ["my_index-*"],

  "template": {

    "settings": {

      "index.lifecycle.name": "my_policy",

      "index.lifecycle.rollover_alias": "my_index"

    }

  }

}

```

这个模板确保所有匹配`my_index-*`的索引都会使用`my_policy`策略。

3.创建初始索引

手动创建第一个索引,并将其标记为写入索引:

```json

PUT my_index-000001

{

  "aliases": {

    "my_index": {

      "is_write_index": true

    }

  }

}

```

这个初始索引将作为滚动操作的起点。

Rollover 的优势

1. 优化性能:通过限制索引大小和文档数量,避免单个索引变得过大,从而影响查询性能。

2. 节省资源:通过自动滚动和删除旧索引,合理管理存储资源。

3. 简化管理:通过生命周期策略,自动化索引的滚动和清理过程。

注意事项

• 默认情况下,空索引不会触发滚动,除非显式配置`min_docs: 0`。

• 滚动操作完成后,索引的年龄会更新为滚动时间,而不是原始创建时间。

• 滚动操作可以手动触发,也可以通过 ILM 策略自动触发。

通过合理配置 Rollover 策略,可以有效管理索引的生命周期,优化 Elasticsearch 集群的性能和资源使用。

在Elasticsearch中,Skip Rollover是索引生命周期管理(ILM)的一个特性,用于在某些情况下跳过索引的滚动操作。以下是关于该特性的详细说明:

1.`index.lifecycle.indexing_complete`的作用

当索引的`index.lifecycle.indexing_complete`设置为`true`时,ILM 不会对该索引执行滚动操作,即使它满足滚动条件。此设置通常由 ILM 在滚动操作成功完成后自动设置,但也可以手动设置,以便在某些情况下跳过滚动。

2.手动设置`index.lifecycle.indexing_complete`

如果需要对正常的生命周期策略进行例外处理,例如强制更新别名以切换到新的索引,但希望 ILM 继续管理旧索引,可以通过手动设置`index.lifecycle.indexing_complete`来实现。具体步骤如下:

• 创建一个新索引模板,使用相同的生命周期策略。

• 初始化一个新的初始索引。

• 使用别名 API 将写入索引切换到新初始化的索引。

• 在旧索引上将`index.lifecycle.indexing_complete`设置为`true`,表明该索引不需要滚动。

3.索引生命周期管理(ILM)的滚动操作

ILM 的滚动操作(Rollover)是索引生命周期管理中的一个重要阶段,通常在索引达到一定大小、文档数量或时间限制时触发。例如:

• 当索引大小达到 50GB。

• 索引中的文档数量达到 1000。

• 索引的年龄超过 1 天。

4.跳过滚动的场景

跳过滚动操作通常用于以下场景:

• 当需要更改新索引的命名模式,但希望保留旧索引中的数据。

• 当需要手动干预索引滚动过程,但希望 ILM 继续管理索引。

5.生命周期策略的配置

生命周期策略(Policy)定义了索引在不同阶段(如 Hot、Warm、Cold、Delete)的行为。例如:

• 在 Hot 阶段,可以配置滚动操作的触发条件。

• 在 Delete 阶段,可以配置索引的删除条件。

6.与滚动 API 的关系

如果使用滚动 API(Rollover API)手动触发滚动操作,则无需手动配置`index.lifecycle.indexing_complete`。ILM 会自动管理该设置。

7.生命周期策略的更新

如果需要更新生命周期策略,可以通过 PUT 请求重新定义策略。例如:

```json

PUT _ilm/policy/my_policy

{

  "policy": {

    "phases": {

      "hot": {

        "actions": {

          "rollover": {

            "max_age": "30d",

            "max_size": "50GB"

          }

        }

      },

      "delete": {

        "min_age": "90d",

        "actions": {

          "delete": {}

        }

      }

    }

  }

}

```

总结

Skip Rollover是 Elasticsearch ILM 中的一个重要特性,允许用户在某些情况下跳过索引的滚动操作,同时继续利用 ILM 的生命周期管理功能。通过手动设置`index.lifecycle.indexing_complete`,用户可以灵活地控制索引的滚动行为,以满足特定的业务需求。

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词