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

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

在本教程中,我们将了解如何将现有数据流(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 策略配置为回退到之前的状态。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/475417.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Yolov部署在Windows和Android上

Yolov部署在Windows和Android上 前言主要模块主要流程转换为ONNX 部署代码JAVAC 前言 Yolov是目标检测的利器,工业中运用得很火。尽管网上的Yolov部署资料很多,但是这块内容目前做得还算上成熟。为了将Yolov部署在Android和Windows上费了些功夫&#xff…

‍Java OCR技术全面解析:六大解决方案比较

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

升级你的技能:发现国产操作系统Deepin学习网站的无限可能!

网址:deepin是一款由武汉深之度科技有限公司开发的Linux操作系统。以下是对deepin的详细介绍: 发展历程:deepin最初名为Hiweed Linux,自2004年起开始对外发行。它经历了多次迭代和改进,逐渐发展成为今天广受好评的操作…

语音转文字——sherpa ncnn语音识别离线部署C++实现

简介 Sherpa是一个中文语音识别的项目,使用了PyTorch 进行语音识别模型的训练,然后训练好的模型导出成 torchscript 格式,以便在 C 环境中进行推理。尽管 PyTorch 在 CPU 和 GPU 上有良好的支持,但它可能对资源的要求较高&#x…

面试算法-67-完全二叉树的节点个数

题目 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置…

招聘系统开发招聘软件APP招聘小程序开发对标仿BOSS直聘

项目背景 一、市场前景:求职招聘市场的数字化革新 随着互联网的普及和人们对线上求职的接受度提高,求职招聘市场正经历一场数字化革新。招聘系统、软件APP与小程序等数字化产品不仅提供了便捷的求职和招聘服务,还通过智能算法和数据分析技术…

“美联储才是大多头”!鲍威尔推翻降息疑虑!今年降息三次,比特币直奔6.8万!

北京时间周四(3月21日)凌晨,美联储宣布将基准利率维持在5.25%-5.50%区间,为连续第五次保持利率不变,符合市场预期。 然而,更引人注目的是美联储对未来的降息计划。即使降低通胀的进展已经停滞,美…

创建maven项目

创建空项目 然后配置maven 然后,创建module

多线程实现

1.多线程:并发实现 主线程和子线程并行实现。 一个进程中有多个线程,可以同时进行多个任务。进程是系统分配的,线程的执行是由调度器决定的。 注意:线程开启不一定执行,由Cpu调度执行。 线程创建的三种方式&#xff…

js【详解】深拷贝

什么是深拷贝? 对于引用类型的数据,才有深浅拷贝的说法 浅拷贝 :执行拷贝的变量只复制被拷贝变量内存的引用数据的地址。 被拷贝变量内地址指向的数据发生变化时,执行拷贝的变量也会同步改变 深拷贝: 在堆内存中开…

高效输入关键词,瞬间生成惊艳图片:创意与速度的完美结合!

在数字化时代,图片已经成为我们生活中不可或缺的一部分。无论是社交媒体的分享、广告的创意,还是工作中的报告展示,高质量的图片都能为我们的内容增添不少色彩。但你是否曾遇到过这样的困扰:想要一张符合心意的图片,却…

VScode前端常用插件推荐

Color Highlight—查看css颜色 这个插件可以让我们在vscode中看到代码中的颜色,效果如图所示 Chinese (Simplified) (简体中文) Language Pack for Visual Studi ------ 简体中文语言包 把vscode翻译为中文 Auto Rename Tag—自动修改对应的标签 效果如图所示…

uniapp+uview实现城市选择器

1.效果 2.代码—在components中创建CitySelect组件 <template><view><text class"uni-input" style"background-color: #F8F8F8;display: block;line-height: 76rpx;padding:0 29rpx;" tap"open">{{value}}</text><…

01-java面试题八股文-----java基础——20题

文章目录 <font color"red">1、java语言有哪些特点&#xff1a;<font color"red">2、面向对象和面向过程的区别<font color"red">3、标识符的命名规则。<font color"red">4、八种基本数据类型的大小&#xff…

linux下用docker安装mysql及导入文件

目录 1. 非root用户设置docker权限2. user账号安装mysql2. root账号打开防火墙3. 启动mysql容器3.1 在指定工作目录下建立文件夹3.2 配置文件3.3 开启mysql容器 4. 进入容器4.1 通过容器进入mysql4.1 设置账号4.2 建立数据库4.3 导入文件 5. windows连接数据库参考文件 1. 非ro…

.locked勒索病毒是什么,企业数据被加密了如何恢复?

.locked勒索病毒介绍 .locked勒索病毒是一种恶意软件&#xff0c;它利用加密技术锁定用户的数据或系统&#xff0c;并以此进行勒索。用户一旦感染此病毒&#xff0c;将无法访问其重要文件&#xff0c;病毒会要求用户支付一笔赎金以获取解密密钥。这种病毒通常使用强大的加密算法…

ssm基于Vue.js的在线购物系统的设计与实现论文

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于在线购物系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了在线购物系统&#xff0c;它彻底改变了过去传统的…

C#配置连接数据库字段

在Web.config文件中 添加如下配置 <!--连接数据库字段--><connectionStrings><add name"sql" connectionString"server.;uidsa;pwd8888;databaseArticleWebSite" /></connectionStrings>

Harbor介绍

1.什么是Harbor Harbor是一个开源的企业级Docker Registry管理项目&#xff0c;由VMware公司开源。 Harbor提供了比Docker官方公共镜像仓库更为丰富和安全的功能&#xff0c;尤其适合企业环境使用。以下是Harbor的一些关键特性&#xff1a; 权限管理&#xff08;RBAC&#x…

mysql 空间查询 多边形内的点

数据库查询 # 1新增空间point类型坐标字段 ALTER TABLE gaoxin_isdp.business_master ADD COLUMN location2 point NULL AFTER location;# 2从原字段更新点位字段&#xff0c;原字段poi1是字符串106.474596,29.464360 UPDATE business_master SET location POINT(substr(poi…