ElasticSearch必知必会-Reindex重建索引
作者: 京东物流 康睿
1.重建索引需求背景
1.1 集群版本升级
ES版本兼容性
- 同一大版本范围内升级,索引读写兼容
- 不同大版本升级,索引读写不兼容,需要重建索引
1.2 集群迁移
集群索引迁移
- 集群迁移,索引服务不停机,数据提前迁移
1.3 索引分片数量调整
分片数量变更
- 原有分片数量太少,重建变多
- 原有分片数量太多,重建变少
- ES索引分片,一旦创建,原索引是不能修改分片数量的
1.4 索引文档结构变更
文档结构变更
- 字段类型变更,已有索引字段类型是不可以修改的
- 字段属性变更,历史数据的字段属性是不会刷新的
- 文档对象结构变更
2.常用重建索引方式
2.1 Reindex初识
索引重建说明
- 重建是创建新索引,原有索引保留
- 原有索引_source必须开启,否则找不到原始数据
- 索引重建建议,严格业务场景,目标索引mapping结构建议先创建好,不使用es动态推测字段类型的方式。
POST_reindex { "source": { "index": "原始索引" }, "dest": { "index": "新目标索引" } }
2.2 Url参数解读
URL参数
- refresh,目标索引是否立即刷新
- waif_for_active_shards, 重建索引分片响应设置
- Scroll, 快照查询时间
- slicing, 重建并行任务切片
- Max_docs , 单次最大数据量,条数
- requests_per_second . 单次执行的重建文档数据量
2.3 Request body参数解读
请求参数
- confilicts, 索引数据冲突如何解决,直接覆盖还是中断
- source: 原索引配置信息
- dest,新索引配置信息
- script,脚本处理,修改原索引信息后再写入新索引
2.4 Response 参数解读
响应参数
- 成功数
- 更新数
- 新增数
- 失败数
2.5 重建索引任务管控
任务管控必要性
- 重建索引是一个异步任务,由ES后台进程完成调度执行,集群可能有并行其他异步任务,有时需要中断停止或查看进度
任务管控API
- _tasks,服务端API
3.高级索引重建方式
3.1 单秒数据量阈值控制
单秒数据量控制
- requests_per_second
- 默认1000,设置-1则不限制
- 生产重建时,建议控制范围500-1000左右
- 控制重建速度,防止集群瞬间IO过大
3.2人工切片
数据切片应用
- 人为指定切片数量,并行任务
- 用于降低索引redinx速度
POST_reindex { "source": { "index": "my-index-000001", "slice": { "id": 0, // 执行下标,从0开始,即0切第一批数据做迁移,1切第二批数据做迁移 "max": 2 // 切分分片数 } }, "dest": { "index": "my-new-index-000001" } }
3.3 自动切片
自动切片
- 仅需指定自动切片大小即可,后续的调度由es完成
POST_reindex?slices=5&refresh { "source": { "index": "my-index-000001" }, "dest": { "index": "my-new-index-000001" } }
3.4 限制reindex重建数据的范围
3.4.1 query
限制查询条件
- 基于DEL语言规则编写,可以任意复杂,限制数据范围
POST_reindex { "source": { "index": "my-index-000001", "query": { "term": { "user.id": "kimchy" } } }, "dest": { "index": "my-new-index-000001" } }
3.4.2 max docs
限制数据条数
- 限制重建数据总条数,默认全部
POST_reindex { "max_docs": 1, "source": { "index": "my-index-000001" }, "dest": { "index": "my-new-index-000001" } }
3.5 多索引重建
多索引重建
- ES也支持将多个索引数据合并到一个索引里面去
- 若多个索引数据ID相同,则会相互覆盖
POST_reindex { "source": { "index": ["my-index-000001", "my-index-000002"] }, "dest": { "index": "my-new-index-000002" } }
3.6 限制重建索引数据字段
限制重建索引数据字段
- source filter
- 原有数据字段过多,需要限制筛选部分进行重建
POST_reindex { "source": { "index": "my-index-000001", "_source": ["user.id", "_doc"] }, "dest": { "index": "my-new-index-000001" } }
3.7 字段重命名
字段名重命名
- 原有的数据字段名称不合理,重新按照新字段命名
- 基于脚本机制修改
- ES字段名称原始是不允许修改的,但通过脚本可以操作
3.8 修改原始文档数据
修改原始文档数据
- 基于脚本
4.跨集群索引重建
跨集群操作
- 基于集群通信,类同远程机制
- 需设置跨集群白名单,配置在dist集群
5.索引重建注意事项
5.1 数据量阈值控制
控制好索引重建速率,防止过快
5.2 索引访问交叉影响
建议先新建好dist索引

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
京东小程序CI工具实践
作者:京东物流 张俊峰 本文从整体介绍了京东小程序CI工具的用途及工作流程,读者可以通过本文了解到一种全新的京东小程序上传方式,同时结合构建脚本和流水线,可大大提高小程序的部署和发布效率。 01 前言 在今年的敏捷团队建设中,我通过Suite执行器实现了一键自动化单元测试。Juint除了Suite执行器还有哪些执行器呢?由此我的Runner探索之旅开始了! 京东小程序CI工具是为京东小程序打造的效率提升工具。通过CI工具,开发者无需依赖小程序开发者工具即可实现京东小程序的预览、上传等操作。同时结合构建脚本和流水线,可以支持代码包的远程部署,实现小程序CI/CD。 1.1 京东小程序简介 京东小程序平台是一个全面开放的生态模式,入驻平台后,能分享京东系APP流量福利、海量SKU和开放能力。提升用户体验,给商家带来新机遇。 京东小程序架构分为视图层和逻辑层,视图层运行在WebView容器里,负责UI渲染;逻辑层运行在JSCore的沙箱容器里,负责数据处理。二者通过JSBridge通道进行数据通信。京东小程序架构图如图1所示。 图1 京东小程序架构图 1.2 关于小程序CI工具 小程序CI工...
- 下一篇
从稀疏表征出发、召回方向的前沿探索
作者 | lhy12138 导读 目前百度大搜主要有基于稀疏表征的倒排检索和稠密表征的语义检索双路召回。随着深度学习技术的发展,语义检索的召回效果得到了显著提高;与此同时,因为稀疏表征有着精确匹配、索引效率和可解释的优势,最近学术界重新将目光放回稀疏表征架构,研究稀疏表征如何从大规模语言模型中获益。本文将介绍学术界在倒排召回和语义召回的最新进展。 全文6386字,预计阅读时间16分钟。 一、搜索中的召回 召回一般会从海量候选库中选择与query相关的文档送给上层排序模块,因为效率原因,往往无法执行query-url细粒度交互。目前召回主要有基于term的传统倒排召回和基于向量表征的语义召回。本文将介绍两个方向在学术届的一些最新进展。 二、如何看待语义召回和传统倒排召回的关系? 随着预训练模型和样本技术的更新,语义召回表现了强大的检索效果,而传统倒排技术因为成本、效率问题并没有获得效果的显著提高。倒排召回基于term归并,因此具有较强的可解释性;而语义召回在向量空间搜索与query语义最相似的文档,对语义的表达能力更强。应该如何看待两者在召回链路上的关系呢? Are We There ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS8安装Docker,最新的服务器搭配容器使用
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8编译安装MySQL8.0.19