我需要将我的所有文档重新索引到一个新的索引,其中包含更新的映射和不同的索引设置,比如碎片数。
这些事件以卡夫卡的主题发布,然后被一项服务所消耗,该服务将该事件推至弹性搜索。所以,我不想在重新索引的时候停止使用这些事件。
为了实现这一点,我将primaryIndex (旧索引的名称)和secondaryIndex (新索引的名称)保存在spring应用程序的application.properties中。因此,在索引文档时,应用程序将将事件写入两个索引(主索引和辅助索引),并仅从主索引读取。现在,我将运行_reindex API将文档从旧索引移到新索引。由于重新索引将持续约4-5天,事件可能会被_reindex API覆盖,我想避免这种情况。
如何确保文档不被_reindex API覆盖?
完成重新索引之后,我可以从应用程序属性中删除次要索引,并将primaryIndex替换为新索引名,然后也可以从新索引读取部分。
或是否有更好的方法来实现相同的目标?
发布于 2021-01-02 12:09:11
只有在新索引中不存在文档时,才可以指示_reindex API将文档移动到新索引。如果文档已经出现在新索引中,则可以是新事件,也可以是不希望被重写的更新事件。
您可以在reindex API中给出op_type: 'create'。有关更多信息,请按https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html链接
希望这能回答你的问题:)
https://stackoverflow.com/questions/65477835
复制相似问题