首页 > 解决方案 > Elasticsearch 仅重新索引丢失的文档

问题描述

我正在尝试重新索引从集群 A 到集群 B 的 200M 文档索引。我将 Reindex API 与远程源一起使用,一切正常。在我重新索引的同时,一些文档被添加到集群 A 中,所以我想将它们也添加到集群 B 中。

我再次启动了重新索引请求,但似乎重新索引过程需要很多时间,就像它再次重新索引所有内容一样。

我的问题是,集群是否从头开始重新索引所有文档,即使它们没有改变?

我的弹性搜索版本是 5.6

分度率

文档删除率

标签: elasticsearchelasticsearch-5reindex

解决方案


elasticsearch 不知道文档是否有变化。因此,它尝试将每个文档完全包含在两个索引中。如果您的数据中有类似的字段insert_time,您可以使用 reindex with query 来限制 A 的索引部分成为 B 上的 reindex。这将让您使用旧的 reindex 并更快地完成它。通过查询重新索引将是这样的:

POST _reindex
{
  "source": {
    "index": "A",
    "query": {
       "range": {
          "insert_time": {
              "gt": "time you want"
      }
    }
  },
  "dest": {
    "index": "B"
  }
}

推荐阅读