前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Elastic Stack 实战教程 2:ILM 索引生命周期管理

Elastic Stack 实战教程 2:ILM 索引生命周期管理

作者头像
Se7en258
发布于 2023-02-26 08:00:39
发布于 2023-02-26 08:00:39
67000
代码可运行
举报
文章被收录于专栏:Se7en的架构笔记Se7en的架构笔记
运行总次数:0
代码可运行

本系列 Elastic Stack 实战教程总共涵盖 5 个实验,目的是帮助初学者快速掌握 Elastic Stack 的基本技能。 云起实验室在线体验地址:https://developer.aliyun.com/adc/series/activity/ElasticStack?accounttraceid=4fe42090d2af4caa9678abe670730c74plaw

  • 实验 1:Elastic Stack 8 快速上手
  • 实验 2:ILM 索引生命周期管理
  • 实验 3:快照备份与恢复
  • 实验 4:使用 Fleet 管理 Elastic Agent 监控应用
  • 实验 5:Elasticsearch Java API Client 开发

索引生命周期管理 (Index Lifecycle Management, ILM) 是在 Elasticsearch 在 6.6(公测版)首次引入并在 6.7 版正式推出的一项功能。ILM 旨在帮助用户更方便地管理时序数据(例如日志,指标等)。时序数据有如下几个典型的特点:

  • 随着时间的推移,数据的价值在逐渐降低。
  • 数据量非常大。
  • 数据追加写入,通常不会修改旧数据。

随着数据量的不断增大,我们需要对索引进行一定的维护管理甚至是删除清理。利用 ILM 策略我们针对索引不同阶段对数据读写的要求,将索引分配到合适的节点上,从而更好地利用机器的资源:

  • 例如最新需要频繁读写的数据,可以保存到 SSD 硬盘的节点上。
  • 对于较旧的数据,可以保存到机械硬盘的节点上。
  • 对于归档数据,可以保持到大容量廉价硬盘的节点上。
  • 当数据超过一定的时间,不再需要时,可以将该数据删除。

ILM 将一个索引的生命周期定义为了 5 个阶段,除了 Hot 阶段以外,其他阶段都是可选的。

阶段

介绍

Hot

索引正在被实时地写入和查询,可根据索引的文档数、大小、时长决定是否调用 Rollover API 来滚动创建新的索引。

Warm

索引不再被更新,但仍在被查询。

Cold

索引不再被更新,并且很少被查询,如果这些查询比较慢也没关系。

Frozen

索引不再被更新,并且很少被查询,如果这些查询非常慢也没关系。

Delete

不再需要索引,可以安全地删除。

不同的阶段只允许执行相应的 Action,具体如下表所示。

阶段

Set Priority

Unfollow

Rollover

Read-Only

Shrink

Force Merge

Searchable Snapshot

Allocate

Migrate

Wait For Snapshot

Delete

Hot

Warm

Cold

Frozen

Delete

常用的 Action 如下。

动作

介绍

Rollover

根据索引的文档数、大小、时长决定是否调用 Rollover API 来滚动创建新的索引。

Shrink

减少索引的主分片数。

Force Merge

段合并,可以减少索引段的数量并提高检索速度。段合并的时候会将那些旧的已删除文档从文件系统中清除。

Allocate

修改索引的副本分片数。

Read-Only

将索引设置为只读。

Delete

删除索引。

1 部署冷热分层集群

在 Elasticsearch 7.10 中引入了 data tiers(数据层)的概念,对数据节点类型做进一步的细分,分为 data_content, data_host, data_warm, data_cold, data_frozen,同一数据层的节点通常拥有相同硬件配置和性能。不同数据层的定义如下:

  • 内容层(content tier): 内容层往往存储常态化的数据,与时间序列数据不同,这类数据的价值随着时间的推移相对保持恒定,例如产品目录或者商品种类。
  • 热层(hot tier): 热层存储最新的时间序列数据,这类数据也是被查询最多的数据,因此热层中的节点在写入和读取时都需要快速,因此热层的节点通常拥有更好的 CPU、内存资源和更快的存储(例如 SSD 固态硬盘)。
  • 温层(warm tier): 一旦查询查询时间序列数据的频率开始低于热层中最近写入的数据,那么便可以将这些数据转移至温层。温层通常保留最近几周的数据,一般不会再对这些数据进行更新,温层的节点不需要像热层中的节点一样快。
  • 冷层(cold tier): 冷层存储访问频率较低的数据,我们通常会将冷层的数据设置为只读的,并且随着数据过渡到冷层,还可以对其进行压缩和去副本以节省存储空间。
  • 冻结层(frozon tier): 一旦数据不再被查询,便可以将数据从冷层移动到冻结层。在冻结层中可以选择以挂载索引的方式将数据存储在快照存储库中,可以省去副本的存储空间,当需要搜索时,再去快照存储库中提取数据,因此查询的速度通常较慢。

需要确保集群中至少有一个 data_hot 和 data_content 节点,即使它们是同一个节点,否则新索引将无法被分配。 新创建的索引默认将分配到 data_content 节点上。

在本实验中,我们将部署一个由 4 个节点组成的冷热分离架构的 Elasticsearch 集群,节点的角色分配如下。

节点

角色

说明

es01

master, data_content, data_hot

内容层,热层

es02

master, data_content, data_hot

内容层,热层

es03

master, data_warm

温层

es04

master, data_cold

冷层

首先执行以下命令修改系统参数以满足 Elasticsearch 的运行条件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 增加进程可使用的最大内存映射区域数
cat >> /etc/sysctl.conf << EOF
vm.max_map_count=262144
EOF

sysctl -p

# 增加进程可使用的最大文件描述符数量
cat >> /etc/security/limits.conf  << EOF
elastic - nofile  65535
EOF

ulimit -n 65535

为了方便实验,本节采用 Docker Compose 的方式快速部署 Elasticsearch 集群。执行如下命令,安装 Docker 和 Docker Compose。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl -sSL https://get.daocloud.io/docker | sh
apt install -y docker-compose

执行如下命令,获取 docker-compose.yml 配置文件,并在后台启动 Elasticsearch 集群。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apt install -y git
git clone https://gitee.com/cr7258/elastic-lab.git
cd elastic-lab/2_ilm/
docker-compose up -d

执行 docker-compose ps 命令查看容器运行状态,其中 2ilm_setup_1 容器是用于创建证书以及设置 elastic 和 kibana_system 用户密码的,执行完毕后会自动退出,我们需要确保其他容器处于 Up 状态。

2 设置 ILM 策略

浏览器输入 http://<ESC 公网 IP>:5601 访问 Kibana 界面。输入用户名 elastic,密码 elastic123,点击 Login in。其中密码是在 elastic-lab/2_ilm/.env 文件中设置的。

点击 Management -> Dev Tools -> Console,打开 Kibana Console 界面。ILM 服务会在后台定期轮询执行 Policy,默认的时间间隔为 10 分钟,为了测试更快地看到效果,这里将其修改为 1 秒。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PUT _cluster/settings
{
  "persistent": {
    "indices.lifecycle.poll_interval":"1s"
  }
}

接下来设置 ILM 策略,包含以下 4 个阶段:

  • Hot 阶段:超过 5 个文档以后 rollover 创建新的索引。
  • Warm 阶段:60s 后进入 warm 阶段,将副本分片数缩减为 0。
  • Cold 阶段:120s 后进入 cold 阶段,将索引设置为只读。
  • Delete 阶段:180s 后进入 delete 阶段,删除索引。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PUT _ilm/policy/log-ilm-policy
{
  "policy": {
    "phases": {
      "hot": {
        "min_age": "0s",
        "actions": {
          "rollover": {
            "max_docs": 5  // 超过 5 个文档以后 rollover 创建新的索引
          },
          "set_priority": {
            "priority": 100 // 优先级最高,当节点重启后优先恢复 hot 阶段的索引
          }
        }
      },
      "warm": {
        "min_age": "60s", // 60s 后进入 warn 阶段
        "actions": {
          "allocate": {
            "number_of_replicas": 0 // 将副本分片数缩减为 0
          },
          "set_priority": {
            "priority": 50
          }
        }
      },
      "cold": {
        "min_age": "120s", // 120s 后进入 cold 阶段
        "actions": {
          "readonly" : {}, // 将索引设置为只读
          "set_priority": {
            "priority": 0
          }
        }
      },
      "delete": {
        "min_age": "180s", // 180s 后删除索引
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

3 设置索引模板

创建索引模板,匹配 log-index- 开头的索引,关联 ILM 策略和别名,新索引的主分片数和副本分片数都设置为 1。索引模板是预先定义好的在创建新索引时自动应用的模板,在索引模板中可以定义在创建索引时为索引添加的别名、设置、字段映射以及索引应用的 ILM 策略等内容。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PUT _index_template/log-template
{
  "index_patterns" : [
      "log-index-*" // 通配符匹配索引
    ],
  "template": {
    "settings" : {
      "index" : {
        "lifecycle" : {
          "name" : "log-ilm-policy",  // 应用 ILM 策略
          "rollover_alias" : "log-index" // 指定 rollover 别名
        },
        "number_of_shards" : "1", // 主分片数
        "number_of_replicas" : "1"  // 副本分片数
      }
    }
  }
}

4 创建符合模板的起始索引

创建第一个索引 log-index-000001,设置索引别名为 log-index,后续在 rollover 滚动更新索引时,索引名会根据最后的序号递增,例如 log-index-000002,log-index-000003,log-index-000004 ...。is_write_index 参数设置为 true 表示往别名发送的写请求将发送到 log-index-000001 索引上。当发生 Rollover 时,Elasticsearch 会自动将新创建的索引的 is_write_index 参数设置为 true,同时将旧索引的 is_write_index 参数设置为 false,以确保往别名写入时只写入同一个索引。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PUT log-index-000001
{
"aliases": {
  "log-index": {
    "is_write_index": true 
  }
 }
}

查看别名 log-index,可以看到该别名下目前只有 1 个索引 log-index-000001,该索引处于可写的状态,并且应用了我们设置的 ILM 策略。当新建索引时,默认情况下,Elasticsearch 会将 index.routing.allocation.include._tier_preference 参数设置为 data_content,以将索引分片自动分配给内容层。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GET log-index

# 返回结果
{
"log-index-000001" : {
  "aliases" : {
    "log-index" : {
      "is_write_index" : true // 可写
    }
  },
  "mappings" : { },
  "settings" : {
    "index" : {
      "lifecycle" : { // 应用 ILM 策略
        "name" : "log-ilm-policy",
        "rollover_alias" : "log-index"
      },
      "routing" : {
        "allocation" : {
          "include" : {
            "_tier_preference" : "data_content" // 分片分配到内容层上
          }
        }
      },
      "number_of_shards" : "1",
      "provided_name" : "log-index-000001",
      "creation_date" : "1657374734018",
      "priority" : "100",
      "number_of_replicas" : "1",
      "uuid" : "kOXmUzVlRRmTZJfBxolpmg",
      "version" : {
        "created" : "8020399"
      }
    }
  }
 }
}

5 插入数据,观察效果

浏览器输入 http://<ESC 公网 IP>:9000 访问 Cerebro,在 Node address 输入框内填入 https://es01:9200,然后点击 Connect 连接 Elasticsearch 集群。

输入用户名 elastic,密码 elastic123,点击 Authenticate

往索引中插入 5 条数据,然后观察 ILM 策略的执行效果。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
POST log-index/_bulk
{"index":{}}
{"name":"Erlend","age":16}
{"index":{}}
{"name":"Brynjar","age":18}
{"index":{}}
{"name":"Fox","age":18}
{"index":{}}
{"name":"Frank","age":23}
{"index":{}}
{"name":"Sam","age":18}

// 手动触发段合并,让 Elasticsearch 更快监测到文档数量的变化
POST log-index/_forcemerge

等待一会 Elasticsearch 发现 log-index-000001 索引中的文档数达到 5 个,会触发 Rollover,创建新的索引 log-index-000002。

往别名发起的写入请求将会写入 log-index-000002 索引中。当然此时你仍然可以指定往 log-index-000001 索引中写入数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GET log-index
  
# 返回结果
{
  "log-index-000001" : {
    "aliases" : {
      "log-index" : {
        "is_write_index" : false // 被改为 false 了
      }
    },
    "mappings" : {
      "properties" : {
        "age" : {
          "type" : "long"
        },
        "name" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        }
      }
    },
    "settings" : {
      "index" : {
        "lifecycle" : {
          "name" : "log-ilm-policy",
          "rollover_alias" : "log-index",
          "indexing_complete" : "true"
        },
        "routing" : {
          "allocation" : {
            "include" : {
              "_tier_preference" : "data_content"
            }
          }
        },
        "number_of_shards" : "1",
        "provided_name" : "log-index-000001",
        "creation_date" : "1657374734018",
        "priority" : "100",
        "number_of_replicas" : "1",
        "uuid" : "kOXmUzVlRRmTZJfBxolpmg",
        "version" : {
          "created" : "8020399"
        }
      }
    }
  },
  "log-index-000002" : {
    "aliases" : {
      "log-index" : {
        "is_write_index" : true // 往别名发起的写入请求将发给 log-index-000002 索引
      }
    },
    "mappings" : { },
    "settings" : {
      "index" : {
        "lifecycle" : {
          "name" : "log-ilm-policy",
          "rollover_alias" : "log-index"
        },
        "routing" : {
          "allocation" : {
            "include" : {
              "_tier_preference" : "data_content"
            }
          }
        },
        "number_of_shards" : "1",
        "provided_name" : "log-index-000002",
        "creation_date" : "1657374971168",
        "priority" : "100",
        "number_of_replicas" : "1",
        "uuid" : "tT1hbzQxQH2Ms5luQki6gw",
        "version" : {
          "created" : "8020399"
        }
      }
    }
  }
}

等待 60s,log-index-000001 索引进入 Warm 阶段,索引分片移动到 es03 节点上,此时只保留了主分片,副本分片缩减为 0。

此时发现 log-index-000001 索引的 index.routing.allocation.include._tier_preference 参数被修改为了 data_warm,data_hot,当存在 data_warm 角色的节点,则将索引分配给温层;如果不存在 data_warm 角色的节点,则将索引分配给热层。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GET log-index
  
# 返回结果
{
  "log-index-000001" : {
    "aliases" : {
      "log-index" : {
        "is_write_index" : false
      }
    },
    "mappings" : {
      "properties" : {
        "age" : {
          "type" : "long"
        },
        "name" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        }
      }
    },
    "settings" : {
      "index" : {
        "lifecycle" : {
          "name" : "log-ilm-policy",
          "rollover_alias" : "log-index",
          "indexing_complete" : "true"
        },
        "routing" : {
          "allocation" : {
            "include" : {
              "_tier_preference" : "data_warm,data_hot" // 优先分配到温层
            }
          }
        },
        "number_of_shards" : "1",
        "provided_name" : "log-index-000001",
        "creation_date" : "1657374734018",
        "priority" : "50",
        "number_of_replicas" : "0",
        "uuid" : "kOXmUzVlRRmTZJfBxolpmg",
        "version" : {
          "created" : "8020399"
        }
      }
    }
  },
  "log-index-000002" : {
    "aliases" : {
      "log-index" : {
        "is_write_index" : true
      }
    },
    "mappings" : { },
    "settings" : {
      "index" : {
        "lifecycle" : {
          "name" : "log-ilm-policy",
          "rollover_alias" : "log-index"
        },
        "routing" : {
          "allocation" : {
            "include" : {
              "_tier_preference" : "data_content"
            }
          }
        },
        "number_of_shards" : "1",
        "provided_name" : "log-index-000002",
        "creation_date" : "1657374971168",
        "priority" : "100",
        "number_of_replicas" : "1",
        "uuid" : "tT1hbzQxQH2Ms5luQki6gw",
        "version" : {
          "created" : "8020399"
        }
      }
    }
  }
}

等待 120s,log-index-000001 索引进入 Cold 阶段,索引分片移动到 es04 节点上,此时索引被设置为只读状态。

此时发现 log-index-000001 索引的 index.routing.allocation.include._tier_preference 参数被修改为了 data_cold,data_warm,data_hot,索引将会被优先分配到冷层,如果没有 data_cold 角色的节点,再依次考虑分配到温层或者热层。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GET log-index
  
# 返回结果

{
  "log-index-000001" : {
    "aliases" : {
      "log-index" : {
        "is_write_index" : false
      }
    },
    "mappings" : {
      "properties" : {
        "age" : {
          "type" : "long"
        },
        "name" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        }
      }
    },
    "settings" : {
      "index" : {
        "lifecycle" : {
          "name" : "log-ilm-policy",
          "rollover_alias" : "log-index",
          "indexing_complete" : "true"
        },
        "routing" : {
          "allocation" : {
            "include" : {
              "_tier_preference" : "data_cold,data_warm,data_hot" // 优先分配到冷层
            }
          }
        },
        "number_of_shards" : "1",
        "blocks" : {
          "write" : "true"
        },
        "provided_name" : "log-index-000001",
        "creation_date" : "1657374734018",
        "priority" : "0",
        "number_of_replicas" : "0",
        "uuid" : "kOXmUzVlRRmTZJfBxolpmg",
        "version" : {
          "created" : "8020399"
        }
      }
    }
  },
  "log-index-000002" : {
    "aliases" : {
      "log-index" : {
        "is_write_index" : true
      }
    },
    "mappings" : { },
    "settings" : {
      "index" : {
        "lifecycle" : {
          "name" : "log-ilm-policy",
          "rollover_alias" : "log-index"
        },
        "routing" : {
          "allocation" : {
            "include" : {
              "_tier_preference" : "data_content"
            }
          }
        },
        "number_of_shards" : "1",
        "provided_name" : "log-index-000002",
        "creation_date" : "1657374971168",
        "priority" : "100",
        "number_of_replicas" : "1",
        "uuid" : "tT1hbzQxQH2Ms5luQki6gw",
        "version" : {
          "created" : "8020399"
        }
      }
    }
  }
}

等待 180s,log-index-000001 索引被删除。至此完成了整个索引生命周期流程。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Se7en的架构笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
节点属性不满足索引Settings配置需求
通过执行 GET /_cluster/allocation/explain 查看当前索引分配详情
用户7442844
2023/07/14
4060
Elastic Searchable snapshot功能初探 二 (hot phase)
在上一篇文章中(Elastic Searchable snapshot功能初探),我们已经做了可搜索快照的简单演示。在总结中,我们提到:
点火三周
2021/03/02
6.3K0
6.索引数据的基本操作
每次查询、删除、更新等操作,都会与ES建立一次连接,这会导致大量的请求打在ES服务器上面,从而间接导致数据索引变慢,那么ES是不是可以搞一个批量请求提交,多个操作都在一个请求中完成?答案当然是可以的啦,那我们看下怎么操作
AI码师
2023/09/11
1490
6.索引数据的基本操作
Elasticsearch可搜索快照技术原理及最佳实践
Elasticsearch于7.10版本推出可搜索快照功能,但是7.10版本的可搜索快照技术还不够成熟,随着7.14版本的发布,可搜索快照技术才真正能够大规模用于生产实践中。本文将基于ES 7.14.2版本,继续从原理和实践两个角度向大家介绍可搜索快照技术的。
吴容
2021/11/27
2.1K3
Elasticsearch可搜索快照技术原理及最佳实践
Elasticsearch 可搜索快照技术原理及最佳实践
Elasticsearch于7.10版本推出可搜索快照功能,但是7.10版本的可搜索快照技术还不够成熟,随着7.14版本的发布,可搜索快照技术才真正能够大规模用于生产实践中。本文将基于ES 7.14.2版本,继续从原理和实践两个角度向大家介绍可搜索快照技术。
腾讯云大数据
2021/12/29
1.4K1
Elasticsearch 可搜索快照技术原理及最佳实践
Elasticsearch ILM 索引生命周期管理 - ES 必备技能
假设有三个索引,my-index-001, my-index-002, my-index-003, 全部绑定到别名 my-alias, 并且 my-index-003 设置了 "is_write_index": true。这意味着对 my-alias 查询可以查询到以上所有三个索引的数据,而对 my-alias 写入数据只会写入到 my-index-003。
sir5kong
2023/07/20
9790
Elasticsearch ILM实现索引全生命周期自动管理,解放双手
Elasticsearch Index Lifecycle Management(ILM)是Elasticsearch的一个功能,用于管理索引的生命周期,优化索引的性能和减少存储成本。ILM可以自动执行索引的各种操作,如创建、删除、滚动、缩小等,从而帮助用户轻松地管理索引的生命周期。ILM可以帮助用户减少手动干预的工作量,使其可以更好地专注于数据分析。
MCNU云原生
2023/03/17
1.1K0
Elasticsearch ILM实现索引全生命周期自动管理,解放双手
Elasticsearch 索引生命周期管理
在 Elasticsearch的日常管理中,有很多如系统日志,行为数据等方面的应用场景,这些场景的特点是数据量非常大,并且随着时间的增长索引的数量也会持续增长,然而这些场景基本上只有最近一段时间的数据有使用价值或者会被经常使用(热数据),而历史数据几乎没有作用或者很少会被使用(冷数据),这个时候就需要对索引进行一定策略的维护管理甚至是删除清理,否则随着数据量越来越多除了浪费磁盘与内存空间之外,还会严重影响 Elasticsearch 的性能。
Se7en258
2021/05/18
8020
Elasticsearch 索引生命周期管理
腾讯云Elasticsearch索引生命周期管理原理及实践
本文将从三个方面介绍Elasticsearch索引生命周期管理的特性,首先会介绍ES索引生命周期管理的基本原理,其次会通过一个常见的日志场景来一步步配置索引生命周期管理,最后向大家介绍在日常的ES运维工作中遇到的关于索引生命周期管理常见的问题及解决方法。
吴容
2021/12/04
4.3K0
腾讯云Elasticsearch索引生命周期管理原理及实践
干货 | Elasticsearch 索引生命周期管理 ILM 实战指南
关于人生,有人这么说:“人,生来一个人,死去一个人,所以,人生就是一个人生老病死的简称。”
铭毅天下
2021/06/25
7K1
干货 | Elasticsearch 索引生命周期管理 ILM 实战指南
ElasticSearch ILM实践
在ES没有提供ILM功能以前,我们的索引生命周期管理一般是自己写脚本或者curator工具来管理的。
保持热爱奔赴山海
2022/05/15
6180
ElasticSearch ILM实践
Elasticsearch ILM 索引生命周期管理常见坑及避坑指南
之前的博文和视频都讲过 ILM 索引生命周期管理。但从近期的反馈和我自己的实战经验看,依然会有很多坑。
铭毅天下
2022/02/09
2.3K0
Elasticsearch ILM 索引生命周期管理常见坑及避坑指南
Elasticsearch索引生命周期管理方案
在 Elasticsearch 的日常中,有很多如存储 「系统日志」、「行为数据」等方面的应用场景,这些场景的特点是数据量非常大,并且随着时间的增长 索引 的数量也会持续增长,然而这些场景基本上只有最近一段时间的数据有使用价值或者会被经常使用(热数据),而历史数据几乎没有作用或者很少会被使用(冷数据),这个时候就需要对 索引 进行一定策略的维护管理甚至是删除清理,否则随着数据量越来越多除了浪费磁盘与内存空间之外,还会严重影响 Elasticsearch 的性能;
陶陶技术笔记
2021/01/12
9560
Elasticsearch索引生命周期管理方案
Elastic ILM 索引生命周期管理最佳实践
引入索引生命周期管理的一个最重要的目的就是对大量时序数据在es读写操作的性能优化,对于日志或指标(metric)类时序性强的ES索引,因为数据量大,并且写入和查询大多都是近期时间内的数据。可以采用hot-warm-cold架构将索引数据切分成hot/warm/cold的索引。hot阶段索引负责最新数据的读写,可使用SSD存储;warm阶段索引负责较旧数据的读取,可使用高性能磁盘存储;cold阶段索引很少被读取,可使用大容量磁盘存储。delete阶段索引将被被删除。随着时间的推移,索引数据不断从hot阶段->warm阶段->cold阶段>delete阶段迁移。针对不同阶段的索引我们还可以调整索引的主分片数,副本数,单分片的segment数等等,更好的利用机器资源。
Kevin song
2021/08/23
5.3K0
Elastic  ILM  索引生命周期管理最佳实践
腾讯云Elasticsearch集群运维常用命令详解三(索引篇)
在前两篇文章里,我们分别从集群和节点层面向大家介绍了日常集群运维工作中常用到的一些命令。接下来我们继续从索引层面来介绍几个常用到的集群运维API。
吴容
2021/12/23
2.8K2
腾讯云Elasticsearch集群运维常用命令详解三(索引篇)
Elasticsearch 索引容量管理实践
作者:gavinyao,腾讯 PCG 后台开发工程师 Elasticsearch 是目前大数据领域最热门的技术栈之一,腾讯云 Elasticsearch Service(ES)是基于开源搜索引擎 Elasticsearch 打造的高可用、可伸缩的云端全托管 Elasticsearch 服务,完善的高可用解决方案,让业务可以放心的把重要数据存储到腾讯云 ES 中。 了解 ES 的索引管理方法有助于扬长避短,更好的利用 ES 的强大功能,特别是当遇到性能问题时,原因通常都可回溯至数据的索引方式以及集群中的
腾讯技术工程官方号
2020/07/06
1.2K0
一步一步理解ES中的索引管理逻辑,从手动_rollover到ILM
在早期的版本中,索引中的数据增长到一定量之后,如何实现无感切换,答案是通过定时任务和_rollover api,注意_rollover api只能应用于别名,并且应用切换条件。
周银辉
2024/07/19
3460
Elasticsearch 索引容量管理实践
Elasticsearch是目前大数据领域最热门的技术栈之一,腾讯云 Elasticsearch Service(ES)是基于开源搜索引擎 Elasticsearch 打造的高可用、可伸缩的云端全托管 Elasticsearch 服务,完善的高可用解决方案,让业务可以放心的把重要数据存储到腾讯云 ES 中。
腾讯云大数据
2021/01/07
9940
Elasticsearch 索引容量管理实践
这么简单的ES索引生命周期管理,不了解一下吗~
对于日志或指标(metric)类时序性强的ES索引,因为数据量大,并且写入和查询大多都是近期时间内的数据。我们可以采用hot-warm-cold架构将索引数据切分成hot/warm/cold的索引。hot索引负责最新数据的读写,可使用内存存储;warm索引负责较旧数据的读取,可使用内存或SSD存储;cold索引很少被读取,可使用大容量磁盘存储。随着时间的推移,数据不断从hot索引->warm索引->cold索引迁移。针对不同阶段的索引我们还可以调整索引的主分片数,副本数,单分片的segment数等等,更好的利用机器资源。
Jared.Tan
2020/06/17
2K0
这么简单的ES索引生命周期管理,不了解一下吗~
Elasticsearch 索引容量管理实践
Elasticsearch是目前大数据领域最热门的技术栈之一,腾讯云 Elasticsearch Service(ES)是基于开源搜索引擎 Elasticsearch 打造的高可用、可伸缩的云端全托管 Elasticsearch 服务,完善的高可用解决方案,让业务可以放心的把重要数据存储到腾讯云 ES 中。
姚俊刚
2020/06/18
3.3K0
Elasticsearch 索引容量管理实践
推荐阅读
相关推荐
节点属性不满足索引Settings配置需求
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文