看,灰机...

es重建索引,Id字段生成算法变更

Elasticsearch | 作者 jianfaith | 发布于2020年09月21日 | 阅读数:1575

目前生产环境有索引A,由于历史缘故,id字段值为UUID
现在想把id生成算法改为hash(name+age+sex+iolid)
怎么通过重建索引实现
生产环境目前6台机器,100多个T数据
找了一些资源都不满足要求,请求大神回复
 
 
已邀请:

jianfaith - 90后 大数据

赞同来自:

jianfaith - 90后 大数据

赞同来自:

目前已经方案中用spark 从es中读取数据再写入到es,目前这种方案太耗时,业务上不支持,大家有没有好办法。

God_lockin

赞同来自:

这个id是数据中的某个字段还是es自己的_id?
 
如果是数据中某个字段,其他那些拿来计算id的字段也都存在与数据里,可以考虑通过一些pipeline + reindex 的方法让ES重新算
 
如果是_id的话,最简单的办法是维护一个uuid <-> hashId 的映射表,取数据的时候从里面去取,但是为了保证后续的数据能兼容,还是得重建索引重新刷这些_id

woon

赞同来自:

我找了两个相关的问题。
painless没有现成的hash算法,可以自己实现,然后reindex指定_id。我也不知道效率怎么样,楼主可以试试。
1. stackoverflow      is-it-possible-to-have-a-computed-id-field-by-hashing-other-fields-of-the-docum
2. discuss.elastic.co    how-to-change-a-documents--id-during-a-reindex

wrd

赞同来自:

好的,谢谢大家的帮助!
 

要回复问题请先登录注册