ES 修改mapping

在ES中,一旦mapping设置后不能直接修改,但可以通过创建新索引并利用别名实现平滑迁移。当现有索引(如张三)无法满足需求时,创建新索引(如李四),同步数据并修改别名指向,从而完成无中断的修改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景

在mysql中  我们经常遇到产品修改需求   我们可能会在原有数据库表基础上   对字段  索引  类型进行修改

比如  增加一个字段   添加一个字段的索引  又或者修改某个字段的类型

一切都看起来这么自然  不过在ES这里却是行不通的

ES的mapping一旦设置了之后  是不能修改的   因为ES默认是对所有字段进行索引   如果你修改了mapping  那么已经索引过的数据就必须全部重新索引一遍  ES没有提供这个机制

解决

不过我们有另外一种解决方案类似与运维中的滚动发布

利用别名

说穿了其实很简单

比如我们创建了一个索引张三  我们给他起一个别名A  我们在搜索的时候就可以在别名中搜索  别名会自动映射到张三

这时候如果张三满足不了我们的需求,我们要修改张三。我们可以创建一个李四的索引(修改后的张三索引mapping)

然后同步数据并索引到李四

这时候我们把别名映射 从A->张三  变成  A->李四   就可以实现无缝切换了

实际操作

创建张三索引

修改索引别名

创建李四索引(在张三的基础上增加了一个age字段)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值