Elasticsearch仅重新索引丢失的文档

问题描述

我正在尝试将200M文档的索引从群集A重新索引到群集B。我将Reindex API与远程源一起使用,并且一切正常。在重新索引期间,一些文档已添加到群集A中,因此我也希望将它们也添加到群集B中。

我再次启动了重新索引请求,但似乎重新索引过程会花费很多,就像重新索引所有内容一样。

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

我的elasticsearch版本是5.6

Indexing rate

Document deletion rate

解决方法

elasticsearch不知道文档中是否有更改。因此,它试图使每个文档都完全包含在两个索引中。如果您的数据中有一个insert_time之类的字段,则可以将reindex与查询配合使用,以限制A的索引部分成为B的重新索引。这将使您使用较旧的reindex并更快地完成它。通过查询重新索引将是这样的:

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...