Elasticsearch重建索引-修改索引字段类型

如果不允许修改索引字段类型,只能重建索引

步骤

  1. 新建一个索引
  2. 数据迁移
  3. 删除旧索引
  4. 别名引用

目录

    • 1、准备工作
      • 1.1、查看版本号
      • 1.2、创建旧索引
      • 1.3、添加两条数据
      • 1.4、查看数据
    • 2、新建一个索引
      • 2.1、查看旧索引的mapping
      • 2.2、新建索引
    • 3、数据迁移
      • 3.1、使用异步任务迁移数据
      • 3.2、查看任务状态
    • 4、删除旧索引
      • 4.1、确认索引数据
      • 4.2、删除旧索引
    • 5、别名引用
      • 5.1、创建别名
      • 5.2、查看别名
      • 5.3、使用别名
    • 参考文章

1、准备工作

1.1、查看版本号

GET /

响应

{"name": "jxZZibZ","cluster_name": "elasticsearch","cluster_uuid": "23IcxgHqTniM4wOGyl03Pw","version": {"number": "5.6.16","build_hash": "3a740d1","build_date": "2019-03-13T15:33:36.565Z","build_snapshot": false,"lucene_version": "6.6.1"},"tagline": "You Know, for Search"
}

可以看到,我所使用的ES 版本号为:5.6.16

1.2、创建旧索引

旧索引名为old-index,包含2个字段:idusername

PUT /old-index
{"mappings": {"doc": {"properties": {"id": {"type": "integer"},"username": {"type": "text"}}}}
}

响应

{"acknowledged": true,"shards_acknowledged": true,"index": "old-index"
}

1.3、添加两条数据

POST /old-index/doc
{"id": 1000,"username": "root"
}POST /old-index/doc
{"id": 1001,"username": "other"
}

1.4、查看数据

GET /old-index/_search

响应

{"took": 0,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 2,"max_score": 1,"hits": [{"_index": "old-index","_type": "doc","_id": "AY1pDh-BNp3AgKn6mtEj","_score": 1,"_source": {"id": 1000,"username": "root"}},{"_index": "old-index","_type": "doc","_id": "AY1pDikjNp3AgKn6mtEk","_score": 1,"_source": {"id": 1001,"username": "other"}}]}
}

2、新建一个索引

2.1、查看旧索引的mapping

GET /old-index/_mapping

响应

{"old-index": {"mappings": {"doc": {"properties": {"id": {"type": "integer"},"username": {"type": "text"}}}}}
}

2.2、新建索引

新的索引名为new-reindex,将id 字段的类型从integer 改为keyword

PUT /new-reindex
{"mappings": {"doc": {"properties": {"id": {"type": "keyword"},"username": {"type": "text"}}}}
}

3、数据迁移

3.1、使用异步任务迁移数据

POST /_reindex?wait_for_completion=false
{"source": {"index": "old-index","size": 10000},"dest": {"index": "new-index"}
}

响应

{"task": "jxZZibZPQ_mViMJHQyFz5w:7335"
}

如果数据量较大,容易出现 Gateway Time-out ,所以我添加了参数wait_for_completion=false,让其后台执行

{"statusCode": 504,"error": "Gateway Time-out","message": "Client request timeout"
}

3.2、查看任务状态

GET /_tasks/jxZZibZPQ_mViMJHQyFz5w:7335
{"completed": true,"task": {"node": "jxZZibZPQ_mViMJHQyFz5w","id": 7335,"type": "transport","action": "indices:data/write/reindex","status": {"total": 2,"updated": 0,"created": 2,"deleted": 0,"batches": 1,"version_conflicts": 0,"noops": 0,"retries": {"bulk": 0,"search": 0},"throttled_millis": 0,"requests_per_second": -1,"throttled_until_millis": 0},"description": "reindex from [old-index] to [new-index]","start_time_in_millis": 1706864890889,"running_time_in_nanos": 105811530,"cancellable": true},"response": {"took": 105,"timed_out": false,"total": 2,"updated": 0,"created": 2,"deleted": 0,"batches": 1,"version_conflicts": 0,"noops": 0,"retries": {"bulk": 0,"search": 0},"throttled_millis": 0,"requests_per_second": -1,"throttled_until_millis": 0,"failures": []}
}

4、删除旧索引

4.1、确认索引数据

查看新旧索引中的数据总量是否相等

GET /old-index/_countGET /new-index/_count

响应

{"count": 2,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0}
}

4.2、删除旧索引

确认数据已迁移完成,可以删除旧的索引了

DELETE /old-index

响应

{"acknowledged": true
}

5、别名引用

5.1、创建别名

PUT /new-index/_alias/old-index

响应

{"acknowledged": true
}

5.2、查看别名

GET _cat/aliases
old-index    new-index     - - -

5.3、使用别名

新旧索引都可以使用了


GET /old-index/_searchGET /new-index/_search

参考文章

  • 如何在Elasticsearch中改变字段类型?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/665662.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言应用实例——贪吃蛇

(图片由AI生成) 0.贪吃蛇游戏背景 贪吃蛇游戏,最早可以追溯到1976年的“Blockade”游戏,是电子游戏历史上的一个经典。在这款游戏中,玩家操作一个不断增长的蛇,目标是吃掉出现在屏幕上的食物&#xff0c…

探究 MySQL 中使用 where 1=1 是否存在性能影响

文章目录 前言聊聊 mybatis 中多条件拼接的两种常规写法where 11使用 <where> 标签 性能影响where 11<where> 标签 总结个人简介 前言 最近在项目中使用 mybatis 写 SQL 使用了 where 11 来简化多条件拼接的写法&#xff0c;案例如下&#xff0c;借此聊聊多条件拼…

CTF(5)

一、[SWPUCTF 2021 新生赛]ez_caesar 1、题目 import base64 def caesar(plaintext):str_list list(plaintext)i 0while i < len(plaintext):if not str_list[i].isalpha():str_list[i] str_list[i]else:a "A" if str_list[i].isupper() else "a"…

C++学习Day01之初识C++ Helloworld

目录 一、程序二、输出三、分析与总结 一、程序 #include <iostream> //标准输入输出流 i - input 输入 o - output 输出 stream 流 相当于 stdio.h using namespace std; //使用 标准 命名空间 //程序入口函数 int main() {// cout 标准输出流对象// <&l…

Java学习-案例-ATM系统

案例ATM系统 大致思路&#xff1a; 实现功能&#xff1a; 案例代码&#xff1a; Account类&#xff1a; packageatmDemo; publicclassAccount{ privateStringcardId; privateStringuserName; privatecharsex; privateStringpassWord; privatedoublemoney; privatedoublelimit; …

ICLR 2024 | MolGen: 化学反馈引导的预训练分子生成

MolGen: 化学反馈引导的预训练分子生成 英文题目&#xff1a;Domain-Agnostic Molecular Generation with Chemical Feedback 发表会议&#xff1a;ICLR 2024 论文链接&#xff1a;https://arxiv.org/abs/2301.11259 代码链接&#xff1a;https://github.com/zjunlp/MolGen 目录…

可解释性AI(XAI):构建透明和值得信赖的决策过程

可解释性AI&#xff08;XAI&#xff09;旨在提高人工智能系统的透明度和可理解性&#xff0c;使人们更好地理解AI的决策过程和原理。随着AI技术的广泛应用&#xff0c;XAI成为了一个备受关注的重要领域。它不仅有助于建立人们对AI的信任&#xff0c;还可以帮助解决AI伦理和偏见…

Python flask 表单详解

文章目录 1 概述1.1 request 对象 2 示例2.1 目录结构2.2 student.html2.3 result.html2.4 app.py 1 概述 1.1 request 对象 作用&#xff1a;来自客户端网页的数据作为全局请求对象发送到服务器request 对象的重要属性如下&#xff1a; 属性解释form字典对象&#xff0c;包…

Android状态栏/通知栏图标白底问题

问题及现象 从android L版本开始&#xff0c;为了统一图标样式&#xff0c;会将通知栏、状态栏等显示图标处统一为白底或黑底&#xff0c;以促使开发人员规范图标设计。 从现象看&#xff0c;状态栏会显示一个白底的方框&#xff1b;下拉通知栏展开时的图标为白底方框加圆框…

HCIP-Datacom(H12-821)91-100题解析

有需要完整题库的同学可以私信博主&#xff0c;博主看到会回复将文件发给你&#xff01;&#xff08;麻烦各位同学给博主推文点赞关注和收藏哦&#xff09; 91、下面关于AS PATH的描述&#xff0c;错误的 A.当路由器中存在两条或者两条以上的到同一目的地的路由时&#xff0c;…

IEC104 S帧超时判定客户与服务端不匹配造成的异常链接问题分析

2、通过ss命令发现确有链接端口变化&#xff0c;与设备约一天一次的重连&#xff0c;通过抓包&#xff08;tcpdump -vvv -nn port 1001 -w 0926.cap&#xff09;分析得以下现象 2.1、异常情况时未对设备的I帧均匀的回S帧进行确认&#xff0c;正常情况时均匀的回S帧进行确认 2.…

优化 React:理解 DOM Diffing 算法及关键的 key 属性

优化 React&#xff1a;理解 DOM Diffing 算法及关键的 key 属性 DOM 的 Diffing 算法和 Key 的作用 在 React 中&#xff0c;DOM 的 Diffing&#xff08;差异比较&#xff09;算法是一种优化手段&#xff0c;用于确定虚拟 DOM 树与实际 DOM 树之间的差异&#xff0c;并仅更新…

酷开科技依托酷开系统新剧热播,引领潮流风向

随着科技的不断发展&#xff0c;智能电视已经成为了家庭娱乐的主流&#xff0c;是消费者居家休闲放松的好帮手。其中&#xff0c;作为国内智能电视操作系统领军者的酷开系统&#xff0c;一直致力于为消费者提供丰富的内容和贴心的体验。近日&#xff0c;酷开系统新剧热播&#…

仰暮计划|“每次他们吃饭,出来散步,都是背着枪,枪都是装满子弹上好膛,时刻准备着作战和反击”

20世纪70年代中叶&#xff0c;越南结束抗美战争、实现国家统一后&#xff0c;把中国视为“头号敌人”&#xff0c;中越关系急剧恶化&#xff0c;中国边疆的和平、安定和人民的生命财产受到严重威胁。在此情况下&#xff0c;1979年2月17日&#xff0c;遵照中央军委命令&#xff…

车载测试Vector工具CANoe——常见问题汇总(中)

车载测试Vector工具CANoe——常见问题汇总(中) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一…

【兼容认证】白鲸开源与银河麒麟高级服务器操作系统成功通过测试

2024年1月2日&#xff0c;北京白鲸开源科技有限公司&#xff08;以下简称"白鲸开源"&#xff09;荣幸宣布&#xff0c;白鲸开源旗下产品 WhaleStudio V2.4 已成功通过与麒麟软件有限公司旗下的银河麒麟高级服务器操作系统产品的兼容性测试。 麒麟软件有限公司的银河麒…

分布式(一)Redis的数据结构

五种数据结构 String 结构 字符串常用操作 SET key value //存入字符串键值对 MSET key value [key value ...] //批量存储字符串键值对 SETNX key value //存入一个不存在的字符串键值对 GET key //获取一个字符串键值 MGET key [key ...] //批量获取字…

计算已知经纬度的两点距离(两种方法GeoTools和Haversine公式)

计算已知经纬度的两点距离&#xff08;两种方法&#xff09; 法一&#xff1a;GeoTools 要使用GeoTools&#xff0c;你需要在Maven项目中添加以下依赖坐标&#xff1a; <dependency><groupId>org.geotools</groupId><artifactId>gt-main</artifa…

elk之简介

写在前面 本文看下es的简介。 1&#xff1a;简介 背后公司&#xff0c;elastic&#xff0c;08年纽交所上市&#xff0c;与腾讯&#xff0c;阿里等云厂商有合作&#xff0c;推出云产品&#xff0c;类似功能的产品由solr&#xff0c;splunk&#xff0c;但使用量es当前遥遥领先…

【初中生讲机器学习】4. 支持向量机算法怎么用?一个实例带你看懂!

创建时间&#xff1a;2024-02-02 最后编辑时间&#xff1a;2024-02-03 作者&#xff1a;Geeker_LStar 你好呀~这里是 Geeker_LStar 的人工智能学习专栏&#xff0c;很高兴遇见你~ 我是 Geeker_LStar&#xff0c;一名初三学生&#xff0c;热爱计算机和数学&#xff0c;我们一起加…