目录

Elasticsearch重新索引

概述

reindex 不会尝试建立目标的索引,而且并不会把源索引的 setting 进行复制,因此在使用时最好的方法是把目标索引的 mappingsetting 显示定义好,然后再进行 reindex

Q: 当重索引的过程中产生文档冲突怎么办?

当目标索引已经存在文档的时候,如果在 reindex 过程中产生文档冲突,一般来说是可以避免的。但是如果过程中确实有文档冲突,可以把 version_type 置为 internal

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
POST _reindex
{
  "source": {
    "index": "twitter"
  },
  "dest": {
    "index": "new_twitter",
    "version_type": "internal"
  }
}

Reindex from Remote

重索引也支持从远程的 ES 集群进行迁移。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
POST _reindex
{
  "source": {
    "remote": {
      "host": "http://otherhost:9200",
      "username": "user",
      "password": "pass"
    },
    "index": "source",
    "query": {
      "match": {
        "test": "data"
      }
    }
  },
  "dest": {
    "index": "dest"
  }
}

参考资料

  1. Reindex API
警告
本文最后更新于 2017年2月1日,文中内容可能已过时,请谨慎参考。