不停机重命名与修改ES索引mapping的实战指南
需积分: 10 129 浏览量
更新于2024-09-07
收藏 13KB TXT 举报
"这篇文档详细介绍了在Elasticsearch (ES) 中如何在不中断服务的情况下,对现有的mapping进行重命名和修改。主要涉及到的操作包括删除旧索引、获取当前mapping、创建新mapping以及数据迁移。"
在Elasticsearch中,mapping是定义索引中字段的数据类型和其他设置的重要组成部分。它类似于传统数据库中的数据表结构。在生产环境中,如果需要修改mapping,直接删除原有mapping会导致数据丢失,因此必须采用不停机的方式进行操作。
首先,文档中提到的`DELETE`命令用于删除旧的索引,例如`DELETE http://192.168.251.179:9200/filebeat-6.2.4-2019.07.10`,这个命令会删除名为`filebeat-6.2.4-2019.07.10`的索引。然而,在实际操作中,为了保持服务不间断,我们并不直接删除旧索引,而是创建新的索引并更新mapping。
接着,通过`GET`请求获取旧索引的mapping,如`GET http://192.168.251.179:9200/filebeat*/_mapping`,这一步是为了获取当前索引的所有字段和它们的数据类型,以便在新建的mapping中进行修改。
然后,使用`PUT`命令创建新的索引并指定mapping,如`PUT http://192.168.251.179:9200/filebeat-6.2.4-2019.07.10_new/{"mappings": ...}`,这里创建了一个名为`filebeat-6.2.4-2019.07.10_new`的新索引,并且提供了新mapping的定义。新mapping可能包含了对某些字段数据类型的修改,例如将所有字符串类型映射为`keyword`,或者针对特定字段如`docker.container.labels`和`strings_as_keyword`设置特殊的mapping规则。
在更新mapping的过程中,通常会关闭动态映射(`date_detection": false`),这样可以避免新数据自动创建新的字段映射。同时,可以看到对日期字段`@timestamp`进行了特别处理,将其类型设置为`date`,以正确解析时间戳。
在完成新索引和mapping的创建后,需要将旧索引的数据迁移到新索引。这可以通过复制或重新索引数据来实现,确保新索引包含所有旧索引的数据。迁移完成后,可以更改应用程序指向新的索引,从而实现不停机的mapping更新。
整个过程的关键在于,避免直接修改正在使用的索引,而是创建一个新索引,更新mapping后将数据迁移到新索引,保证了服务的连续性。对于大型系统,这种策略是至关重要的,因为它可以防止因索引重建导致的服务中断。
2017-06-29 上传
2022-01-25 上传
2020-07-29 上传
2024-05-07 上传
2022-07-13 上传
2024-10-12 上传
2024-09-26 上传
2010-10-21 上传
墨眉亦无锋
- 粉丝: 23
- 资源: 5
最新资源
- StarModAPI: StarMade 模组开发的Java API工具包
- PHP疫情上报管理系统开发与数据库实现详解
- 中秋节特献:明月祝福Flash动画素材
- Java GUI界面RPi-kee_Pilot:RPi-kee专用控制工具
- 电脑端APK信息提取工具APK Messenger功能介绍
- 探索矩阵连乘算法在C++中的应用
- Airflow教程:入门到工作流程创建
- MIP在Matlab中实现黑白图像处理的开源解决方案
- 图像切割感知分组框架:Matlab中的PG-framework实现
- 计算机科学中的经典算法与应用场景解析
- MiniZinc 编译器:高效解决离散优化问题
- MATLAB工具用于测量静态接触角的开源代码解析
- Python网络服务器项目合作指南
- 使用Matlab实现基础水族馆鱼类跟踪的代码解析
- vagga:基于Rust的用户空间容器化开发工具
- PPAP: 多语言支持的PHP邮政地址解析器项目