对应的具体需求是,索引添加了一个新的mapping字段,想重新刷下原有数据,使所有数据都支持按新增字段搜索。
我希望做的操作如下:
1.更新mapping配置,添加新字段,使新写入的数据生效。
2.对索引做reindex,将索引abc数据导到abc_bak中。
3.再对abc_bak做reindex导回abc,但是只更新abc_bak中_version小于等于abc的文档,因为2、3两步期间,abc索引持续有新写入或被更新的数据,新增或更新的数据不需要重刷就可生效,而且也要防止被改回成旧的值。
我看文档里_reindex默认行为是会直接覆盖相同id的数据,或者设置version_type为external、external_gt、external_gte中的一个,但都不支持我说的那种,只更新版本号相同或更低的数据。
如果有其他方式在不中断原有索引读写的情况下,实现重刷所有数据的目的也可以。
我希望做的操作如下:
1.更新mapping配置,添加新字段,使新写入的数据生效。
2.对索引做reindex,将索引abc数据导到abc_bak中。
3.再对abc_bak做reindex导回abc,但是只更新abc_bak中_version小于等于abc的文档,因为2、3两步期间,abc索引持续有新写入或被更新的数据,新增或更新的数据不需要重刷就可生效,而且也要防止被改回成旧的值。
我看文档里_reindex默认行为是会直接覆盖相同id的数据,或者设置version_type为external、external_gt、external_gte中的一个,但都不支持我说的那种,只更新版本号相同或更低的数据。
如果有其他方式在不中断原有索引读写的情况下,实现重刷所有数据的目的也可以。
2 个回复
Ombres
赞同来自:
script 中不做数据修改
Charele - Cisco4321
赞同来自: