【发布时间】:2017-02-27 10:52:17
【问题描述】:
如果我更改了索引的映射并想要重新索引怎么办?
我目前使用的 Java API 还没有重新索引功能,所以使用批量可以解决我的问题。所以解决方案看起来像这样
参考How to reindex in ElasticSearch via Java API
很久以前
- 创建索引 MY_INDEX_1
- 为 MY_INDEX_1 创建映射
- 创建别名 MY_INDEX_1 -> MY_INDEX
- 在 MY_INDEX 中创建文档
是时候重新索引了!
- 列表项
- 创建索引 MY_INDEX_2
- 为 MY_INDEX_2 创建映射
- 滚动搜索 + 批量从 MY_INDEX_1 到 MY_INDEX_2 的所有文档
旧索引的重命名和删除
- 创建别名 MY_INDEX_2 -> MY_INDEX
- 删除别名 MY_INDEX_1 -> MY_INDEX
- 删除索引 MY_INDEX_1
但是,在重新索引所有文档时会发生什么情况,在开始重新索引的文档会从用户那里更新。 或者在重新索引和重命名别名之间发生上述情况?
可能的解决方案?
- 一种方法是使用外部版本,例如它不会用更高版本覆盖文档
- 或者可以通过其他方式解决吗?
- 或者在重命名别名和删除 my_index_1 之间,重新索引自重新索引以来已被索引的所有文档?但是仍然会出现在重命名别名和第二次重新索引之间更新文档的情况
- 或者我们应该在重新索引时锁定?似乎是一个糟糕的解决方案..
【问题讨论】:
标签: elasticsearch