ElasticSearch备考 -- Manage the index lifecycle (ILM)

一、题目

在集群中,数据首先分布在data_hot节点,rollover 设置max_age:3d, max_docs:5,max_size:50gb, 优先级为100。

max_age:15s, forcemarge 段合并,数据迁移到data_warm节点, 副本数为0,优先级为50

max_age:30s, 数据从data_warm迁移到data_cold节点

max_age:60s, 数据删除

运用ilm,创建index template名字为task_ilm_template,匹配模式task_ilm-*,并指定ilm 策略,创建索引task_ilm_00001注意分布情况

二、思考

索引生命周期管理ILM是对索引数据管理的一种自动化方式,主要是通过policy+索引模版结合使用。

通过创建ILM,在policy中可以指定多个阶段,生命周期阶段包括:

  • Hot: The index is actively being updated and queried.

  • Warm: The index is no longer being updated but is still being queried.

  • Cold: The index is no longer being updated and is queried infrequently. The information still needs to be searchable, but it’s okay if those queries are slower.

  • Frozen: The index is no longer being updated and is queried rarely. The information still needs to be searchable, but it’s okay if those queries are extremely slow.

  • Delete: The index is no longer needed and can safely be removed.

每个阶段可以制定不同的动作action,action主要有以下:

  • Rollover: Creates a new write index when the current one reaches a certain size, number of docs, or age.

  • Shrink: Reduces the number of primary shards in an index.

  • Force merge: Triggers a force merge to reduce the number of segments in an index’s shards.

  • Delete: Permanently remove an index, including all of its data and metadata.

通过创建索引模版并配置ILM策略,可以在使用模版创建索引后,对数据起到一个自动化生命周期管理的目的。

三、解题

Step 1、前置工作修改集群

1)集群节点角色配置

  • node-1:data_hot, data_content
  • node-2:data_warm, data_content
  • node-3:data_cold, data_content

2)索引生命周期刷新间隔 

对于生产环境非必要配置,主要是为了索引生命周期刷新轮询间隔为1s,在验证时候能快速看到效果。

PUT _cluster/settings
{"persistent": {"indices.lifecycle.poll_interval": "1s"}
}

Step 2、创建ILM策略

可以通过命令行和图形化配置两种方式

【命令行方式】

PUT _ilm/policy/task_test_policy
{"policy": {"phases": {"hot": {"min_age": "0ms","actions": {"set_priority": {"priority": 100},"rollover": {"max_size": "50gb","max_primary_shard_size": "50gb","max_age": "3d","max_docs": 5}}},"warm": {"min_age": "15s","actions": {"forcemerge": {"max_num_segments": 1,"index_codec": "best_compression"},"set_priority": {"priority": 50},"allocate": {"number_of_replicas": 0}}},"cold": {"min_age": "30s","actions": {"readonly": {}}},"delete": {"min_age": "60s","actions": {"delete": {"delete_searchable_snapshot": true}}}}}
}

【图形化方式】

打开kibana在左侧菜单中找到management展开点击stack management

 在stack management中找到index lifecycle polices菜单,点击右侧的create ploicy的按钮

 配置hot phase 

 配置 warm phase

配置 cold phase

配置 delete phase,需要在 cold phase中点击 删除 按钮,会增加一个delete phase

Step 3、创建索引模版配置ILM策略

注意:在创建索引模版的时候要指定lifecycle,也就是刚刚创建的ILM策略。此外,还要指定rollover滚动操作别名,缺少别名创建的index也不能正常执行ILM策略。

【命令行方式】

PUT _index_template/task_ilm_template
{"settings": {"index": {"lifecycle": {"name": "task_test_policy","rollover_alias": "task_ilm"},"routing": {"allocation": {"include": {"_tier_preference": null}}},"number_of_shards": "5","number_of_replicas": "1"}},"mappings": {"properties": {"age": {"type": "integer"},"name": {"type": "text"}}},"aliases": {}
}

【图像界面方式】

在左侧菜单中点击data,在右侧主页面中选择index template 标签页,并点击create template按钮

 创建索引模版操作如下

此处需要注意:

1)匹配模式最后通配符要使用“-”中杠

 2)需要指定配置,重点需要配置数据节点

 创建模版中所需的字段及类型

最后点击Create template按钮

Step 4、创建索引验证 

注意这里有两个点

1)需要指定索引的别名,并且可以基于别名进行写入操作

2)数据的批量写入操作是基于别名的

# DELETE task_ilm-000001  
PUT task_ilm-000001 
{"aliases": {"task_ilm": {"is_write_index":true}}
}POST task_ilm/_bulk
{"create":{"_id":1}}
{"name":"key 1","age":1}
{"create":{"_id":2}}
{"name":"key 2","age":2}
{"create":{"_id":3}}
{"name":"key 3","age":3}
{"create":{"_id":4}}
{"name":"key 4","age":4}
{"create":{"_id":5}}
{"name":"key 5","age":5}POST task_ilm/_bulk
{"create":{"_id":6}}
{"name":"key 6","age":6}

创建后索引获取索引配置

在执行写入第6条数据的时候,数据写入到task_ilm-0002索引,前5条数据在task_ilm-0001索引, 在执行超过15s后,task_ilm-0001索引从node-1的hot节点转移到node-2的warm节点

在执行超过30s后,task_ilm-0001索引从node-2的warm节点转移到node-2的code节点

  在执行超过60s后,task_ilm-0001索引node3中删除

四、总结

这个一个综合性比较强的考点,考点内容很多包括ILM,包括索引模版等内容。

整体过程还是比较复杂的,这个需要多练习。


参考资料

  • ILM: Manage the index lifecycle | Elasticsearch Guide [8.1] | Elastic

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信息安全工程师(81)网络安全测评质量管理与标准

一、网络安全测评质量管理 遵循标准和流程 网络安全测评应严格遵循国家相关标准和流程,确保测评工作的规范性和一致性。这些标准和流程通常包括测评方法、测评步骤、测评指标等,为测评工作提供明确的指导和依据。 选择合格的测评团队 测评团队应具备相关…

使用 Python 构建代理池并测试其有效性

前言 在本篇文章中,我们将介绍如何通过 Python 脚本来构建一个代理池,并且对这些代理的有效性进行测试。整个流程涵盖了从网站抓取代理信息、存储这些信息以及异步地测试代理的有效性。这个脚本可以用作网络爬虫或其他需要使用代理服务器的应用的基础工具。 目标网站 一、…

设计者模式之策略模式

前言 在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都写在对象中,将会使对象变得异常复杂;而且有时候支持不频繁使用的算法也是一个性能负担。 如何在运行时根据需要透明地更改对象的算…

tomcat 开启远程debug模式

1.修改位置 CATALINA_OPTS"-Xdebug -Xrunjdwp:transportdt_socket,address*:8000,servery,suspendn"2.修改环境变量的方式 apache-tomcat-9.0.86/bin/setenv.sh export JAVA_HOME/opt/jdk1.8.0_171 export CATALINA_HOME/opt/apache-tomcat-9.0.86 export JAVA_OP…

AI辅助论文写作的利弊

人工智能的时代,AI从自动驾驶到智能家居,慢慢的都成为了我们生活中的一部分。可当AI被放到学术研究领域,特别是撰写论文这一问题上时,却出现了大量的争议,认为AI撰写论文会削弱该有的批判性思维能力。那不用AI撰写论文…

vue3+less使用主题定制(多主题定制)可切换主题

假如要使用两套主题:蓝色、红色 例如: 首先确保自己的vue3项目有less,这边不多做接入解释 1、在src目录下建一个styles文件夹,在syles文件夹下面新建两个less文件:theme.less和variables.less; theme.le…

后端Node学习项目-项目基础搭建

前言 各位好,我是前端SkyRain。最近为了响应公司号召,开始对后端知识的学习,作为纯粹小白,记录下每一步的操作流程。 项目仓库:https://gitee.com/sky-rain-drht/drht-node 因为写了文档,代码里注释不是很…

6-1.Java 面向对象 - 初级(对象与属性、对象与方法、递归、重载、可变参数、作用域、构造器、对象创建流程详解、this 关键字)

一、对象与属性 1、基本介绍 属性是类的一个组成部分,一般是基本数据类型,也可以是引用数据类型 属性的定义语法类似变量 【访问修饰符】 【属性类型】 【属性名】;属性的定义类型可以为任何类型(基本数据类型、引用数据类型)…

Maven(六)mvn 命令将 jar 包推送到 远程/本地仓库

目录 一、deploy - 推送到远程仓库1.1 命令语法:1.2 执行结果:1.3 可能遇到的问题问题1:with status code 401问题2:with status code 405问题3:Cannot deploy artifact from the local repository 二、install - 推送…

C语言心型代码解析

方法一 心型极坐标方程 爱心代码你真的理解吗 笛卡尔的心型公式&#xff1a; for (y 1.5; y > -1.5; y - 0.1) for (x -1.5; x < 1.5; x 0.05) 代码里面用了二个for循环&#xff0c;第一个代表y轴&#xff0c;第二个代表x轴 二个增加的单位不同&#xff0c;能使得…

JVM 由多个模块组成,每个模块负责特定的功能

Java虚拟机&#xff08;JVM, Java Virtual Machine&#xff09;是一个抽象的计算机&#xff0c;它提供了一个运行环境&#xff0c;使得Java字节码可以在不同的平台上执行。JVM 由多个模块组成&#xff0c;每个模块负责特定的功能。以下是 JVM 的主要模块及其功能&#xff1a; …

Java 中基于优先级执行任务的线程池实现

在日常开发中&#xff0c;我们经常遇到这样一种需求&#xff1a;需要按照任务的优先级顺序来执行&#xff0c;而不是简单的先进先出&#xff08;FIFO&#xff09;。Java 提供了 PriorityBlockingQueue&#xff0c;这是一个基于优先级排序的线程安全队列&#xff0c;可以用于实现…

CES2025展会媒体发布现场邀约采访计划来啦!海外科技电子媒体报纸新闻宣传方案

【本篇由 言同数字全球媒体投放 原创】一、CES 2025 展会概述 CES&#xff08;国际消费电子展&#xff09; 是全球规模最大、最具影响力的消费电子展会之一&#xff0c;由美国消费技术协会&#xff08;CTA&#xff09;主办。每年1月&#xff0c;CES吸引来自全球各地的行业领袖…

Axure设计之三级联动选择器教程(中继器)

使用Axure设计三级联动选择器&#xff08;如省市区选择器&#xff09;时&#xff0c;可以利用中继器的数据存储和动态交互功能来实现。下面介绍中继器三级联动选择器设计的教程&#xff1a; 一、效果展示&#xff1a; 1、在三级联动选择器中&#xff0c;首先选择省份&#xff…

【1】 Kafka快速入门-从原理到实践

文章目录 🔍 一、引言📜 二、Kafka 的历史🏗️ 三、Kafka 的核心结构🖥️ (一)Broker📋 (二)Topic📄 (三)Partition📤 (四)Producer📥 (五)Consumer🐒 (六)Zookeeper💡 四、Kafka 的重点概念📨 (一)消息📏 (二)偏移量(Offset)🔄 (…

使用Docker-Compose安装redis,rabbitmq,nacos,mysql,nginx,tomcat,portainer组件教程

因为开发经常会用到一些组件&#xff0c;又不想在本地启动&#xff0c;所以买了个服务器&#xff0c;然后将这些组件都安装到服务器上以便开发使用。下面就记录下使用docker-compose安装组件的教程以及一些需要注意的地方。 关于docker和docker-compose的安装在另一篇博客中有…

安装PyG

PyG安装 官方链接 Installation — pytorch_geometric documentation (pytorch-geometric.readthedocs.io) 安装步骤&#xff1a; 步骤一&#xff1a;安装Anaconda和CUDA 安装Anaconda-CSDN博客安装CUDA-CSDN博客 步骤二&#xff1a;查看支持的Python版本 步骤三&#xf…

如何在Linux中使用Cron定时执行SQL任务

文章目录 前言一、方案分析二、使用步骤1.准备脚本2.crontab脚本执行 踩坑 前言 演示数据需要每天更新监控数据&#xff0c;不想手动执行&#xff0c;想到以下解决方案 navicat 创建定时任务java服务定时执行linux crontab 定时执行sql脚本 一、方案分析 我选择了第三个方案…

夜天之书 #103 开源嘉年华纪实

上周在北京参与了开源社主办的 2024 中国开源年会。其实相比于有点明显班味的“年会”&#xff0c;我的参会体验更像是经历了一场中国开源的年度嘉年华。这也是在会场和其他参会朋友交流时共同的体验&#xff1a;在开源社的 COSCon 活动上&#xff0c;能够最大限度地一次性见到…

鸿蒙开启无线调试

DevEco Studio没找到通过WI-FI连接手机的可视化操作按钮&#xff0c;就去官网看了下hdc - TCP连接场景 操作也比较简单&#xff1a; 第1步&#xff1a;PC通过USB连接手机/平板&#xff1b; 第2步&#xff1a;在手机/平板的“开发者选项”中打开“无线调试”并记录下IP和端口…