【问题标题】:Spring Elasticsearch reindex methodSpring Elasticsearch 重新索引方法
【发布时间】:2020-10-14 09:06:21
【问题描述】:

我编写了一个 reindex 方法,它执行以下操作:

public void reindex() {
    IndexOperations indexOperations = elasticsearchOperations.indexOps(Song.class);
    List<Song> songs = songRepository.findAll();
    songSearchRepository.deleteAll();
    indexOperations.delete();
    indexOperations.create();
    songSearchRepository.saveAll(songs);
}

它完成了这项工作,但我现在确定删除然后创建索引是否有意义。我该如何改进这种方法?

【问题讨论】:

    标签: spring-data-elasticsearch


    【解决方案1】:

    实际上,我没有看到重新索引到同一索引的意义。

    如果你想重新索引到不同的索引,你应该使用 Elasticsearch 的reindex API。 Spring Data Elasticsearch 尚不直接支持此功能。

    要使用 Spring Data Elasticsearch 重新索引到不同的索引,您应该在循环中使用分页查询来读取一个索引并将数据写入第二个索引。

    编辑 16.10.2020:

    不要像我建议的那样在循环中使用复制,就像@joeyave 评论的那样,索引可能会在这里不同步。

    我创建了an issue in Spring Data Elasticsearch Jira 来实现重新索引支持。

    【讨论】:

    • 索引可能不同步。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多