Elasticsearch:将 ILM 管理的数据流迁移到数据流生命周期

这篇具有很好参考价值的文章主要介绍了Elasticsearch:将 ILM 管理的数据流迁移到数据流生命周期。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

警告:此功能处于技术预览阶段,可能会在未来版本中更改或删除。 Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。目前的最新版本为 8.12。

elasticsearch 8 ilm生命周期,Elasticsearch,Elastic,elasticsearch,大数据,搜索引擎,运维,全文检索,Elasticsearch

在本教程中,我们将了解如何将现有数据流(data stream)从索引生命周期管理 (ILM) 迁移到数据流生命周期。 现有的 ILM 管理的支持指数将继续由 ILM 管理,直到它们过期并被 ILM 删除; 但是,新的支持索引将由数据流生命周期管理。 这样,数据流逐渐从由 ILM 管理迁移到由数据流生命周期管理。 正如我们将看到的,ILM 和数据流生命周期可以共同管理数据流; 但是,一个索引一次只能由一个系统管理

如果你对 ILM 还不是很清楚的话,请详细阅读文章 “Elasticsearch:Index 生命周期管理入门”。针对数据流生命周期,请详细阅读文章 "Data streams(一)(二)(三)"

长话短说

要将数据流从 ILM 迁移到数据流生命周期,我们必须执行两个步骤:

  • 更新支持数据流的索引模板,将 prefer_ilm 设置为 false,并配置数据流生命周期。
  • 使用生命周期 API 为现有数据流配置数据流生命周期。

设置 ILM 管理的数据流

首先,我们创建一个具有两个由 ILM 管理的支持索引的数据流。 我们首先创建 ILM 策略:

PUT _ilm/policy/pre-dsl-ilm-policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_primary_shard_size": "50gb"
          }
        }
      },
      "delete": {
        "min_age": "7d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

让我们创建一个索引模板来支持数据流并配置 ILM:

PUT _index_template/dsl-data-stream-template
{
  "index_patterns": ["dsl-data-stream*"],
  "data_stream": { },
  "priority": 500,
  "template": {
    "settings": {
      "index.lifecycle.name": "pre-dsl-ilm-policy"
    }
  }
}

现在,我们将索引一个以 dsl-data-stream 为目标的文档来创建数据流,并且我们还将手动翻转 (rollover) 数据流以创建另一代索引:

POST dsl-data-stream/_doc?
{
  "@timestamp": "2023-10-18T16:21:15.000Z",
  "message": "192.0.2.42 - - [06/May/2099:16:21:15 +0000] \"GET /images/bg.jpg HTTP/1.0\" 200 24736"
}
POST dsl-data-stream/_rollover
{
  "acknowledged": true,
  "shards_acknowledged": true,
  "old_index": ".ds-dsl-data-stream-2024.03.21-000001",
  "new_index": ".ds-dsl-data-stream-2024.03.21-000002",
  "rolled_over": true,
  "dry_run": false,
  "conditions": {}
}

我们将使用 GET _data_stream API 来检查数据流的状态:

GET _data_stream/dsl-data-stream

检查响应,我们将看到两个后备索引(backing indices)均由 ILM 管理,并且下一个索引也将由 ILM 管理:

{
  "data_streams": [
    {
      "name": "dsl-data-stream",
      "timestamp_field": {
        "name": "@timestamp"
      },
      "indices": [
        {
          "index_name": ".ds-dsl-data-stream-2023.10.19-000001", (1)   
          "index_uuid": "xCEhwsp8Tey0-FLNFYVwSg",
          "prefer_ilm": true,                                    (2)   
          "ilm_policy": "pre-dsl-ilm-policy",                    (3)   
          "managed_by": "Index Lifecycle Management"             (4)   
        },
        {
          "index_name": ".ds-dsl-data-stream-2023.10.19-000002",
          "index_uuid": "PA_JquKGSiKcAKBA8DJ5gw",
          "prefer_ilm": true,
          "ilm_policy": "pre-dsl-ilm-policy",
          "managed_by": "Index Lifecycle Management"
        }
      ],
      "generation": 2,
      "status": "GREEN",
      "template": "dsl-data-stream-template",
      "next_generation_managed_by": "Index Lifecycle Management", (5)  
      "prefer_ilm": true,                                         (6)  
      "ilm_policy": "pre-dsl-ilm-policy",                         (7)  
      "hidden": false,
      "system": false,
      "allow_custom_routing": false,
      "replicated": false
    }
  ]
}
  1. 后备索引的名称。
  2. 对于每个后备索引,我们会显示 prefer_ilm 配置的值,该值将指示在两个系统都配置了索引的情况下,ILM 是否优先于数据流生命周期。
  3. 为此索引配置的 ILM 策略。
  4. 管理该索引的系统(可能的值为 “Index Lifecycle Management”、“Data stream lifecycle” 或 “Unmanaged”)
  5. 将管理下一个索引的系统(一旦数据流滚动,该数据流的新写入索引)。 可能的值为 “Index Lifecycle Management”、“Data stream lifecycle” 或 “Unmanaged”。
  6. 在支持数据流的索引模板中配置的 prefer_ilm 值。 该值将为所有新的后备索引配置。 如果未在索引模板中配置,则后备索引将接收 true 作为默认值(默认情况下,ILM 优先于数据流生命周期,因为它目前功能更丰富)。
  7. 在支持此数据流的索引模板中配置的 ILM 策略(将在所有新的后备索引上配置,只要它存在于索引模板中)。

将数据流迁移到数据流生命周期

要将 dsl-data-stream 迁移到数据流生命周期,我们必须执行两个步骤:

  • 更新支持数据流的索引模板,将 prefer_ilm 设置为 false,并配置数据流生命周期。
  • 使用 lifecycle API 为现有 dsl-data-stream 配置数据流生命周期。

重要:添加到索引模板中的数据流生命周期配置作为数据流配置,仅适用于新的数据流。 我们的数据流已经存在,因此即使我们在索引模板中添加了数据流生命周期配置,它也不会应用于 dsl-data-stream。

让我们更新索引模板:

PUT _index_template/dsl-data-stream-template
{
  "index_patterns": ["dsl-data-stream*"],
  "data_stream": { },
  "priority": 500,
  "template": {
    "settings": {
      "index.lifecycle.name": "pre-dsl-ilm-policy",
      "index.lifecycle.prefer_ilm": false                  (1)             
    },
    "lifecycle": {
      "data_retention": "7d"                               (2)
    }
  }
}
  • 现在将在新的后备索引(通过滚动数据流创建)上配置 prefer_ilm 设置,以便 ILM 不会优先于数据流生命周期。
  • 我们正在配置数据流生命周期,以便新数据流将由数据流生命周期管理。

我们现在已经确保新的数据流将由数据流生命周期进行管理。让我们更新现有的 dsl-data-stream 并配置数据流生命周期:

PUT _data_stream/dsl-data-stream/_lifecycle
{
    "data_retention": "7d"
}

我们可以检查数据流以检查下一代是否确实由数据流生命周期管理:

GET _data_stream/dsl-data-stream
{
  "data_streams": [
    {
      "name": "dsl-data-stream",
      "timestamp_field": {
        "name": "@timestamp"
      },
      "indices": [
        {
          "index_name": ".ds-dsl-data-stream-2023.10.19-000001",
          "index_uuid": "xCEhwsp8Tey0-FLNFYVwSg",
          "prefer_ilm": true,
          "ilm_policy": "pre-dsl-ilm-policy",
          "managed_by": "Index Lifecycle Management"                      (1)              
        },
        {
          "index_name": ".ds-dsl-data-stream-2023.10.19-000002",
          "index_uuid": "PA_JquKGSiKcAKBA8DJ5gw",
          "prefer_ilm": true,
          "ilm_policy": "pre-dsl-ilm-policy",
          "managed_by": "Index Lifecycle Management"                      (2)
        }
      ],
      "generation": 2,
      "status": "GREEN",
      "template": "dsl-data-stream-template",
      "lifecycle": {
        "enabled": true,
        "data_retention": "7d"
      },
      "ilm_policy": "pre-dsl-ilm-policy",
      "next_generation_managed_by": "Data stream lifecycle",             (3)         
      "prefer_ilm": false,                                           
      "hidden": false,                                                   (4)
      "system": false,
      "allow_custom_routing": false,
      "replicated": false
    }
  ]
}
  1. 现有支持索引将继续由 ILM 管理
  2. 现有支持索引将继续由 ILM 管理
  3. 下一代索引将由 Data stream lifecycle 管理
  4. 我们在索引模板中配置的 prefer_ilm 设置值将被反映,并将针对新的支持索引进行相应配置。

现在,我们将滚动数据流以查看由数据流生命周期管理的新一代索引:

POST dsl-data-stream/_rollover
GET _data_stream/dsl-data-stream
{
  "data_streams": [
    {
      "name": "dsl-data-stream",
      "timestamp_field": {
        "name": "@timestamp"
      },
      "indices": [
        {
          "index_name": ".ds-dsl-data-stream-2023.10.19-000001",
          "index_uuid": "xCEhwsp8Tey0-FLNFYVwSg",
          "prefer_ilm": true,
          "ilm_policy": "pre-dsl-ilm-policy",
          "managed_by": "Index Lifecycle Management"                    (1)          
        },
        {
          "index_name": ".ds-dsl-data-stream-2023.10.19-000002",
          "index_uuid": "PA_JquKGSiKcAKBA8DJ5gw",
          "prefer_ilm": true,
          "ilm_policy": "pre-dsl-ilm-policy",
          "managed_by": "Index Lifecycle Management"                    (2)              
        },
        {
          "index_name": ".ds-dsl-data-stream-2023.10.19-000003",        
          "index_uuid": "PA_JquKGSiKcAKBA8abcd1",
          "prefer_ilm": false,                                          (3)
          "ilm_policy": "pre-dsl-ilm-policy",                           
          "managed_by": "Data stream lifecycle"                         (4)
        }
      ],
      "generation": 3,
      "status": "GREEN",
      "template": "dsl-data-stream-template",
      "lifecycle": {
        "enabled": true,
        "data_retention": "7d"
      },
      "ilm_policy": "pre-dsl-ilm-policy",
      "next_generation_managed_by": "Data stream lifecycle",
      "prefer_ilm": false,
      "hidden": false,
      "system": false,
      "allow_custom_routing": false,
      "replicated": false
    }
  ]
}
  1. 翻转(rollover)前存在的后备索引将继续由 ILM 管理
  2. 翻转前存在的后备索引将继续由 ILM 管理
  3. 正如我们在索引模板中配置的那样,新的写入索引收到的 prefer_ilm 设置为 false
  4. 新的写入索引由 Data stream lifecycle 管理

将数据流迁移回 ILM

我们可以轻松地将此数据流更改为由 ILM 管理,因为我们在上面更新索引模板时没有删除 ILM 策略。

我们可以通过两种方式实现这一目标:

  1. 从数据流中删除生命周期
  2. 通过将 enabled 标志配置为 false 来禁用数据流生命周期

让我们实现选项 2 并禁用数据流生命周期:

PUT _data_stream/dsl-data-stream/_lifecycle
{
    "data_retention": "7d",
    "enabled": false                            (1)
}

enabled 标志可以省略,默认为 true,但是这里我们显式地将其配置为 false 让我们检查数据流的状态:

GET _data_stream/dsl-data-stream
{
  "data_streams": [
    {
      "name": "dsl-data-stream",
      "timestamp_field": {
        "name": "@timestamp"
      },
      "indices": [
        {
          "index_name": ".ds-dsl-data-stream-2023.10.19-000001",
          "index_uuid": "xCEhwsp8Tey0-FLNFYVwSg",
          "prefer_ilm": true,
          "ilm_policy": "pre-dsl-ilm-policy",
          "managed_by": "Index Lifecycle Management"
        },
        {
          "index_name": ".ds-dsl-data-stream-2023.10.19-000002",
          "index_uuid": "PA_JquKGSiKcAKBA8DJ5gw",
          "prefer_ilm": true,
          "ilm_policy": "pre-dsl-ilm-policy",
          "managed_by": "Index Lifecycle Management"
        },
        {
          "index_name": ".ds-dsl-data-stream-2023.10.19-000003",
          "index_uuid": "PA_JquKGSiKcAKBA8abcd1",
          "prefer_ilm": false,
          "ilm_policy": "pre-dsl-ilm-policy",
          "managed_by": "Index Lifecycle Management"                
        }
      ],
      "generation": 3,
      "status": "GREEN",
      "template": "dsl-data-stream-template",
      "lifecycle": {
        "enabled": false,                                          
        "data_retention": "7d"
      },
      "ilm_policy": "pre-dsl-ilm-policy",
      "next_generation_managed_by": "Index Lifecycle Management",  
      "prefer_ilm": false,
      "hidden": false,
      "system": false,
      "allow_custom_routing": false,
      "replicated": false
    }
  ]
}
  1. 写入索引现在由 ILM 管理
  2. 在数据流上配置的 lifecycle 现已禁用。
  3. 下一次写入索引将由 ILM 管理

如果我们在更新索引模板时从索引模板中删除了 ILM 策略,则数据流的写入索引现在将处于 Unmanged 状态,因为该索引不会将 ILM 策略配置为回退到之前的状态。文章来源地址https://www.toymoban.com/news/detail-861587.html

到了这里,关于Elasticsearch:将 ILM 管理的数据流迁移到数据流生命周期的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【天衍系列 04】深入理解Flink的ElasticsearchSink组件:实时数据流如何无缝地流向Elasticsearch

    Flink的Elasticsearch Sink是用于将Flink数据流(DataStream)中的数据发送到Elasticsearch的组件。它是Flink的一个连接器(Connector),用于实现将实时处理的结果或数据持续地写入Elasticsearch集群中的索引中。 下面是一些关于Flink的Elasticsearch Sink的基础概念: 数据源(Source) :Flink数据流

    2024年02月20日
    浏览(44)
  • 银行储蓄系统的顶层数据流图及细化数据流图

    绘制出银行储蓄系统的顶层数据流图及细化数据流图; 银行储蓄系统存、取款流程如下: 1)业务员事先录入利率信息; 2)如果是存款,储户填写存款单,业务员将存款单键入系统,系统更新储户存款信息(存款人姓名、存款人账号、电话号码、身份证号码、存款金额、存

    2024年01月17日
    浏览(39)
  • 数据流图(DFD)

    数据流图是用于表示系统逻辑模型的一种工具。从数据 传递和加工 的角度,以图形的方式描述数据在系统中流动和处理的过程 数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑等进行定义和描述,其目的是 对数据流图中的各个元素做出详细的说明 ,

    2024年02月04日
    浏览(38)
  • Flink数据流

    官网介绍 Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。Flink 被设计为在所有常见的集群环境中运行,以内存中的速度和任何规模执行计算。 1.无限流有一个开始,但没有定义的结束。它们不会在生成数据时终止并提供数据。必须连续处

    2024年02月17日
    浏览(40)
  • postman 数据流请求

    备注: Postman version : Version 9.21.3 Windows 版本 1.修改headers 2.Body 部分 选择raw 格式数据 3.最后执行请求

    2024年02月11日
    浏览(55)
  • 指令流和数据流

    指令流和数据流 Flynn于1972年提出计算平台分类法主要根据指令流和数据流来分类,分为四类: ①单指令流单数据流机器(S1SD) SISD机器是一种传统的串行计算机,它的硬件不支持任何形式的并行计算,所有的指令都是串行执行。并且在某个时钟周期内,CPU只能处理一个数据流

    2024年02月04日
    浏览(46)
  • nginx 转发数据流文件

    1.问题描述 后端服务,从数据库中查询日志,并生成表格文件返回静态文件。当数据量几兆时,返回正常,但是超过几十兆,几百兆,就会超过网关的连接超时时间30秒。 时序图  这里面主要花费时间的地方在: 1后台服务器,将数据格式化,写到本地的文件的过程 2后台服务

    2024年02月06日
    浏览(36)
  • Java文件读写数据流

    以下这几个类都是抽象类.并且都有对于文件操作的具体实现类.File+类名就是具体的实现类 1.1.1.InputStream 以二进制方式读.有两个主要方法. 1.read(); 该方法有三个版本 无参: read() 读取一个字节的数据,返回 -1 表示读取结束 一个参数: read(byte[] b) 最多读取 b.length 字节的数据到 b

    2024年02月16日
    浏览(34)
  • C# 数据流 FileStream

     

    2024年03月24日
    浏览(38)
  • 数据流重定向(>,>>)(<,<<)(2>,2>>)

    数据流重定向由字面意思来看,好像就是将【数据给他定向到其他地方去】的样子?没错数据流重定向就是将某个命令执行后应该要出现在屏幕上的数据,给他传输到其他地方。 什么是数据流重定向呢?这得由命令的执行说起,一般来说,如果你要执行一个命令,通常它会是

    2023年04月26日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包