Elasticsearch Reindex性能提升方法

干货 | Elasticsearch Reindex性能提升10倍+实战 集群里面对数据进行重建,如果你的mapping因为修改而需要重建,又或者索引设置修改需要重建的时候,借助Reindex可以很方便的异步进行重建,并且支持跨集群间的数据迁移。slices大小设置注意事项: 1)slices大小的设置可以手动指定,或者设置slices设置为auto,auto的含义是:针对单索引,slices大小=分片数;针对多索引,slices=分片的最小值。2)每个Scroll请求,可以分成多个Slice请求,可以理解为切片,各Slice独立并行,利用Scroll重建或者遍历要快很多倍。 阅读详情

1、reindex的速率极慢,是否有办法改善?
以下问题来自社区:https://elasticsearch.cn/question/3782

问题1:reindex和snapshot的速率极慢,是否有办法改善?
reindex和snapshot的速率比用filebeat或者kafka到es的写入速率慢好几个数量级(集群写入性能不存在瓶颈),reindex/snapshot的时候CPU还是IO使用率都很低,是不是集群受什么参数限制了reindex和snapshot的速率?
reindex不管是跨集群还是同集群上都很慢,大约3~5M/s的索引速率,会是什么原因导致的?

问题2:数据量几十个G的场景下,elasticsearch reindex速度太慢,从旧索引导数据到新索引,当前最佳方案是什么?
2、Reindex简介
5.X版本后新增Reindex。Reindex可以直接在Elasticsearch集群里面对数据进行重建,如果你的mapping因为修改而需要重建,又或者索引设置修改需要重建的时候,借助Reindex可以很方便的异步进行重建,并且支持跨集群间的数据迁移。比如按天创建的索引可以定期重建合并到以月为单位的索引里面去。当然索引里面要启用_source。

POST _reindex
{
  "source": {
    "index": "twitter"
  },
  "dest": {
    "index": "new_twitter"
  }
}
3、原因分析
reindex的核心做跨索引、跨集群的数据迁移。
慢的原因及优化思路无非包括:

1)批量大小值可能太小。
需要结合堆内存、线程池调整大小;
2)reindex的底层是scroll实现,借助scroll并行优化方式,提升效率;
3)跨索引、跨集群的核心是写入数据,考虑写入优化角度提升效率。
4、Reindex提升迁移效率的方案
4.1 提升批量写入大小值
默认情况下,_reindex使用1000进行批量操作,您可以在source中调整batch_size。

POST _reindex
{
  "source": {
    "index": "source",
    "size": 5000
  },
  "dest": {
    "index": "dest",
    "routing": "=cat"
  }
}


批量大小设置的依据:

(1)使用批量索引请求以获得最佳性能。
批量大小取决于数据、分析和集群配置,但一个好的起点是每批处理5-15 MB。
注意,这是物理大小。文档数量不是度量批量大小的好指标。例如,如果每批索引1000个文档,:
1)每个1kb的1000个文档是1mb。
2)每个100kb的1000个文档是100 MB。
这些是完全不同的体积大小。
(2)逐步递增文档容量大小的方式调优。
1)从大约5-15 MB的大容量开始,慢慢增加,直到你看不到性能的提升。然后开始增加批量写入的并发性(多线程等等)。
2)使用kibana、cerebro或iostat、top和ps等工具监视节点,以查看资源何时开始出现瓶颈。如果您开始接收EsRejectedExecutionException,您的集群就不能再跟上了:至少有一个资源达到了容量。要么减少并发性,或者提供更多有限的资源(例如从机械硬盘切换到ssd固态硬盘),要么添加更多节点。
4.2 借助scroll的sliced提升写入效率
Reindex支持Sliced Scroll以并行化重建索引过程。 这种并行化可以提高效率,并提供一种方便的方法将请求分解为更小的部分。

sliced原理(from medcl)
1)用过Scroll接口吧,很慢?如果你数据量很大,用Scroll遍历数据那确实是接受不了,现在Scroll接口可以并发来进行数据遍历了。
2)每个Scroll请求,可以分成多个Slice请求,可以理解为切片,各Slice独立并行,利用Scroll重建或者遍历要快很多倍。

slicing使用举例
slicing的设定分为两种方式:手动设置分片、自动设置分片。
手动设置分片参见官网。
自动设置分片如下:

POST _reindex?slices=5&refresh
{
  "source": {
    "index": "twitter"
  },
  "dest": {
    "index": "new_twitter"
  }
}

slices大小设置注意事项:
1)slices大小的设置可以手动指定,或者设置slices设置为auto,auto的含义是:针对单索引,slices大小=分片数;针对多索引,slices=分片的最小值。
2)当slices的数量等于索引中的分片数量时,查询性能最高效。slices大小大于分片数,非但不会提升效率,反而会增加开销。
3)如果这个slices数字很大(例如500),建议选择一个较低的数字,因为过大的slices 会影响性能。

4.3 ES副本数设置为0
如果要进行大量批量导入,请考虑通过设置index.number_of_replicas来禁用副本:0。
主要原因在于:复制文档时,将整个文档发送到副本节点,并逐字重复索引过程。 这意味着每个副本都将执行分析,索引和潜在合并过程。
相反,如果您使用零副本进行索引,然后在提取完成时启用副本,则恢复过程本质上是逐字节的网络传输。 这比复制索引过程更有效。

PUT /my_logs/_settings
{
    "number_of_replicas": 1
}

4.4 增加refresh间隔
如果你的搜索结果不需要接近实时的准确性,考虑先不要急于索引刷新refresh。可以将每个索引的refresh_interval到30s。
如果正在进行大量数据导入,可以通过在导入期间将此值设置为-1来禁用刷新。完成后不要忘记重新启用它!
设置方法:

PUT /my_logs/_settings
{ "refresh_interval": -1 }

5、小结
实践证明,比默认设置reindex速度能提升10倍+。
遇到类似问题,多从官网、原理甚至源码的角度思考,逐步拆解分析。
只要思维不滑坡,办法总比问题多!

参考:
[1] Jest Reindex参考:http://t.cn/RDOyIc8
[2] 官网性能优化:http://t.cn/RDOyJqr
[3] 论坛讨论:http://t.cn/RDOya3a
————————————————
版权声明:本文为优快云博主「铭毅天下」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:

Elasticsearch reindex api 索引重建介绍与使用细节、性能优化 Reindex会将一个索引的数据复制到另一个已存在的索引,但是并不会复制原索引的mapping(映射)、shard(分片)、replicas(副本)等配置信息。ES官方提供了_reindex这一API,相比于使用bulk重新导入数据的速度更快,其核心是做跨索引、跨集群的数据迁移。在运行_reindex操作前,应当先根据复制源索引及存储需求创建新的目标索引,报错设置mapping映射、分片、副本等。 阅读详情

相关推荐

Elasticsearch best_compression压缩调优:从磁盘省钱到搜索性能的权衡

在Elasticsearch运维中,磁盘空间和查询性能始终是成本优化的两大核心关注点。压缩算法作为平衡存储与效率的关键技术,直接决定了索引文件的物理大小以及数据读写时的CPU开销。默认的LZ4压缩追求高吞吐,而best_compression采用的Deflate算法则以更高压缩率换取空间节省,两者在存储结构、IO等待和查询延迟上各有取舍。理解倒排索引与doc values并不随codec切换而改变,才能真正掌握压缩生效的边界。从新建索引配置、存量数据force merge到reindex重建,合理的切换策略

weixin_31309419的博客 119

Elasticsearch 提升 Reindex 速度

elasticsearch reindex 速度提升

沐霜枫叶 1030

ES数据库重建索引—Reindex详解

2、当数据的mapping需要修改,但是大量的数据已经导入到索引中了,重新导入数据到新的索引太耗时;1)用过Scroll接口吧,很慢?1、当你的数据量过大,而你的索引最初创建的分片数量不足,导致数据入库较慢的情况,此时需要扩大分片的数量,此时可以尝试使用Reindex。2)每个Scroll请求,可以分成多个Slice请求,可以理解为切片,各Slice独立并行,利用Scroll重建或者遍历要快很多倍。3)如果这个slices数字很大(例如500),建议选择一个较低的数字,因为过大的slices 会影响性能。

lixinkuan的博客 3557

ES的_reindex和_template

1)slices大小的设置可以手动指定,或者设置slices设置为auto,auto的含义是:针对单索引,slices大小=分片数;常规的如果我们只是进行少量的数据迁移利用普通的reindex就可以很好的达到要求,但是当我们发现我们需要迁移的数据量过大时,我们会发现reindex的速度会变得很慢。1、当你的数据量过大,而你的索引最初创建的分片数量不足,导致数据入库较慢的情况,此时需要扩大分片的数量,此时可以尝试使用Reindex。1)从大约5-15 MB的大容量开始,慢慢增加,直到你看不到性能的提升。

tanqili的博客 928

不停止业务的情况下优化 Elasticsearch Reindex

在使用 Elasticsearch 时,我们总有需要修改索引映射的时候,这时我们只能进行 _reindex。事实上,这是一个相当昂贵的操作,因为根据数据量和分片数量,完整复制一个索引可能需要几个小时。花费的时间不是大问题,但更严重的是,它会影响生产环境的性能甚至功能。相信大家都明白,数据迁移会消耗大量硬盘资源,肯定会影响性能,但功能呢?让我们以常规的 _reindex 为例。假设我们在索引上创建了一个别名。如果没有别名,我们就有大麻烦了。常规的reindex程序分为两个步骤。

yonggeit的博客 4335

【elasticsearch】ES数据库重建索引 -- Reindex(数据迁移)

转载:https://www.cnblogs.com/Ace-suiyuan008/p/9985249.html 1.应用背景: 1、当你的数据量过大,而你的索引最初创建的分片数量不足,导致数据入库较慢的情况,此时需要扩大分片的数量,此时可以尝试使用Reindex。 2、当数据的mapping需要修改,但是大量的数据已经导入到索引中了,重新导入数据到新的索引太耗时;但是在ES中,一个字段的mapping在定义并且导入数据之后是不能再修改的, 所以这种情况下也可以考虑尝试使用Reindex。 2.Reind.

九师兄 1万+

Elasticsearch Reindex实战:从场景解析到性能调优全攻略

本文详细解析Elasticsearch Reindex操作的核心场景与性能调优策略,涵盖分片扩容、字段改造、数据清洗等关键任务。通过实战案例和API手册,帮助开发者掌握索引迁移、版本控制及数据清洗技巧,并提供批量大小、并行切片等六项性能优化方案,避免常见陷阱。

weixin_30703911的博客 382

金桔智慧物流之容器(托盘、周转箱等)定位及周转方案原理

金桔智慧物流之容器(托盘、周转箱等)定位及周转方案原理 在物流行业种,托盘是标准化运输的关键的配件,而容器存在丢失、盘点、闲置等管理问题。如何通过信息化的手段提升容器的寿命,提高调配效率,降低闲置是物流容器行业的关键点。 金桔蓝牙网关配合金桔蓝牙资产管理终端可以解决物流行业痛点问题。 容器管理面临的问题: 技术方案 场景描述之库房 场景描述之车辆 场景描述之终端 方案优势 ...

jinjufocus的博客 1180

reindex的速率提升

1、reindex的速率极慢,是否有办法改善? 以下问题来自社区:https://elasticsearch.cn/question/3782 reindex 问题1:reindex和snapshot的速率极慢,是否有办法改善? reindex和snapshot的速率比用filebeat或者kafka到es的写入速率慢好几个数量级(集群写入性能不存在瓶颈),reindex/snapshot的时候CPU还是IO使用率都很低,是不是集群受什么参数限制了reindex和snapshot的速率? reindex

manmanpa的博客 699

解决Word中英文混排的5个常见排版问题(含单词换行、间距调整等)

本文详细解析Word中英文混排的5大常见排版问题,包括单词换行、间距调整、标点混用等,提供专业解决方案。通过设置段落格式、调整兼容性选项和使用字体组合等技巧,帮助用户轻松解决文档排版难题,提升专业性和阅读体验。

vim8coder的博客 1328

竞拍算法(Auction Algorithm)原理及工作过程分析

因一些项目工作需要对竞拍算法进行深入了解。但百度了大部分资料都未找到一篇文章能对此算法进行较为深入的介绍。在一番努力之下,终于找打了最初提出该算法的论文,本文内容主要结合该论文对竞拍算法进行分析。 竞拍算法简介 竞拍算法(Auction Algorithm)是一种用于解决分配问题的分布式算法,经相关文献查询,最早由麻省理工学院信息和决策系统实验室的Bertsekas(教授?)提出 1,于1988年发表于期刊Annals of Operations Research。 顾名思义,竞拍算法本质就是模拟人类拍.

weixin_47546390的博客 3万+

elastic golang

如果 插入es的BodyJson大于32766(utf-8),需要使用mapping创建 【Elasticsearch系列之四】腾讯云ES数据基本操作 使用Elasticsearch(附Golang代码) 迁移到es使用上遇到的问题 elasticsearch如何修改mapping和template的方法 修改mapping之前,要把数据都清理掉,不然你就算put了新的mapping,他以前的数据也更正不过来,后进去的数据会跟随旧数据的存储类型 注意:索引模板仅在索引创建时应用,因此模板调整不会对已有的.

weixin_42248522的博客 812

基于STM32与OV7670的嵌入式视频监控系统设计与实现

本文详细介绍了基于STM32单片机与OV7670摄像头的嵌入式视频监控系统设计与实现。从硬件选型、电路设计到软件开发,涵盖了摄像头驱动、TFT显示优化及图像处理等关键技术,提供了实用的调试技巧和性能优化方案,为低成本、高效率的视频监控系统开发提供完整解决方案。

desk3的博客 801

如何减少 Elasticsearch 集群中的分片数量

本文介绍了Elasticsearch分片管理的实用指南,重点讲解了如何优化和减少分片数量以提升集群性能。主要内容包括:1)新建索引时如何设置合理分片数;2)通过减少副本数或使用Shrink/Reindex API来缩减现有索引的分片;3)针对基于时间的索引和多租户场景的特殊处理方案;4)推荐使用Elasticsearch Serverless来简化分片管理。文章提供了详细的代码示例和操作步骤,帮助用户根据实际数据量调整分片配置,平衡性能与资源消耗。

Elastic 中国社区官方博客 1343

YOLO26改进策略【Neck】| arXiv 2025 分层多头注意力HMHA 子空间拆分提多样 + 通道重排降冗余,强化目标检测精度

HMHA(Hierarchical Multi-Head Attention,分层多头注意力)旨在解决传统多头注意力(MHA)在图像恢复任务中的核心缺陷——特征冗余。传统MHA将通道均匀拆分给各个头,导致不同头学习的子空间信息相似,进而出现多头关注同一区域、忽略退化区域修复的问题,限制了模型的特征表达能力。HMHA通过“分层子空间拆分+通道重排序”策略,让每个头学习差异化、互补的上下文特征,从根源上缓解冗余,提升图像恢复任务中对复杂退化场景的特征捕捉能力。

Limiiiing的博客 208

YOLOV12进阶:MSDA多尺度空洞注意力机制解析与实战,突破检测尺度瓶颈

在目标检测中,“尺度差异”是个老大难问题——大目标占据画面大半,小目标可能只有几个像素,普通模型很难同时精准检测。而MSDA(Multi-Scale Dilated Attention,多尺度空洞注意力)就像给模型配备了“变焦眼镜”,能同时关注不同尺度的目标,让YOLOV12在大、中、小目标检测上都能表现出色。这篇教程会带你从原理到实操,掌握这个强大的注意力机制,让你的检测模型真正“通吃”各种尺度的目标。MSDA的“多尺度空洞注意力”设计,是目标检测突破尺度瓶颈的关键一步。

know_F0727的博客 263

Elasticsearch 索引数据拆分

本文演示了如何通过Elasticsearch实现数据的索引拆分和别名管理。首先创建初始索引并插入示例日志数据,然后根据日志级别(info/error)创建两个新索引,使用reindex API将原始数据按级别拆分到对应新索引中。完成数据迁移后删除原索引,并为新索引添加统一别名,确保查询接口不受索引结构调整影响。这种方法既能优化索引存储结构,又能保持应用查询逻辑不变。

KT_0712的博客 187

【XSRP软件无线电】基于软件无线电平台的FM数字接收系统设计(含有完整工程资料获取链接)

随着无线通信技术的快速发展,软件无线电(Software Defined Radio, SDR)作为一种新兴的无线通信技术,逐渐成为研究和应用的热点。传统的无线接收机通常依赖于专用硬件实现其功能,灵活性和可扩展性有限。相较之下,软件无线电利用软件来实现信号处理和调制解调功能,能够适应多种频率和调制方式,使无线通信系统更加灵活和高效。在FM(频率调制)广播中,数字接收技术的应用不仅提高了信号的抗干扰能力,还能提供更好的音质和更多的附加信息(如广播电台名称、节目内容等)。

嵌入式技术开发 1366

Elasticsearch文档索引完全指南:从基础到高级的文档管理技巧 [特殊字符]

想要掌握Elasticsearch文档索引的核心技术吗?这篇终极指南将带你从零开始,深入理解Elasticsearch文档管理的完整流程。无论你是搜索新手还是希望优化现有系统的开发者,这篇文章都将为你提供实用的文档索引技巧和最佳实践。Elasticsearch作为最流行的开源搜索引擎,其文档索引功能是构建高效搜索系统的基石。在这篇完整教程中,我们将探索如何有效地创建、更新、删除和管理文档,确保你的

gitblog_02989的博客 471

IP-guard发布新版本4.87.2241.0

IP-guard发布了新版本4.87.2241.0,用户可通过提供的下载地址获取完整安装包和升级包。下载后,用户需联系厂家申请测试序列号以进行安装和使用。IP-guard是一款专注于企业文件加密、文档加密系统、防泄密软件、数据安全的软件。

IP-Guard专栏 1524

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Elasticsearch Reindex性能提升改良

1、reindex的速率极慢,是否有办法改善? 以下问题来自社区:https://elasticsearch.cn/question/3782 问题1:reindex和snapshot的速率极慢,是否有办法改善? reindex和snapshot的速率比用filebeat或者kafka到es的写入速率慢好几个数量级(集群写入性能不存在瓶颈),reindex/snapshot的时候CPU还是IO使...

香菇的博客 778

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ES索引重建reindex详解

ES分片数变更、mapping字段变更、分词规则修改等必须重建索引,此时可通过es本身自带的reindex功能进行数据迁移,支持跨索引、跨集群的数据迁移。

东境物语 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Elasticsearch Reindex 性能提升10倍

1、reindex的速率极慢,是否有办法改善? 以下问题来自社区:https://elasticsearch.cn/question/3782 问题1:reindex和snapshot的速率极慢,是否有办法改善? reindex和snapshot的速率比用filebeat或者kafk...

267

ElasticSearch reindex 操作

Elasticsearch Reindex 是用于数据迁移、结构调整和修复的强大工具。当需要修改索引的配置、优化性能或处理数据变化时,Reindex 是一种无缝的方式来复制和重新索引数据。

Mylqs的博客 1041
上一篇: event.target 和 event.currentTarget 的区别
下一篇: Docker相似的命令与区别
shadow_zed
博客等级 码龄10年 6289粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值