tencent cloud

Elasticsearch Service

新手指引
动态与公告
产品动态
产品公告
安全公告
产品简介
产品概述
Elasticsearch 版本支持说明
产品功能
高级特性(X-Pack)
产品优势
应用场景
能力与限制说明
相关概念
购买指南
计费概述
产品定价
ES Serverless 服务定价
欠费说明
ES 内核增强
内核版本发布记录
定向路由优化
压缩算法优化
FST Off Heap 内存优化
快速入门
集群规格和容量配置评估
创建集群
访问集群
ES Serverless 服务指南
服务概述
基本概念
5分钟快速体验
快速使用
访问控制
数据写入
数据查询
索引管理
告警管理
ES API 参考
相关问题
数据应用指南
数据应用概述
数据管理
ES 集群指南
集群管理
访问控制
集群多可用区部署
集群扩缩容
集群配置
插件配置
监控与告警
日志查询
数据备份
升级
实践教程
数据迁移和同步
应用场景构建
索引设置
SQL 支持
企业微信机器人接收 Watcher 告警
API 文档
History
Introduction
API Category
Instance APIs
Making API Requests
Data Types
Error Codes
常见问题
产品相关问题
ES 集群
词汇表
新版介绍
Elasticsearch Service 2020.07新版
Elasticsearch Service 2020.2新版
Elasticsearch Service 2019.12新版
文档Elasticsearch Service实践教程索引设置冷热分离与索引生命周期管理

冷热分离与索引生命周期管理

PDF
聚焦模式
字号
最后更新时间: 2020-10-10 14:59:59
Elasticsearch 主要用于海量数据的存储和检索,若将所有数据都放在 SSD 硬盘上,成本会非常高。可通过冷热分离来解决这个问题,冷热集群可以在一个集群内包含冷、热两种属性的节点,从而兼顾性能和容量之间的矛盾:
对读写性能要求比较高的热数据(例如,7天内的日志)可以在热节点上以 SSD 磁盘存储。
对存储量需求比较大但对读写性能要求较低的索引(例如1个月甚至更长时间的日志)可以在冷节点上以 SATA 磁盘存储。
腾讯云 ES 提供了快速配置构建冷热集群的能力,用户可以在腾讯云官网根据业务需要指定冷热节点规格,快速建立一个冷热分离架构的 ES 集群。

创建冷热集群

在购买集群时直接创建

1. 进入腾讯云 Elasticsearch Service 创建集群 页面,在页面填写所需创建集群的相关信息。
2. 数据节点部署方式选择冷热模式,并选择冷热节点的规格,如下图。


3. 进一步设置集群的其他参数,确认并支付即可。

将现有集群变配为冷热集群

在集群管理页面,单击右上角的 更多操作,在下拉菜单中选择调整配置,选择冷热模式,根据需要设置冷热节点的规格和相关配置,将现有集群变配为冷热集群。

使用冷热集群

节点角色查看

验证节点冷热属性,命令如下:
GET _cat/nodeattrs?v&h=node,attr,value&s=attr:desc

node attr value
node1 temperature hot
node2 temperature hot
node3 temperature warm
node4 temperature hot
node5 temperature warm
...

指定索引冷热属性

业务方可以根据实际情况决定索引的冷热属性。
对于热数据,设置索引如下:
PUT hot_data_index/_settings
{
"index.routing.allocation.require.temperature": "hot"
}
对于冷数据,设置索引如下:
PUT warm_data_index/_settings
{
"index.routing.allocation.require.temperature": "warm"
}

验证设置的索引

1. 创建索引。
PUT hot_warm_test_index
{
"settings": {
"number_of_replicas": 1,
"number_of_shards": 3
}
}
2. 查看分片分配,可以看到分片均匀分配在五个节点上。
GET _cat/shards/hot_warm_test_index?v&h=index,shard,prirep,node&s=node
index shard prirep node
hot_data_index 1 p node1
hot_data_index 0 r node1
hot_data_index 2 r node2
hot_data_index 2 p node3
hot_data_index 1 r node4
hot_data_index 0 p node5
3. 设置索引。
设置索引为热索引。
PUT hot_warm_test_index/_settings
{
"index.routing.allocation.require.temperature": "hot"
}
查看分片分配,分片均分配在热节点上。
GET _cat/shards/hot_warm_test_index?v&h=index,shard,prirep,node&s=node
index shard prirep node
hot_data_index 1 p node1
hot_data_index 0 r node1
hot_data_index 0 p node2
hot_data_index 2 r node2
hot_data_index 2 p node4
hot_data_index 1 r node4
设置索引为冷索引。
PUT hot_warm_test_index/_settings
{
"index.routing.allocation.require.temperature": "warm"
}
查看分片分配,分片均分配到冷节点上。
GET _cat/shards/hot_warm_test_index?v&h=index,shard,prirep,node&s=node
index shard prirep node
hot_data_index 1 p node3
hot_data_index 0 r node3
hot_data_index 2 r node3
hot_data_index 0 p node5
hot_data_index 2 p node5
hot_data_index 1 r node5

索引生命周期管理

腾讯云目前已提供6.8.2版本的集群,该版本 Elasticsearch(>=6.6) 提供了索引生命周期管理功能。索引生命周期管理可以通过 API 或者 kibana 界面配置,详情可参考 index-lifecycle-management。下文将通过 kibana 界面来演示,如何使用索引生命周期管理,结合冷热分离架构,实现索引数据的动态管理。
kibana 中的索引生命周期管理位置如下图(版本6.8.2):


单击 Create policy 进入配置界面。索引的生命周期为Hot phaseWarm phaseCold phaseDelete phase四个阶段。
Hot phase:此阶段可以根据索引的文档数、大小、时长决定是否调用 rollover API 来滚动索引,详情可参考 indices-rollover-index。因与本文关系不大,这里不再赘述。
Warm phase:当一个索引在Hot phase被 rollover 后便会进入Warm phase ,进入该阶段的索引会被设置为 read-only。用户可为此索引设置要使用的 attribute,例如对于冷热分离策略,这里可选择temperature: warm属性。另外还可以对索引进行 forceMerge、shrink 等操作,这两个操作具体可以参考 shrink APIforce merge 官方文档。

Cold phase:可以设置当索引 rollover 一段时间后进入 cold 阶段,这个阶段也可以设置一个属性。从冷热分离架构可以看出冷热属性是具备扩展性的,不仅可以指定 hot、warm,也可以扩展增加 hot、warm、cold、freeze 等多个冷热属性。如果想使用三层的冷热分离,可指定为temperature: cold。同时还支持对索引的 freeze 操作,详情参考 freeze API 官方文档。
Delete phase:可以设置索引 rollover 一段时间后进入 delete 阶段,进入该阶段的索引会自动被删除。



帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈