回顾上一篇文章index lifecycle management(ILM)
示例中Hot设置有rollover配置(主分配超过10G 或者 创建索引超过1天)会轮转index。
情景1:日志一天超过10G的数据量的话,那会产生多个index。现需求统计某一个关键字在今天出现多少次?当天生成的index都过滤一遍即可得出答案。
❝上述的方法略显繁琐,elasticsearch推出index alias配置可以简化这个问题。
情景2:配置rollover后会新建索引,创建索引会有相关参数。例如share数,副本数,别名等参数
❝每次创建索引都设置相同参数也繁琐。elasticsearch推出index template配置可以简化这个问题。

索引别名(index alias)
alias概述
在elasticsearch的索引别名(index aliases)就像一个快捷方法或软连接,可以指向一个或多个索引。别名带给我们极大的灵活性,我们可以使用索引别名实现以下功能:
在运行的集群中可以无缝的从一个索引切换到另一个索引(无需停机)。 分组多个索引。比如按天创建的索引,我们可以通过别名构造出一个最近几天的索引。 给索引的一个子集创建视图,没错我们可以简单将es中的索引理解为关系型数据库中的视图。 可以与路由搭配使用。
❝注意:
elasticsearch ILM
基本都是搭配aliases使用
alias相关操作
创建别名
# 创建好索引,再创建别名
PUT test0001
PUT test0002
PUT test0003
POST _aliases
{
"actions": [
{
"add": {
"index": "test000*",
"alias": "test"
}
}
]
}
# 创建索引并设置别名(常用)
PUT test1001
{
"aliases": {
"test": {}
}
}
查看别名
GET test/_alias
重命名别名
POST _aliases
{
"actions": [
{"remove": {"index": "test000*", "alias": "test"}},
{"remove": {"index": "test100*", "alias": "test"}},
{"add": {"index": "test000*", "alias": "test01"}},
{"add": {"index": "test100*", "alias": "test01"}}
]
}
删除别名
POST _aliases
{
"actions": [
{
"remove": {
"alias": "test01",
"index": "test*"
}
}
]
}
索引模板(index template)
index template概述
索引模板允许我们定义在创建新索引时自动应用的模板。
比如某公司对于日志处理策略是以日期为名创建每天的日志索引。并且每天的索引映射类型和配置信息都是一样的,只是索引名称改变了。如果手动的创建每天的索引,将会是一件很麻烦的事情。为了解决类似问题,elasticsearch提供了预先定义的模板进行索引创建,这个模板称作为Index Templates。通过索引模板可以让类似的索引重用同一个模板。
❝模板只在创建索引时应用。更改模板不会对现有索引产生影响。
index template相关操作
创建
PUT _index_template/k8s-logs
{
"index_patterns": ["k8s-logs*"],
"template": {
"settings": {
"index.number_of_shards": 3,
"index.number_of_replicas": 1,
"index.lifecycle.name": "jiaxzeng",
"index.lifecycle.rollover_alias": "k8s-logs"
}
}
}
查看
GET _index_template/k8s-logs
修改
和创建是一样的,注意需要使用全量的参数。这里不做演示
删除
DELETE _index_template/k8s-logs
结语
通过索引别名和模板这对黄金组合,我们不仅解决了索引版本切换的硬着陆问题,更实现了数据层与业务层的优雅解耦。当滚动更新(Rollover)策略遇上智能模板,当零停机迁移拥抱别名路由,Elasticsearch 的索引管理终于从刀耕火种迈入了自动化时代。
别忘了,关注我们的公众号,获取更多关于容器技术和云原生领域的深度洞察和技术实战,让我们携手在技术的海洋中乘风破浪!
声明:以上图片来源于网络,侵删!
【推荐阅读】点击下方蓝色标题跳转至详细内容!




