ELK生态系统——修改es中index的mapping平滑过渡数据
目录
1、需求场景:
2、实现思路:
3、实现步骤:
(1)创建索引:
(2)创建索引同义词(别名):
A、不需要过滤数据同义词(别名):
B、需要过滤数据同义词(别名):
(3)创建新索引:
(4)新旧索引数据迁移:
A、完整迁移数据:
B、字段重命名迁移数据:
C、字段值调换迁移数据:
(5)修改索引同义词(别名):
(6)删除旧索引:
1、需求场景:
Elasticsearch的mapping一旦创建,只能增加字段,而不能修改已经mapping的字段。但现实需求往往并非如此,有时需要修改已经定义好的字段名称、字段类型等。
2、实现思路:
这里有一个方法修改mapping,那就是重新建立一个index,然后创建一个新的mapping,再将旧的index中的数据迁移到新的index中去,最后将索引同义词指向新的index即可。你可能会问,这要是在生产环境,可行吗?答案是,如果你一开始就采取了合适的设计——索引同义词,利用索引同义词完全是可以做到不停服务实现修改mapping平滑过渡的。
3、实现步骤:
(1)创建索引:
此索引为旧索引,模拟修改mapping平滑过渡时才需要创建此索引。项目正常使用时,此索引就是项目正在使用并且需要修改mapping的索引。
(2)创建索引同义词(别名):
A、不需要过滤数据同义词(别名):
http://192.168.99.164:9200/_aliases POST{"actions": [{"add": {"index": "my_index","alias": "my_index_alias"}}]}
B、需要过滤数据同义词(别名):
对于同一个index,我们给不同人看到不同的数据,如my_index有个字段是team,team字段记录了该数据是那个team的,team之间的数据是不可见的。
http://192.168.99.164:9200/_aliases POST{"actions": [{"add": {"index": "my_index","alias": "my_index__teamA_alias","filter":{"term":{"team":"teamA"}}}},{"add": {"index": "my_index","alias": "my_index__teamB_alias","filter":{"term":{"team":"teamB"}}}},{"add": {"index": "my_index","alias": "my_index__team_alias"}}]}
GET /my_index__teamA_alias/_search 只能看到teamA的数据
GET /my_index__teamB_alias/_search 只能看到teamB的数据
GET /my_index__team_alias/_search 既能看到teamA的,也能看到teamB的数据
(3)创建新索引:
获取旧索引的mapping,根据需求对旧mapping进行手动修改得到新mapping,然后通过命令执行新mapping创建新索引。
(4)新旧索引数据迁移:
A、完整迁移数据:
直接将全部数据完整迁移过去。
http://192.168.99.164:9200/_reindex POST{"source": {"index": "twitter"},"dest": {"index": "new_twitter"}}
B、字段重命名迁移数据:
把flag重命名为tag,迁移全部数据。
http://192.168.99.164:9200/_reindex POST{"source": {"index": "test"},"dest": {"index": "test2"},"script": {"inline": "ctx._source.tag = ctx._source.remove(\"flag\")"}}
C、字段值调换迁移数据:
在数据录入时,字段yxdm和字段jwzydm数据位置错位了,现在需要将数据调换回来,迁移全部数据。
注意需要使用yxdm1作为中间变量存储交换的字段
http://192.168.99.164:9200/_reindex POST{"source": {"index": "sugon_course_students_onduty_bak2017_05"},"dest": {"index": "sugon_course_students_onduty_2017_05"},"script": {"inline": "ctx._source.yxdm1 = ctx._source.remove(\"jwzydm\");ctx._source.jwzydm = ctx._source.remove(\"yxdm\");ctx._source.yxdm = ctx._source.remove(\"yxdm1\")"}}
(5)修改索引同义词(别名):
修改索引同义词(别名),就是先删除该索引同义词,然后创建新的索引同义词,两个步骤在一个命令中执行。这样就可以实现平滑过渡。
http://192.168.99.164:9200/_aliases POST{ "actions": [ { "remove": { "alias": "my_index", "index": "my_index_v1" }}, { "add": { "alias": "my_index", "index": "my_index_v2" }} ] }
(6)删除旧索引:
修改好索引同义词后,程序访问的便是新索引中的数据了,如果程序访问新索引正常,就可以将旧索引删除了,如果为了安全起见,也可以将旧索引备份一下再删除旧索引。
ELK生态系统——修改es中index的mapping平滑过渡数据相关推荐
- 【Android 逆向】修改运行中的 Android 进程的内存数据 ( 使用 IDA 分析要修改的内存特征 | 根据内存特征搜索修改点 | 修改进程内存 )
文章目录 一.使用 IDA 分析要修改的内存特征 二.根据内存特征搜索修改点 三.修改进程内存 一.使用 IDA 分析要修改的内存特征 在前的博客 [Android 逆向]逆向修改游戏应用 ( 分析应 ...
- 【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 命令行中获取要调试的应用进程的 PID | 进程注入调试进程内存的 so 库 )
文章目录 一.Android 命令行中获取要调试的应用进程的 PID 二.进程注入调试进程内存的 so 库 一.Android 命令行中获取要调试的应用进程的 PID 前置博客 [Android 逆向 ...
- 【Android 逆向】修改运行中的 Android 进程的内存数据 ( 运行环境搭建 Android 模拟器安装 | 拷贝 Android 平台可执行文件和动态库到 /data/system )
文章目录 一.运行环境搭建 Android 模拟器安装 二.拷贝 Android 平台可执行文件和动态库到 /data/system 目录下 一.运行环境搭建 Android 模拟器安装 使用低版本的 ...
- 修改Android中strings.xml文件, 动态改变数据
有些朋友可能会动态的修改Android中strings.xml文件中的值,在这里给大家推荐一种简单的方法. strings.xml中节点是支持占位符的,如下所示: <string name=&q ...
- Elasticsearch(009):es中index(索引)的新增、修改、删除、关闭等操作
文章目录 索引(Index) 1. 添加索引 2. 获取索引 3. 修改索引 4. 删除索引 5. 打开/关闭索引 6. 获取所有索引列表 索引(Index) 本篇文章主要学习索引的相关操作. 1. ...
- pandas添加、修改dataframe中index的列名
方法 只需要这样设置就可以: df.index.name = 'index的列名' 案例 import pandas as pddf = pd.DataFrame([[1, 2, 3],[2, 3, ...
- 【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 系统中调试器进程内存流程 | 编译内存调试动态库以及调试程序 )
文章目录 一.Android 系统中调试器进程内存流程 二.编译内存调试动态库以及调试程序 三.博客资源 一.Android 系统中调试器进程内存流程 修改游戏运行中的内存 , 游戏运行之后 , 游戏 ...
- es中的dsl练习题-----简单的dsl语句
slirp4netns >= 0.4 fuse-overlayfs >= 0.7 这是在本地安装elasticsearch数据然后通过kibana来操作数据的dsl来实现的 其中的查询ap ...
- win下配置的ES中的数据在哪里可以看到?三种方式你看那种更加高大上!!!(win_Elasticsearch)
在上一篇博客<使用logstash将Mysql中的数据导入到ElasticSearch中(详细步骤,win_Elasticsearch)>中我们提到将数据插入到es中,那我怎么知道数据是否 ...
最新文章
- GitHub的十大JavaScript项目
- SSM框架的简单搭建
- 阻塞、非阻塞、超时(同步与异步)
- 哪吒之魔童降世 - 逆天改命,若命运不公,就和它斗到底!
- 3 - SQL Server 2008 之 使用SQL语句删除约束条件
- 数据结构和算法 —— 绪论
- Windows下用命令行查找文件for命令的运用
- 栈空间_Linux中的进程栈和线程栈
- php xampp bug,PHP网站访问慢的处理方法
- java继承调用先后_「继承顺序」JAVA继承顺序 - seo实验室
- java not a jpeg file_javax.imageio.IIOException: Not a JPEG file: starts with 0x47 0x49
- textarea的光标自动居左的问题
- 很经典的独白,搞网络的童鞋们,你们懂得
- c语言封闭曲线分割平面_餐饮空间设计之平面合理布局
- java的queue类,java集合类深入分析之Queue篇
- 让菜鸡讲一讲网络流(isap)
- 【码云周刊第 8 期】面试之前,或许该高效率地学点干货了!
- 想用数据库“读写分离”,请先明白“读写分离”解决什么问题
- VPX国产化千兆交换板
- API接口之webservice接口