【ES实战】索引生命周期管理(二)

这篇具有很好参考价值的文章主要介绍了【ES实战】索引生命周期管理(二)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

生命周期中的操作

Set Priority

一旦策略进入热、暖或冷阶段,就设置索引的优先级。在节点重启后,优先级较高的索引会在优先级较低的索引之前被恢复。

一般来说,热阶段的索引应该有最高值,冷阶段的索引应该有最低值。例如:HOT阶段为100,Warm阶段为50,cold阶段为0。没有设置这个值的索引,其默认的优先级为1。

PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "warm": {
        "actions": {
          "set_priority" : {
            "priority": 50
          }
        }
      }
    }
  }
}

Unfollow

将CCR跟随者索引转换为普通索引。这使得shrink、rollover和searchable snapshot等操作可以在跟随者索引上安全地执行。当在生命周期中移动跟随者索引时,你也可以直接使用unfollow。对不是跟随者的索引没有影响,阶段执行只是移动到下一个动作。

PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "unfollow" : {}
        }
      }
    }
  }
}

Freeze – 版本之后8.0开始取消

冻结一个索引以减少其内存占用。

PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "cold": {
        "actions": {
          "freeze" : { }
        }
      }
    }
  }
}

Rollover

当现有的索引满足滚动条件之一时,将一个目标翻转到一个新的索引。

如果在跟随者索引上使用滚动动作,策略的执行会等待,直到领导者索引滚动(或以其他方式标记完成),然后用取消关注动作将跟随者索引转换为普通索引。

翻转目标可以是一个数据流或一个索引别名。当以数据流为目标时,新的索引成为数据流的写索引,其生成被递增。

要翻转一个索引别名,该别名和它的写索引必须满足以下条件:

  • 索引名称必须符合模式^.*-\d+$,例如(my-index-000001)
  • index.lifecycle.rollover_alias必须被配置为要翻转的别名
  • 索引必须是该别名的写入索引

如果 my-index-000001 拥有索引别名 my_data, 则下列配置将生效。

PUT my-index-000001
{
  "settings": {
    "index.lifecycle.name": "my_policy",
    "index.lifecycle.rollover_alias": "my_data"
  },
  "aliases": {
    "my_data": {
      "is_write_index": true
    }
  }
}

必须指定至少一个翻转条件。一个空的翻转动作是无效的。可选条件如下:

  • max_age
    (可选的,时间单位)在达到从索引创建开始的最大经过时间后,触发滚动。经过的时间总是从索引创建时间开始计算,即使索引的起始日期被配置为一个自定义日期(通过index.lifecycle.parse_origination_dateindex.lifecycle.origination_date设置)。
  • max_docs
    (可选的,整数)在达到指定的最大文档数量后触发翻转。上次刷新后添加的文档不包括在文档计数中。文档计数不包括副本分片中的文档。
  • max_size
    (可选的,以字节为单位)当索引达到一定的大小时,触发器会翻转。这是索引中所有主分片的总大小。复制不会被计入最大的索引大小。
PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover" : {
            "max_age": "7d",
            "max_size": "100GB"
            "max_docs": 100000000
          }
        }
      }
    }
  }
}

翻转动作只有在满足其条件之一的情况下才会完成。这意味着任何后续阶段都被阻断,直到翻转成功。 翻转条件会阻碍了阶段转换

Read-Only

使得索引成为只读。

要在热阶段使用只读动作,必须有翻转动作。如果没有配置翻转动作,ILM将拒绝该策略。

PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "warm": {
        "actions": {
          "readonly" : { }
        }
      }
    }
  }
}

Shrink

将一个索引设置为只读,并将其收缩为一个具有较少主分片的新索引。新索引的名称是shrink-<original-index-name>的形式。例如,如果源索引的名字是logs,缩减后的索引的名字是shrink-logs。

shrink动作将索引的所有主分片分配给一个节点,这样它就可以调用Shrink API来收缩索引。在收缩之后,它将指向原始索引的别名交换到新的收缩后的索引。

要在热阶段使用收缩动作,必须有翻转动作。如果没有配置翻转动作,ILM将拒绝该策略。

如果在跟随者索引上使用收缩操作,策略的执行会等待领导者索引翻转(或者以其他方式标记完成),然后在执行收缩操作之前,用取消跟随操作将跟随者索引转换为普通索引。

如果被管理的索引是数据流的一部分,收缩后的索引将取代数据流中的原始索引。

这个操作不能在数据流的写索引上执行。试图这样做会失败。要收缩索引,首先手动翻转数据流。这将创建一个新的写索引。因为该索引不再是数据流的写索引,该操作可以恢复收缩它。使用在热阶段利用翻转动作的策略将避免这种情况,以及对未来管理索引进行手动翻转的需要。

PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "warm": {
        "actions": {
          "shrink" : {
            "number_of_shards": 1
          }
        }
      }
    }
  }
}

Force Merge

强制将索引合并到指定的最大段数中。这个动作使索引成为只读的。

要在热阶段使用forcemerge动作,必须有rollover动作。如果没有配置翻转动作,ILM将拒绝该策略。

forcemerge动作是最好的努力。可能会发生一些分片正在重新定位,在这种情况下,它们将不会被合并。

PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "warm": {
        "actions": {
          "forcemerge" : {
            "max_num_segments": 1
          }
        }
      }
    }
  }
}

Searchable Snapshot

在配置的资源库中获取管理的索引的快照,并将其挂载为可搜索的快照。如果该索引是数据流的一部分,被挂载的索引将取代数据流中的原始索引。

searchable_snapshot 操作需要数据层。该操作使用index.routing.allocation.include._tier_preference设置来将索引直接挂载到该阶段相应的数据层。例如,在冷阶段,该操作将可搜索快照索引挂载到冷数据层。

PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "cold": {
        "actions": {
          "searchable_snapshot" : {
            "snapshot_repository" : "backing_repo"
          }
        }
      }
    }
  }
}

如果在热阶段使用了 searchable_snapshot 动作,后续阶段就不能定义任何shrink, forcemerge, freeze or searchable_snapshot(在冷阶段也可用)操作。

这个操作不能在数据流的写索引上执行。试图这样做会失败。要将索引转换为可搜索的快照,首先手动翻转数据流。这将创建一个新的写索引。因为该索引不再是数据流的写索引,该操作可以将其转换为可搜索快照。使用一个在热阶段利用翻转动作的策略将避免这种情况,以及对未来管理索引进行手动翻转的需要。

默认情况下,该快照被删除阶段中的删除操作所删除。要保留快照,请在删除操作中把delete_searchable_snapshot设置为false

Downsample

聚集一个时间序列(TSDS)索引,并存储预先计算的统计摘要(最小、最大、总和、值_计数和平均数),用于按配置的时间间隔分组的每个指标领域。例如,一个包含每10秒取样的指标的TSDS索引可以被降频为每小时索引。一小时间隔内的所有文件都被汇总并作为一个文件存储,并存储在向下采样索引中。

这个操作对应的是downsample API。

产生的下采样索引的名称是downsample-<original-index-name>-<random-uuid>。如果ILM对一个数据流的支持索引执行了downsample操作,那么downsample索引就会成为同一数据流的支持索引,而源索引则被删除。

要在热阶段使用downsample动作,必须有rollover动作。如果没有配置翻转动作,ILM将拒绝该策略。

PUT _ilm/policy/datastream_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_docs": 1
          },
          "downsample": {
  	          "fixed_interval": "1h"
  	      }
        }
      }
    }
  }
}
  • fixed_interval:(必填, 字符串) 将对数据进行下采样的固定时间间隔。

Allocate

更新索引设置,以改变哪些节点被允许托管索引分片,并改变副本分片的数量。索引的初始分配必须手动或通过索引模板完成。

你可以配置这个动作,同时修改分配规则和副本数量,只修改分配规则,或者只修改副本数量。分配规则采用索引级别的。

 PUT _ilm/policy/my_policy
 {
   "policy": {
     "phases": {
       "cold": {
         "actions": {
           "allocate" : {
             "require" : {
               "box_type": "cold",
               "storage": "high"
             }
           }
         }
       }
     }
   }
 }

除了require,同样支持include,exclude

Migrate

通过更新index.routing.allocation.include._tier_preference索引设置,将索引移动到与当前阶段相对应的数据层。如果没有与allocate动作一起指定分配选项,ILM就会在Warm和Cold阶段自动注入migrate动作。如果你指定了一个只修改索引副本数量的allocate动作,ILM会在迁移索引之前减少副本的数量。为了防止在不指定分配选项的情况下进行自动迁移,你可以明确地包括migrate动作,并将启用选项设置为false

如果冷阶段定义了一个可搜索的快照动作,那么迁移动作将不会在冷阶段自动注入,因为被管理的索引将使用迁移动作配置的相同的_tier_preference基础设施直接挂载到目标层。

在Warm阶段,迁移动作将 index.routing.allocation.include._tier_preference设置为 data_warm,data_hot。这就把索引移到了Warm层的节点上。如果Warm层中没有节点,它就会返回到HOT层中。

在冷阶段,迁移动作将index.routing.allocation.include._tier_preference设置为data_cold,data_warm,data_hot。这就把索引移到了Cold层的节点上。如果Cold层中没有节点,它就会返回到Warm层,如果没有Warm层节点可用,就会返回到HOT层。

在Frozen阶段是不允许进行迁移操作的。Frozen阶段使用index.routing.allocation.include._tier_preferencedata_frozen,data_cold,data_warm,data_hot直接装载可搜索快照。这将索引移动到Frozen层的节点上。如果Frozen层中没有节点,它就会返回到Cold层,然后是Warm层,最后是Hot层。

在HOT阶段不允许进行迁移操作。最初的索引分配是自动进行的,可以手动配置或通过索引模板配置。

以下策略中的migrate动作被禁用,allocate动作将索引分配给rack_id为1或2的节点。

PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "warm": {
        "actions": {
          "migrate" : {
           "enabled": false
          },
          "allocate": {
            "include" : {
              "rack_id": "one,two"
            }
          }
        }
      }
    }
  }
}

Wait For Snapshot

在删除索引之前等待指定的SLM策略被执行。这确保了被删除的索引的快照是可用的。

PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "delete": {
        "actions": {
          "wait_for_snapshot" : {
            "policy": "slm-policy-name"
          }
        }
      }
    }
  }
}

Delete

永久性地删除索引文章来源地址https://www.toymoban.com/news/detail-687693.html

PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "delete": {
        "actions": {
          "delete" : { }
        }
      }
    }
  }
}

到了这里,关于【ES实战】索引生命周期管理(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

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

    概要 ElasticSearch中的索引生命周期管理,也就是ilm(Manage the index lifecycle),是指定了索引在不同周期下的处理策略。 ilm 的对象是索引而不是索引中的数据。 ilm 包括四个阶段:hot 、warm、cold和delete。 hot、warm和cold表示索引的使用情况,delete可以指定索引完成rollover后的旧索引

    2024年02月13日
    浏览(40)
  • Elasticsearch-37.索引全生命周期管理及工具介绍

    时间序列的索引 特点 索引中的数据随着时间, 持续不断增长 按照时间序 列划分索引的好处挑战 按照时间进行划分索引, 会使得管理更加简单。例如,完整删除一个引, 性能比delete by query好: 如何进行自动化管理,减少人工操作 从Hot 移动到Warm 定期关闭或者删除索引 索引

    2023年04月10日
    浏览(38)
  • Elasticsearch ILM实现索引全生命周期自动管理,解放双手

    公众号: MCNU云原生 ,欢迎搜索关注,更多干货,第一时间掌握! 一、什么是Elasticsearch ILM? Elasticsearch Index Lifecycle Management(ILM)是Elasticsearch的一个功能,用于管理索引的生命周期,优化索引的性能和减少存储成本。ILM可以自动执行索引的各种操作,如创建、删除、滚动、

    2023年04月13日
    浏览(39)
  • ES实战:通过kibana配置滚动索引

    步骤在官网有明确的描述,按照步骤一步一步操作,就可以实现。 官网地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started-index-lifecycle-management.html 英语溜的直接看官网哈。 下面我们按照官网的配置指南一步步操作。 1、创建生命周期策略 点击创建进入生命周

    2024年01月22日
    浏览(34)
  • 【ES实战】索引别名的使用说明

    索引别名可以通过API的方式进行操作 一个索引别名可以映射到一个或一个以上的索引 索引名和索引别名不能重复,在集群中都是唯一的 别名可以与过滤器结合使用 一个索引可以拥有多个别名 只映射到一个索引的索引别名默认可以写入。目前有特性,当别名关联到多个索引

    2024年02月14日
    浏览(52)
  • 【项目实战】ES的索引模式入门介绍

    在ES中,索引是指一组具有相似特征的文档的集合,可以将其看作是数据库中的表。 索引模式是指定义索引中文档的结构和属性的过程,类似于数据库中的表结构定义。 在ES中,索引模式是以JSON格式定义的,包含了文档的字段、类型、分析器等信息。 索引模式的设计对于E

    2024年02月07日
    浏览(35)
  • ES索引管理

    https://elasticstack.blog.csdn.net/article/details/102728987 1.1 rollover命令 POST /log_alias/_rollover {     \\\"conditions\\\":{         \\\"max_age\\\":\\\"7d\\\",         \\\"max_docs\\\":1400,         \\\"max_size\\\":\\\"5gb\\\"     } } 显示的结果是: {   \\\"acknowledged\\\" : true,   \\\"shards_acknowledged\\\" : true,   \\\"old_index\\\" : \\\"logs-2019.10.21

    2024年02月02日
    浏览(24)
  • es的索引管理

    (1)集群(Cluster): ES可以作为一个独立的单个搜索服务器。不过,为了处理大型数据集,实现容错和高可用性,ES可以运行在许多互相合作的服务器上。这些服务器的集合称为集群。 (2)节点(Node): 形成集群的每个服务器称为节点。 索引(index): 在 ES 中, 索引是一组文

    2024年02月11日
    浏览(25)
  • ES-索引管理

    数据类型 ​ 搜索引擎是对数据的检索,所以我们先从生活中的数据说起。我们生活中的数据总体分为两种: 结构化数据 非结构化数据 结构化数据: 也称作行数据,是由二维表结构来逻辑表达和实现的数据,严格地遵循数据格式与长度规范,主要通过关系型数据库进行存储

    2024年02月10日
    浏览(24)
  • 【ES实战】索引模板template使用说明

    模板的主要作用:可以帮助简化创建索引的语句,将模板中的配置和映射应用到创建的索引中。 新建索引时,索引名称满足 index_patterns 条件的,将会使用索引模板中的配置和映射。 index_patterns 使用 * 进行通配,不支持复杂的正则。 indexPattern 要求: 不能包含空字符 不能以

    2023年04月20日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包