简介
-
索引模板可以帮助简化创建和二次配置索引的过程,让我们更高效地管理索引的配置和映射。
-
索引生命周期策略是一项有意义的功能。它通常用于管理索引和分片的热(hot)、温(warm)和冷(cold)数据,以及定期删除过期的数据,以确保Elasticsearch的健康运行。
-
Elasticsearch集群中,不同节点扮演着不同的角色(热(hot)、温(warm)和冷(cold)主节点),共同构成了强大的搜索和分析引擎。
ELK系列文章: ELK
此文档基于 8.0版本编写。
索引模板 - Template
索引可使用预定义的模板进行创建,这个模板称作Index templates。模板设置包括设置和映射,通过模式匹配的方式使得多个索引重用一个模板。
索引模式
用于匹配创建的索引。
索引设置
settings主要作用于index的一些相关配置信息,如分片数、副本数,tranlog同步条件、refresh等。
官方文档
下面就是把副本数量指定为2,默认副本数量为1。
{"index": {"number_of_replicas": "2"}
}
-
index.codec 默认使用 LZ4 压缩存储的数 压缩,但可以将其设置为使用 DEFLATE 进行更高的压缩比,以较慢的存储字段性能为代价。
-
index.number_of_replicas 每个主分片的副本数。默认值为 1。
-
index.number_of_shards 索引应具有的主分片数。默认值为1 。此设置只能在创建索引时设置。不能在索引上的更改它。
索引映射
mappings主要是一些说明信息,大致又分为_all、_source、prpperties这三部分:
-
_all:主要指的是AllField字段,我们可以将一个或多个都包含进来,在进行检索时无需指定字段的情况下检索多个字段。设置
-
_source:主要指的是SourceField字段,Source可以理解为ES除了将数据保存在索引文件中,另外还有一份源数据。_source字段在我们进行检索时相当重要,如果在{“enabled” : false}情况下默认检索只会返回ID, 你需要通过Fields字段去到索引中去取数据,效率不是很高。但是enabled设置为true时,索引会比较大,这时可以通过Compress进行压缩和inclueds、excludes来在字段级别上进行一些限制,自定义哪些字段允许存储。
-
properties:这是最重要的步骤,主要针对索引结构和字段级别上的一些设置。“_all” : {“enabled” : true}
咱们通常在elasticsearch中 post mapping信息,每重新创建索引便到设置mapping,分片,副本信息。非常繁琐。强烈建议大家通过设置模板方式设置索引信息。设置索引名,通过正则匹配的方式匹配到相应的模板。
直接修改mapping的优先级>索引模板。索引匹配了多个模板,当属性等配置出现不一致的,以order的最大值为准,order默认值为0
创建过程 - Kibana
选择 Stack Management > 数据 > 索引管理 > 索引模板 > 创建模板
配置名称和索引模式
填写名称、和索引模式和开启允许自动创建索引。点击下一步,跳过组件模板。
注意索引模式需要匹配要创建的索引名称。
索引设置
配置副本数量为2,点击下一步到复查模板。最后点击创建模板。
最终索引模式匹配的创建模板,都会套用模板配置。
索引生命周期
索引生命周期可以手动关联模板,也可以通过索引模板自动关联。
创建
选择 Stack Management > 数据 > 索引管理 > 索引生命周期策略 > 点击创建策略。
创建策略,配置热阶段 180天后转换为冷阶段,并把副本数量改为0。再过365天后删除。
冷阶段配置
配置副本分片重定为0,并配置此阶段后删除。
删除阶段
配置冷阶段365天后删除索引。
关联索引模板
集群角色
node.roles: [ data, master ]
# 配置文件示例
主节点(Master-eligible node)
-
主节点的核心用途:集群层面的管理,例如创建或删除索引、跟踪哪些节点是集群的一部分,以及决定将哪些分片分配给哪些节点。主节点的path.data 用于存储集群元数据信息,不可缺少。
-
主节点的重要性:拥有稳定的主节点对于集群健康非常重要。
和早期版本不同,节点角色划分后,主节点又被细分为:候选主节点和仅投票主节点。
- 主节点存储数据:集群中每个索引的索引元数据,集群层面的元数据。
专用候选主节点(Dedicated master-eligible node)
如果集群规模大、节点多之后,有必要独立设置专用候选主节点。
专用候选主节点配置:
node.roles: [ master ]
仅投票主节点(Voting-only master-eligible node)
用途:仅投票,不会被选为主节点。
硬件配置可以较专用候选主节点低一些。
仅投票主节点配置:
node.roles: [ master, voting_only ]
注意:master 在集群中必不可少。
关于集群主节点配置,要强调说明如下:
-
高可用性 (HA) 集群需要至少三个符合主节点资格的节点;其中至少两个不是仅投票节点。
-
即使其中一个节点发生故障,这样的集群也将能够选举一个主节点。
数据节点(Data node)
数据节点用途:数据落地存储、数据增、删、改、查、搜索、聚合操作等处理操作。
数据节点硬件配置:CPU 要求高、内存要求高、磁盘要求高。
专属数据节点好处:主节点和数据节点分离,各司其职。
数据节点存储内容:
-
分片数据。
-
每个分片对应的元数据。
-
集群层面的元数据,如:setting 和 索引模板。
拥有专用数据节点的主要好处是主角色和数据角色的分离。
数据节点的配置:
node.roles: [ data ]
用途:运行转换并处理转换 API 请求。这块,咱们之前文章没有涉及。
在 Elastic 多层(tires)冷热集群架构体系下,数据节点又可以细分为:
-
内容数据节点(Content data node)
-
热数据节点(Hot data node)
-
温数据节点(Warm data node)
-
冷数据节点(Cold data node)
-
冷冻数据节点(Frozen data node)
内容数据节点
用途:处理写入和查询负载,具有较长的数据保留要求。
建议至少设置一个副本,以保证数据的高可用。
不属于数据流的系统索引或其他索引会自动分配到内容数据节点。
node.roles: [ data_content ]
热数据节点
用途:保存最近、最常访问的时序数据。
推荐使用:SSD 磁盘,至少设置一个副本。
node.roles: [ data_hot ]
****
温数据节点
用途:保存访问频次低且很少更新的时序数据。
node.roles: [ data_warm ]
冷数据节点
用途:保存不经常访问且通常不更新的时序数据。可存储可搜索快照。
node.roles: [ data_cold ]
冷冻数据节点
用途:保存很少访问且从不更新的时序数据。
node.roles: [ data_frozen ]
在冷热集群架构时序数据 ILM 索引生命周期管理的实战演练环节,验证发现:
在配置节点角色时,data_hot、data_warm、data_cold 要和 data_content 要一起配置。且 data_hot、data_warm、data_cold 不要和原有的data 节点一起配置了。
如果仅data_hot 不设置 data_content 会导致集群数据写入后无法落地。
我的理解:data_hot, data_warm, data_cold 是标识性的节点,实际落地存储还得靠 data_content 角色。
数据预处理节点(ingest node)
用途:执行由预处理管道组成的预处理任务。
关于啥是数据的预处理?之前有多篇文章解读过:
Elasticsearch 预处理没有奇技淫巧,请先用好这一招!
Elasticsearch的ETL利器——Ingest节点
node.roles: [ ingest ]
仅协调节点(Coordinating only node)
用途:类似智能负载均衡器,负责:路由分发请求、聚集搜索或聚合结果。
注意事项:在一个集群中添加太多的仅协调节点会增加整个集群的负担,因为当选的主节点必须等待来自每个节点的集群状态更新的确认。
node.roles: [ ]# 空配置
空即是“色”,不对,这里空即是“仅协调节点”。
远程节点(Remote-eligible node)
用途:跨集群检索或跨集群复制。
node.roles: [ remote_cluster_client ]
3.6 机器学习节点(Machine learning node)
用途:机器学习,系收费功能。
node.roles: [ ml, remote_cluster_client]
3.7 转换节点(Transform node)
用途:运行转换并处理转换 API 请求。这块,咱们之前文章没有涉及。
推荐阅读:
https://www.elastic.co/guide/en/elasticsearch/reference/current/transform-overview.html
node.roles: [ transform, remote_cluster_client ]
角色资源耗费
参考
https://chenzhonzhou.github.io/2021/01/31/elasticsearch-suo-yin-mo-ban-template/
https://cloud.tencent.com/developer/article/2009025