elasticsearch的生命周期管理

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

介绍

当需要存储的数据量特别大的时候,我们会希望ES能够通过预先设定的阈值,去自动创建索引,并将过期的索引删除掉。这里就需要用到ES的生命周期。
ES的生命周期分为4个阶段:HOT->WARM->COLD->DELETE

版本说明

elasticsearch version 7.9.3
kibana version 7.9.3

首先就需要定义生命周期

其中的 HOT 阶段是必须配置的,其他三个阶段可选。
rollover下包含三个属性,可以从三个维度控制文档的滚动阈值。只要达到其中的任意一个条件及会生成新的索引

# DELETE _ilm/policy/message_policy
PUT _ilm/policy/message_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_docs" : 10, # 当索引的中文档数达到10时,触发滚动策略
			"max_size": "30GB", # 当索引的数据容量达到30GB时,触发滚动策略
			"max_age": "1d" # 每天生成一个新的索引
          }
        }
      }, 
      "delete": {
        "min_age": "5s", # 当索引的创建时间超过5s,索引就会被自动清理掉
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

定义索引的模版

我们可以通过定义模版,将匹配正则表达式message_info-*的所有新创建的索引设置成模板中设定的属性。还需要将我们之前定义好的生命周期message_policy设置到模版中index.lifecycle.name属性中。index.lifecycle.rollover_alias属性的含义是,以后通过生命周期管理新创建出来的索引,都可以通过这个属性中配置的别名message_alias访问到。

# DELETE _template/message_template
PUT _template/message_template
{
  "order": 1,
  "index_patterns": [
    "message_info-*"
  ],
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 1,
    "index.lifecycle.name": "message_policy", 
    "index.lifecycle.rollover_alias": "message_alias"
  },
  "mappings": {
    "properties": {
      "deviceId": {
        "type": "keyword"
      },
      "messageId": {
        "type": "keyword"
      }
    }
  }
}

这里需要手动设置一下第一创建的索引,目的是为了设置is_write_index属性

is_write_index :表示能够通过别名插入数据,默认情况下是不能通过别名插入的
这样的话,以后滚动生成的索引都会包含这个属性,这样就可以通过别名往新的索引中写入数据。
%3Cmessage_info_%7Bnow%2Fd%7D-000001%3E这个配置是想创建的索引名称中包含日期,穿件出来的索引就是这个样子的message_info_2022.12.16-000001
需要注意一点是,索引的名字必须是以横杠(-)加 数字结尾 ,也就是索引的名字必须匹配^.*-\d+$这个正则表达式。否则通过索引的生命周期是无法创建新的索引的,ES在滚动创建索引的时候会报错。

# DELETE /message_info-*
PUT %3Cmessage_info_%7Bnow%2Fd%7D-000001%3E
{
  "aliases": {
    "message_alias": {
      "is_write_index": true 
    }
  }
}

修改ES的定期检测时间

ES会根据设置时间定期检测,默认为10分钟,为了更快的看到效果,可以改为10秒。

PUT /_cluster/settings
{
  "transient": {
    "indices.lifecycle.poll_interval": "10s" 
  }
}

插入数据

POST /message_alias/_bulk
{"create":{"_type":"_doc"}}
{"deviceId":"张三","messageId":"1212"}

通过索引数据

通过别名查看

GET /message_alias/_search

通过别名查看索引定义

主要关注setting中的生命周期的配置是否正确

GET /message_alias
{
  "message_info_2022.12.16-000005" : {
    "aliases" : {
      "message_alias" : {
        "is_write_index" : true
      }
    },
    "mappings" : {
      "properties" : {
        "deviceId" : {
          "type" : "keyword"
        },
        "messageId" : {
          "type" : "keyword"
        }
      }
    },
    "settings" : {
      "index" : {
        "lifecycle" : {
          "name" : "message_policy",
          "rollover_alias" : "message_alias"
        },
        "number_of_shards" : "3",
        "provided_name" : "<message_info_{now/d}-000005>",
        "creation_date" : "1671157454338",
        "number_of_replicas" : "1",
        "uuid" : "snU_zflXTOW7CjqWqd63ug",
        "version" : {
          "created" : "7090399"
        }
      }
    }
  }
}

查看索引滚动计划

可以看到索引的生命周期信息

GET message_info-*/_ilm/explain
{
  "indices" : {
    "message_info_2022.12.16-000005" : {
      "index" : "message_info_2022.12.16-000005",
      "managed" : true,
      "policy" : "message_policy",
      "lifecycle_date_millis" : 1671157454338,
      "age" : "16.13m",
      "phase" : "hot",
      "phase_time_millis" : 1671157454438,
      "action" : "rollover",
      "action_time_millis" : 1671157464410,
      "step" : "check-rollover-ready",
      "step_time_millis" : 1671157464410,
      "phase_execution" : {
        "policy" : "message_policy",
        "phase_definition" : {
          "min_age" : "0ms",
          "actions" : {
            "rollover" : {
              "max_size" : "30gb",
              "max_age" : "1d",
              "max_docs" : 10
            }
          }
        },
        "version" : 4,
        "modified_date_in_millis" : 1671111430428
      }
    }
  }
}

对已存在的索引设置生命周期

PUT jidu_iot_message_handle_device_message_info_*/_settings
{
  "index": {
    "lifecycle": {
      "name": "jidu_iot_message_handle_device_message_policy"
    }
  }
}

参考文献

https://www.elastic.co/guide/en/elasticsearch/reference/7.9/set-up-lifecycle-policy.html#ilm-create-policy
https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-rollover-index.html#roll-over-index-alias-with-write-index文章来源地址https://www.toymoban.com/news/detail-617216.html

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

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

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

相关文章

  • Elasticsearch ILM实现索引全生命周期自动管理,解放双手

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

    2023年04月13日
    浏览(29)
  • elasticsearch 7.9.3知识归纳整理(五)之 es的索引生命周期管理

    一、常见概念及命令 1.1、概念 ILM定义了四个生命周期阶段: Hot :正在积极地更新和查询索引。 Warm :不再更新索引,但仍在查询。 cold :不再更新索引,很少查询。信息仍然需要可搜索,但是如果这些查询速度较慢也可以。 Delete :不再需要该索引,可以安全地将其删除

    2024年01月22日
    浏览(40)
  • 学习Spark的数据生命周期管理技术

    数据生命周期管理是数据科学家和数据工程师在处理大规模数据时面临的重要挑战。Apache Spark是一个开源的大数据处理框架,它可以处理批量数据和流式数据,并提供了一个易用的API来进行数据处理和分析。在本文中,我们将探讨如何学习Spark的数据生命周期管理技术,以便

    2024年02月22日
    浏览(22)
  • Elasticsearch 索引模板、生命周期策略、节点角色(1),8年大数据开发开发教你如何写简历

    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年最新大数据全套学习资料》,

    2024年04月26日
    浏览(30)
  • elasticsearch生命周期的阶段

    Hot : The index is actively being updated and queried. 可以设置滚动阈值 hot阶段是必须的,其他的阶段是可选的 hot phase有个坑: rollover 这里指的是如果你想让索引在hot阶段待5min,你可以在hot设置rollover时间触发条件为5min,然后warm阶段设置data into为0,正常情况下没问题.但是问题出在哪呢?roll

    2024年02月11日
    浏览(43)
  • ElasticSearch生命周期定期清理过期

    Elasticsearch(以下简称ES)是一个强大的分布式搜索和分析引擎,可以用于存储和分析各种类型的数据,包括日志数据。ES的索引(index)可以存储日志数据,并且可以设置生命周期策略来清理过期的日志数据。 以下是利用ES生命周期策略清理过期日志的一般步骤: 创建索引模

    2024年02月06日
    浏览(25)
  • Elasticsearch 索引模板、生命周期策略、节点角色

    索引模板可以帮助简化创建和二次配置索引的过程,让我们更高效地管理索引的配置和映射。 索引生命周期策略是一项有意义的功能。它通常用于管理索引和分片的热(hot)、温(warm)和冷(cold)数据,以及定期删除过期的数据,以确保Elasticsearch的健康运行。 Elasticsearch集

    2024年04月16日
    浏览(26)
  • 云服务全生命周期管理

    云服务全生命周期管理主要包括的主要包括需求与设计、开发与封装、发布与上架、服务变更、服务下架等过程。 需求与设计 通过用户访谈了解、挖掘真实需求;根据用户的真实需求进行需求分析,形成《需求分析报告》;组织相关干系人进行需求评审,确认需求可行;根

    2024年02月13日
    浏览(26)
  • 【ElasticSearch】更新es索引生命周期策略,策略何时对索引生效

    大家好,我是好学的小师弟,今天和大家讨论下更新es索引生命周期策略后,策略何时对索引生效 结论: 若当前索引已应用策略A(旧),更新完策略A后,新的策略A会立即对原来的已经应用该策略的索引生效;若当前索引符合新策略A的生命周期变化条件,则会自动进入下一阶段

    2024年02月07日
    浏览(31)
  • Docker——容器生命周期管理(下篇)

    ​创建一个新的容器并运行一个命令 OPtion 作用 -i 以交互模式运行,通常与-t同时使用 -t 启动容器后,为容器分配一个命令行,通常与-i同时使用 -v 目录映射,容器目录挂载到宿主机目录,格式host目录容器目录 -d 守护进程,后台运行该容器 -p 指定端口映射,格式: 主机(宿主

    2024年02月08日
    浏览(24)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包