目录

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平滑过渡数据相关推荐

  1. 【Android 逆向】修改运行中的 Android 进程的内存数据 ( 使用 IDA 分析要修改的内存特征 | 根据内存特征搜索修改点 | 修改进程内存 )

    文章目录 一.使用 IDA 分析要修改的内存特征 二.根据内存特征搜索修改点 三.修改进程内存 一.使用 IDA 分析要修改的内存特征 在前的博客 [Android 逆向]逆向修改游戏应用 ( 分析应 ...

  2. 【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 命令行中获取要调试的应用进程的 PID | 进程注入调试进程内存的 so 库 )

    文章目录 一.Android 命令行中获取要调试的应用进程的 PID 二.进程注入调试进程内存的 so 库 一.Android 命令行中获取要调试的应用进程的 PID 前置博客 [Android 逆向 ...

  3. 【Android 逆向】修改运行中的 Android 进程的内存数据 ( 运行环境搭建 Android 模拟器安装 | 拷贝 Android 平台可执行文件和动态库到 /data/system )

    文章目录 一.运行环境搭建 Android 模拟器安装 二.拷贝 Android 平台可执行文件和动态库到 /data/system 目录下 一.运行环境搭建 Android 模拟器安装 使用低版本的 ...

  4. 修改Android中strings.xml文件, 动态改变数据

    有些朋友可能会动态的修改Android中strings.xml文件中的值,在这里给大家推荐一种简单的方法. strings.xml中节点是支持占位符的,如下所示: <string name=&q ...

  5. Elasticsearch(009):es中index(索引)的新增、修改、删除、关闭等操作

    文章目录 索引(Index) 1. 添加索引 2. 获取索引 3. 修改索引 4. 删除索引 5. 打开/关闭索引 6. 获取所有索引列表 索引(Index) 本篇文章主要学习索引的相关操作. 1. ...

  6. pandas添加、修改dataframe中index的列名

    方法 只需要这样设置就可以: df.index.name = 'index的列名' 案例 import pandas as pddf = pd.DataFrame([[1, 2, 3],[2, 3, ...

  7. 【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 系统中调试器进程内存流程 | 编译内存调试动态库以及调试程序 )

    文章目录 一.Android 系统中调试器进程内存流程 二.编译内存调试动态库以及调试程序 三.博客资源 一.Android 系统中调试器进程内存流程 修改游戏运行中的内存 , 游戏运行之后 , 游戏 ...

  8. es中的dsl练习题-----简单的dsl语句

    slirp4netns >= 0.4 fuse-overlayfs >= 0.7 这是在本地安装elasticsearch数据然后通过kibana来操作数据的dsl来实现的 其中的查询ap ...

  9. win下配置的ES中的数据在哪里可以看到?三种方式你看那种更加高大上!!!(win_Elasticsearch)

    在上一篇博客<使用logstash将Mysql中的数据导入到ElasticSearch中(详细步骤,win_Elasticsearch)>中我们提到将数据插入到es中,那我怎么知道数据是否 ...

最新文章

  1. GitHub的十大JavaScript项目
  2. SSM框架的简单搭建
  3. 阻塞、非阻塞、超时(同步与异步)
  4. 哪吒之魔童降世 - 逆天改命,若命运不公,就和它斗到底!
  5. 3 - SQL Server 2008 之 使用SQL语句删除约束条件
  6. 数据结构和算法 —— 绪论
  7. Windows下用命令行查找文件for命令的运用
  8. 栈空间_Linux中的进程栈和线程栈
  9. php xampp bug,PHP网站访问慢的处理方法
  10. java继承调用先后_「继承顺序」JAVA继承顺序 - seo实验室
  11. java not a jpeg file_javax.imageio.IIOException: Not a JPEG file: starts with 0x47 0x49
  12. textarea的光标自动居左的问题
  13. 很经典的独白,搞网络的童鞋们,你们懂得
  14. c语言封闭曲线分割平面_餐饮空间设计之平面合理布局
  15. java的queue类,java集合类深入分析之Queue篇
  16. 让菜鸡讲一讲网络流(isap)
  17. 【码云周刊第 8 期】面试之前,或许该高效率地学点干货了!
  18. 想用数据库“读写分离”,请先明白“读写分离”解决什么问题
  19. VPX国产化千兆交换板
  20. API接口之webservice接口

热门文章

  1. 如何通过市场中性策略获利
  2. 知道创宇入选第九届CNCERT国家级网络安全应急服务支撑单位
  3. javascript之随机验证码
  4. 线性代数之——对称矩阵及正定性
  5. 【小程序】开发需要注意的地方(二)
  6. FontAwesome免费图标在winform中的使用
  7. 怎么获取计算机用户权限,W7电脑系统怎么获取administrator权限
  8. mantis 重启mysql_Mantis -- linux
  9. 【某网页在手机上可以打开,但用电脑上所有浏览器都打不开】的解决办法
  10. MAC 打开所有来源的程序