elasticsearch如何使用reindex迁移索引,完成分片的拆分

1、删除我的测试索引:old_index

curl -X DELETE "http://`hostname -i`:9200/old_index"
curl -X DELETE "http://`hostname -i`:9200/new_index"

2、检查集群索引情况

$ curl -X GET "http://`hostname -i`:9200/_cat/indices?v"
health status index            uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .geoip_databases ib6tlhzjTf-MQBu-XGIVWg   1   0         33            0     31.1mb         31.1mb

3、新建测试索引:old_index

# 注释
# 1、我只有一个节点,为了测试方便,副本 number_of_replicas 设置为0
# 2、假设我的源索引分片为1,number_of_shards设置为1,用于后续对比验证
curl -X PUT "http://`hostname -i`:9200/old_index" -H 'Content-Type: application/json' -d'
{"mappings": {"properties": {"name": { "type": "text" },"description": { "type": "text" },"publish_date": { "type": "date" }}},"settings": {"number_of_shards": 1,"number_of_replicas": 0}
}'
# 返回结果,代表索引创建成功
{"acknowledged":true,"shards_acknowledged":true,"index":"old_index"}

4、在old_index索引中插入几条测试数据

curl -X POST "http://`hostname -i`:9200/old_index/_bulk" -H 'Content-Type: application/x-ndjson' --data-binary '
{ "index": { "_index": "old_index", "_id": "1" } }
{ "name": "可乐", "description": "大数据SRE工程师", "publish_date": "1991-05-20" }
{ "index": { "_index": "old_index", "_id": "2" } }
{ "name": "炎长", "description": "DBA工程师", "publish_date": "1992-11-23" }
'# 返回结果
{"took": 6,"errors": false,"items": [{"index": {"_index": "old_index","_type": "_doc","_id": "1","_version": 1,"result": "created","_shards": {"total": 1,"successful": 1,"failed": 0},"_seq_no": 0,"_primary_term": 1,"status": 201}}, {"index": {"_index": "old_index","_type": "_doc","_id": "2","_version": 1,"result": "created","_shards": {"total": 1,"successful": 1,"failed": 0},"_seq_no": 1,"_primary_term": 1,"status": 201}}]
}

5、查询old_index索引中的数据

curl -X GET "http://`hostname -i`:9200/old_index/_search"# 查询结果
{"took": 7,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 2,"relation": "eq"},"max_score": 1.0,"hits": [{"_index": "old_index","_type": "_doc","_id": "1","_score": 1.0,"_source": {"name": "可乐","description": "大数据SRE工程师","publish_date": "1991-05-20"}}, {"_index": "old_index","_type": "_doc","_id": "2","_score": 1.0,"_source": {"name": "炎长","description": "DBA工程师","publish_date": "1992-11-23"}}]}
}

6、新建目标索引:new_index

# 注释
# 1、本次将分片设置为2,是为了模拟reindex拆封分片的功能
# 2、建议将目标索引副本设置为0,没有副本,目标索引写入速度会变快,reindex任务执行相应比有部分的写入速度快。reindex结束后,可以根据需要,重新设置副本。curl -X PUT "http://`hostname -i`:9200/new_index" -H 'Content-Type: application/json' -d'
{"mappings": {"properties": {"name": { "type": "text" },"description": { "type": "text" },"publish_date": { "type": "date" }}},"settings": {"number_of_shards": 2,"number_of_replicas": 0}
}'# 返回结果
{"acknowledged":true,"shards_acknowledged":true,"index":"new_index"}

7、检查两个索引的数据情况

curl -X GET "http://`hostname -i`:9200/_cat/indices?v"
health status index            uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .geoip_databases ib6tlhzjTf-MQBu-XGIVWg   1   0         33            0     31.1mb         31.1mb
green  open   new_index        GrJiGswYRqCibszGIVjZhg   2   0          0            0       454b           454b
green  open   old_index        8k4beb7ETpu6Ki-LpOu_EQ   1   0          2            0        4kb            4kb

8、测试reindex将源索引:old_index中的数据迁移到目标索引:new_index

curl -X POST "http://`hostname -i`:9200/_reindex" -H 'Content-Type: application/json' -d'
{"source": {"index": "old_index"},"dest": {"index": "new_index"}
}
'# 返回结果,创建成功
{"took":8,"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.0,"throttled_until_millis":0,"failures":[]}

9、检查索引的迁移进度

# 数据量太小,执行时间可能比较快,查看不到reindex的任务情况curl -X GET "http://`hostname -i`:9200/_tasks?detailed=true&actions=*reindex&human=true"

10、再次检查集群两个索引的情况

curl -X GET "http://`hostname -i`:9200/_cat/indices?v"
health status index            uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .geoip_databases ib6tlhzjTf-MQBu-XGIVWg   1   0         33            0     31.1mb         31.1mb
green  open   new_index        aU3mztzXRXOSk9Q1oiP2RA   1   0          2            0      4.4kb          4.4kb
green  open   old_index        g24b-XDfQZ6BO5zdcIOM0A   1   0          2            0      4.4kb          4.4kb

总结

根据实际的生产场景,reindex对源集群性能带来的影响非常大,不建议这样使用。reindex的逻辑是先查询,再写入,一次全量的查询和持续的写入,想想就知道对源集群有多大的压力。如果你的磁盘性能又特别差,集群负载本身就比较高,那你完蛋了。建议最好的方式是将索引迁移至新的es集群中,这样源集群只会涉及到查询,影响最小,新集群刚开始无业务压力,写入不会增加太大的负担。

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

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

相关文章

Java面试题:线程池中常见的阻塞队列

线程池中常见的阻塞队列 workQueue:当没有空闲核心线程时,新来任务会加入此队列进行排队,队列满会创建救急线程执行任务 ArrayBlockingQueue: 基于数组结构的有界(容量固定)阻塞队列,FIFO 先进先出 提前初始化Node数组 提前创建Node 一把锁,同时只能进行入队和出队 Lin…

秋招突击——算法打卡——5/24——无重复字符的最长字串

题目描述 实现代码 // 无重复字符的最长子串 int lengthOfLongestSubstring(string s) {int l 0,r 0;int res 0;unordered_map<char,int> temp;while(l < s.size()){temp[s.at(l)] l;for (r l 1; r < s.size() ; r) {if(temp.count(s.at(r))) break;else te…

Golang:使用go-resty/resty发送http请求get和post

简单的 HTTP 和 REST 客户端&#xff0c;受到 Ruby rest-client 的启发 文档 https://github.com/go-resty/resty/ 安装 go get github.com/go-resty/resty/v2示例 1、发起GET请求 package mainimport ("fmt""strconv""time""github.…

pandas ExcelWriter写excel报错openpyxl.utils.exceptions.IllegalCharacterError

一直使用pandas写excel&#xff0c;本次写的数据有大字段&#xff0c;每次写到该字段就报错&#xff0c;代码如下&#xff1a; with pd.ExcelWriter(r".\提数_20240523\tq_type3_doc.xlsx", engineopenpyxl) as writer: df.to_excel(writer,indexFalse, sheet_namesh…

漫画|基于SprinBoot+vue的漫画网站(源码+数据库+文档)

漫画网站 目录 基于SprinBootvue的漫画网站 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大…

【Linux学习】进程间通信 (1) —— 管道

下面是有关进程通信中管道的相关介绍&#xff0c;希望对你有所帮助&#xff01; 小海编程心语录-CSDN博客 1. 进程通信的基本概念 1.1 概念 进程间通信简称 IPC &#xff0c;指两个进程之间的通信。 IPC的方式通常有管道&#xff08;包括无名管道和命名管道&#xff09;、消息…

python将矩阵转化为灰度图

1.python将矩阵转化为灰度图的方法 要将一个矩阵&#xff08;通常是一个二维数组&#xff0c;其中每个元素代表一个像素的灰度值&#xff09;转换为灰度图&#xff0c;我们可以使用Python的matplotlib库。下面是一个详细的步骤和完整的代码示例&#xff1a; &#xff08;1&am…

【Muduo】缓冲区Buffer类

在 Muduo 网络库中&#xff0c;Buffer类用于处理网络 I/O 中的数据缓冲。防止应用程序读写太快而网络链路收发速度慢导致的速度不匹配问题。这个类封装了一个内部缓冲区&#xff08;使用了vector<char>&#xff09;&#xff0c;并提供了一系列方法来操作这个缓冲区&#…

【Linux网络】端口及UDP

文章目录 1.再看四层2.端口号2.1引入linux端口号和进程pid的区别端口号是如何生成的传输层有了pid还设置端口号端口号划分 2.2问题2.3netstat 3.UDP协议3.0每学一个协议 都要讨论一下问题3.1UDP协议3.2谈udp/tcp实际上是在讨论什么&#xff1f; 1.再看四层 2.端口号 端口号(Po…

//TODO 注释的作用

// TODO 用来标记某处&#xff0c;表示该处含有待办事项&#xff08;尚未解决&#xff09;。其设计本意只是提醒开发者注意&#xff0c;除了代码高亮之外&#xff0c;还可以借助编辑器实现快速定位。 如何使用&#xff1f; 直接在双斜杠后面加 TODO 或者 todo 即可&#xff0c…

CVPR2022医疗图像-GBCNet网络:胆囊癌(GBC)超声(USG)图像检测模型

Surpassing the Human Accuracy:Detecting Gallbladder Cancer from USG Images with Curriculum Learning&#xff1a;超越人类的准确性:基于课程学习的USG图像检测胆囊癌 目录 一、背景与意义 二、介绍 三、网络框架 3.1 区域选择网络 3.2 MS-SoP分类器 3.3 多尺度块 …

抖音运营_抖音电商介绍

截止20年8月&#xff0c;抖音的日活跃数高达6亿。 20年6月&#xff0c;上线抖店 &#xff08;抖音官方电商&#xff09; 一 抖店的定位和特色 1 一站式经营 帮助商家进行 商品交易、店铺管理、客户服务 等全链路的生意经营 2 多渠道拓展 抖音、今日头条、西瓜、抖音火山版…

ASP+ACCESS基于WEB社区论坛设计与实现

摘要&#xff1a;系统主要实现BBS网站全部功能。采用目前应用最为广泛的ASP作为开发工具来开发此系统、以保证系统的稳定性。采用目前最为流行的网页制作工具Dreamweaver和目前最为流行的动画制作工具Flash MX。整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发&…

首次面试实习岗,有点紧张。。。

首次面试实习岗&#xff0c;有点紧张。。。 文章目录 首次面试实习岗&#xff0c;有点紧张。。。算法1.三角形问题2.一年中第几天问题 提问&#xff1a;一、SpringBoot的配置文件中的数据有哪几种获取方式&#xff0c;分别是怎么获取的&#xff1f;二、Autowire和Resource有什么…

卤菜销售|基于SSM+vue的智能卤菜销售平台的设计与实现(源码+数据库+文档)

智能卤菜销售平台 目录 基于SSM&#xff0b;vue的智能卤菜销售平台的设计与实现 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3用户功能模块 4商家功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八…

windows查看mysql的版本(三种方法)

方法一&#xff1a;在win r 打开 cmd&#xff0c;在cmd命令状态下&#xff1a;mysql --help 回车即可 方法二&#xff1a;在mysql客户端窗口状态下&#xff1a;输入status并回车即可 在计算机开始菜单搜索以上应用打开即可进入mysql客户端窗口。 方法三&#xff1a;在mys…

【必会面试题】Redis如何实现分布式锁?

目录 一、为什么要使用分布式锁&#xff1f;二、什么是分布式锁&#xff1f;三、什么是Redis分布式锁&#xff1f;四、如何实现Redis分布式锁&#xff1f;1. 基础方法&#xff1a;SETNX EXPIRE2. Lua 脚本3. Redisson 实现4. Redlock 算法 五、JavaRedis分布式锁1. 基于Jedis的…

pikachu-Unsafe Filedownload

任意点击一个图片进行下载&#xff0c;发现下载的url。 http://127.0.0.1/pikachu/vul/unsafedownload/execdownload.php?filenamekb.png 构造payload&#xff1a; 即可下载 当前页面的源码&#xff0c;可以进行路径穿越来下载一些重要的配置文件来获取信息。 http://127.0.…

Android Audio基础——Track构造过程(十)

在 Android 中,Track 通常是指用于播放音频或视频的轨道或通道,用于音频流的控制。在这种语境下,AudioTrack 是用于播放音频的类之一,它提供了直接控制音频数据播放的功能。因此,可以说 AudioTrack 是 Android 中处理音频轨道的一种实现方式之一。 一、Track构造 我们接着…

函数对象引用题目

下列代码的输出是什么&#xff1f; python def func(x): return x1 funcs[func]*5 result[f(0) for f in funcs] print(result) A.[1,1,1,1,1] B.[1,2,3,4,5] C.[0,0,0,0,0] D.[0,1,2,3,4] 3 2 1 答案是A&#xff0c;你答对了吗&#xff1f; 解析&#xff1a; def fu…