三、Elasticsearch本地/远程重建索引

一、概述

ES升级后或者数据需要迁移,需要重建索引
这个只是个官网的翻译,具体在做的时候会详细讲解
参考链接:

  • 本地重建
    https://www.elastic.co/guide/en/elasticsearch/reference/current/reindex-upgrade-inplace.html
  • 远程重建
    https://www.elastic.co/guide/en/elasticsearch/reference/current/reindex-upgrade-remote.html

二、Reindex in place 本地重建索引

1、可以用Upgrade Assistant(Kibina6.8)重建索引

2、手工重建索引

  • 新建索引,并指定mappings
  • 将refresh_interval 设置为 -1,number_of_replicas 设置为
  • 使用reindex API
    参考链接:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html
  • 将refresh_interval 和 number_of_replicas 设置为原来的值
  • 等待同步完毕,状态变为 green
    三、Reindex from a remote cluster 远程重建索引

1、新建一个集群,并添加到需要拉取的数据的老集群中

修改elasticsearch.yml:reindex.remote.whitelist: 老集群的IP:9200

2、针对每一个index的操作

  • 在新集群中新建索引并指定mappings,将 refresh_interval 设置为-1,number_of_replicas 设置为0
  • 使用reindex API将数据搬过来
POST _reindex
{
  "source": {
    "remote": {
      "host": "http://oldhost:9200",
      "username": "user",
      "password": "pass"
    },
    "index": "source",
    "query": {
      "match": {
        "test": "data"
      }
    }
  },
  "dest": {
    "index": "dest"
  }
}

如果将wait_for_completion设置为false,则同步会在后台进行,可以通过下面的url查询这个状态:TASK_ID是执行后返回的

GET _tasks/TASK_ID
  • 还原refresh_interval(默认为30s) 及 number_of_replicas (默认为1)
  • 同步完毕后,并且状态是green,就可以删除旧的索引

你可能感兴趣的:(三、Elasticsearch本地/远程重建索引)