当前位置: 首页 > news >正文

深入解析:【Elasticsearch】索引别名 aliases

索引别名

  • 1.错误演示
    • 1.1 当前状态:
    • 1.2 执行以下命令会报错
  • ✅ 2.解决方案
    • 2.1 方案 1:先移除旧索引的写入权限,再设置新索引
    • 2.2 方案 2:使用原子操作一次性切换
    • 2.3 方案 3:创建时不设置写入索引,后续再切换
  • 3.验证当前状态
    • 3.1 查看别名指向的所有索引
    • 3.2 查看哪个索引是当前写入索引
    • 3.3 查看所有包含写入索引的别名
  • 4.实际应用场景
    • 4.1 场景:基于时间的索引滚动
    • 4.2 场景:索引重建
  • 5.总结

在博文《【Elasticsearch】动手创建一个索引》中,我们创建了一个名为 test-index 的索引,并且指定索引别名为 log-index,同时设置其为写入索引。

如果此时我再次建立一个索引,名称为 test-index-01,别名为 log-index,也指定为写入索引,会发生什么呢?

您说得完全正确!这会报错,因为一个别名在同一时间只能指向一个作为写入索引的索引。

1.错误演示

1.1 当前状态:

1.2 执行以下命令会报错

PUT /test-index-01
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1,
"refresh_interval": "15s"
},
"aliases": {
"log-index": {
"is_write_index": true  // ← 冲突!
}
},
"mappings": {
"properties": {
// ... 字段定义
}
}
}

错误信息类似:
在这里插入图片描述

✅ 2.解决方案

如果想要切换写入索引,有以下几种正确的做法。

2.1 方案 1:先移除旧索引的写入权限,再设置新索引

// 步骤1:移除旧索引的写入权限
POST /_aliases
{
"actions": [
{
"add": {
"index": "test-index",
"alias": "log-index",
"is_write_index": false
}
}
]
}
// 步骤2:创建新索引并设置为写入索引
PUT /test-index-01
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1,
"refresh_interval": "15s"
},
"aliases": {
"log-index": {
"is_write_index": true
}
},
"mappings": {
"properties": {
"timestamp": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||epoch_millis"
},
"message": {
"type": "text",
"analyzer": "ik_max_word"
}
// ... 其他字段
}
}
}

2.2 方案 2:使用原子操作一次性切换

POST /_aliases
{
"actions": [
{
"add": {
"index": "test-index-01",
"alias": "log-index",
"is_write_index": true
}
},
{
"add": {
"index": "test-index",
"alias": "log-index",
"is_write_index": false
}
}
]
}

2.3 方案 3:创建时不设置写入索引,后续再切换

// 步骤1:创建新索引(不设置写入索引)
PUT /test-index-01
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1,
"refresh_interval": "15s"
},
"aliases": {
"log-index": {}  // ← 只添加别名,不设置写入索引
},
"mappings": {
// ... 字段定义
}
}
// 步骤2:原子切换写入索引
POST /_aliases
{
"actions": [
{
"add": {
"index": "test-index-01",
"alias": "log-index",
"is_write_index": true
}
},
{
"add": {
"index": "test-index",
"alias": "log-index",
"is_write_index": false
}
}
]
}

3.验证当前状态

在执行任何操作前,您可以先检查当前别名状态:

3.1 查看别名指向的所有索引

GET /_alias/log-index

在这里插入图片描述

3.2 查看哪个索引是当前写入索引

GET /_cat/aliases/log-index?v

在这里插入图片描述

3.3 查看所有包含写入索引的别名

GET /_cat/aliases?v&filter_path=is_write_index:true

在这里插入图片描述

4.实际应用场景

这种设计在以下场景中很有用:

4.1 场景:基于时间的索引滚动

# 第1个月:logs-2024-01 是写入索引
# 第2个月:切换到 logs-2024-02 为写入索引
# 第3个月:切换到 logs-2024-03 为写入索引
# 但应用程序始终使用别名 "logs" 写入
  • 1️⃣ 设置 logs-2024-01 为写入索引。

在这里插入图片描述

  • 2️⃣ 通过别名往索引中写入数据。

在这里插入图片描述

  • 3️⃣ 可以看到此时数据写入了 logs-2024-01

在这里插入图片描述

  • 4️⃣ 切换写入索引为 logs-2024-02

在这里插入图片描述

  • 5️⃣ 可以看到 logs-2024-02 此时已成为别名 logs 的写入索引了。

在这里插入图片描述

  • 6️⃣ 再次通过索引别名往索引中写入数据。

在这里插入图片描述

  • 7️⃣ 可以观察到,此时写入的数据已经存储到了 logs-2024-02 中。

在这里插入图片描述

4.2 场景:索引重建

# 阶段1:products-v1 是写入索引
# 阶段2:创建 products-v2,数据迁移
# 阶段3:切换写入索引到 products-v2
# 阶段4:下线 products-v1

5.总结

  • 一个别名可以指向多个索引
  • 但只能有一个索引设置为 is_write_index: true
  • 切换写入索引需要使用原子操作
  • 应用程序可以始终使用别名,无需关心底层索引变化

这种机制正是 Elasticsearch 实现索引滚动、零停机重建等高级功能的基础。

http://www.zskr.cn/news/159178.html

相关文章:

  • 告别无效调用:高效实现 AI Agent 的 Function 交互设计
  • Spring Boot+MyBatis:用 PageHelper 实现 Oracle 12c 的 OFFSET 分页
  • LSTM量化交易策略的环境适应性与入参稳定性评估
  • 2025年兰州口碑好的水性艺术涂料实力厂家选哪家,微晶石艺术漆/艺术漆/艺术肌理漆/环保艺术涂料,水性艺术涂料产品哪家好 - 品牌推荐师
  • 【优化协调】基于小生境粒子群算法含光伏电站配电网有功无功协调优化附Matlab代码
  • 强化学习结合LSTM的量化交易策略奖励函数与入参关联
  • 传感器|基于改进贪心算法的最佳传感器位置选择(Matlab代码实现)
  • Claude Skills动态工具过滤深度解析:智能代理开发的革命性突破,收藏必备!
  • CSV大文件处理全流程:数据清洗、去重与格式标准化深度实践
  • 2026企业微信SCRM新趋势:AI如何助力客户转化率提升300%
  • 【车辆控制】基于模型预测控制MPC的摩托车主动悬挂控制附Matlab代码
  • 云舟观测报表管理功能:从业务到智能运维
  • 学长亲荐8个AI论文工具,自考毕业论文格式规范必备!
  • NC verilog :force命令
  • 2025年济南做得好的翅片管公司有哪些,乏风取热箱/表冷器/翅片管/新风机组/干冷器/空调机组/空气幕/冷却器/散热器翅片管企业哪家好 - 品牌推荐师
  • 课后作业2
  • Type Hints:花1小時寫,省18小時除錯的投資回報率分析
  • 学长亲荐9个AI论文工具,研究生高效写作必备!
  • Qt 中将 QWidget 改为模态的方法
  • 2025年6款AI论文工具实测:10分钟生成万字问卷类论文+真实参考文献,高效搞定学术写作!
  • 2025年12月江苏徐州别墅庭院设计、屋顶花园设计、公园绿地设计、市政广场设计、生态园区设计服务商权威测评与综合推荐 - 2025年品牌推荐榜
  • 【路径规划】基于RRT快速探索随机树算法在三维环境中寻找从起点到目标点的路径,并对路径进行平滑处理附Matlab代码
  • AgentRun:如何利用 AI Agent 构建现代化的舆情分析解决方案?
  • 【论道】组件封装原则
  • 【商业摄影必读】告别“灰墙战神”!PS 2025 AI 重新定义人像环境合成(附光影融合秘籍)
  • 郑州家装公司五大推荐:优质装修/别墅装修/老房翻新精选,华埔装饰砸无赦承诺引领行业新风尚 - 深度智识库
  • 高精度光学动作捕捉如何为无人机提供飞行姿态与轨迹真值?——以IROS 2025多篇无人机学习与控制研究为例
  • 让回忆“动”起来:手把手教你制作老照片动态视频
  • 基于Spring Boot和Vue.js的房屋出租管理系统设计与实现
  • 基于结构特征与神经网络特征融合的手写汉字评价模型研究