【问题标题】:Reindexing documents in elasticsearch with proper updates使用适当的更新重新索引 elasticsearch 中的文档
【发布时间】:2021-01-02 20:09:11
【问题描述】:

我需要将我的所有文档重新索引到具有更新映射和不同索引设置(例如分片数)的新索引。

事件在 Kafka 主题中发布,然后由将事件推送到弹性搜索的服务使用。所以,我不想在重新索引时停止使用事件。

为了实现这一点,我将primaryIndex(旧索引的名称)和secondaryIndex(新索引的名称)保留在一个spring 应用程序的application.properties 中。因此,在索引文档时,应用程序会将事件写入两个索引(主索引和辅助索引)并仅从主索引读取。现在我将运行_reindex API 将文档从旧索引移动到新索引。由于重新索引将持续大约 4-5 天,因此我想避免的事件可能会被 _reindex API 覆盖。

如何确保我的文档不会被_reindex API 覆盖?

重新索引完成后,我可以从我的应用程序属性中删除二级索引,并将primaryIndex 替换为新索引名称,然后也可以从新索引中读取部分。

或者有没有更好的方法来达到同样的效果?

【问题讨论】:

    标签: spring-boot elasticsearch


    【解决方案1】:

    您可以指示_reindex API 仅当新索引中不存在文档时才将其移动到新索引中。如果文档已经存在于新索引中,则可以是新事件或更新事件,您不想被覆盖。

    您可以在重新索引 API 中提供op_type: 'create'。 欲了解更多信息,请点击链接https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html

    希望这能回答你的问题:)

    【讨论】:

      猜你喜欢
      • 2017-02-27
      • 1970-01-01
      • 2021-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多