Elasticsearch 参考指南(升级前从新索引)

升级前从新索引

Elasticsearch能够读取上一个主要版本中建立的索引,旧的索引必须从新索引或删除。Elasticsearch 6.x可使用Elasticsearch 5.x中建立的索引,但不能使用Elasticsearch 2.x或以前建立的索引,Elasticsearch 5.x可使用Elasticsearch 2.x中建立的索引,但不能使用1.x或以前建立的索引。html

若是存在不兼容的索引,Elasticsearch节点将没法启动。segmentfault

要升级包含在2.x中建立的索引的Elasticsearch 5.x集群,必须在升级到6.x以前从新索引或删除它们。elasticsearch

要升级一个运行2.x的Elasticsearch集群,有两个选项:ide

  • 执行完整的集群重启升级到5.6,从新索引2.x索引,而后执行滚动升级到6.x,若是你的Elasticsearch 2.x集群包含在2.x以前建立的索引,那么你必须在升级到5.6以前删除或从新索引它们,有关从2.x升级到5.6的更多信息,请参阅Elasticsearch 5.6参考资料中的升级Elasticsearch
  • 建立一个新的6.x集群,从远程从新索引,直接从2.x集群导入索引。

要升级Elasticsearch 1.x集群,有两个选项:工具

  • 执行完整的集群重启升级到Elasticsearch 2.4.x,并从新索引或删除1.x索引,而后,执行完整的集群重启升级到5.6,从新索引或删除2.x索引,最后,执行滚动升级到6.x。有关从1.x升级到2.4的更多信息,请参见Elasticsearch 2.4参考资料中的升级Elasticsearch,有关从2.4升级到5.6的更多信息,请参阅Elasticsearch 5.6参考资料中的升级Elasticsearch
  • 建立一个新的6.x集群,从远程从新索引,直接从1.x集群导入索引。

升级基于时间的索引

若是你使用基于时间的索引,你可能不须要将以前的5.x索引向前推动到6.x,基于时间的索引中的数据一般会随着时间的推移而变得不那么有用,而且随着它们的时间期限超过你的保留期而被删除。ui

除非你的保留期很是长,不然你能够等待升级到6.x,直到你全部的前5.x索引都被删除。code

就地从新索引

用reindex API手动从新索引你的旧索引:htm

  1. 建立一个新索引并从旧索引复制映射和设置。
  2. refresh_interval设置为-1,而且number_of_replicas设置为0,以实现高效的从新索引。
  3. 使用Reindex API将旧索引中的全部文档从新索引到新索引。
  4. refresh_intervalnumber_of_replicas重置为旧索引中使用的值。
  5. 等待索引状态变为green
  6. 在单个更新别名请求中:索引

    • 删除旧索引。
    • 向新索引添加具备旧索引名称的别名。
    • 将旧索引上存在的任何别名添加到新索引中。

迁移援助和升级工具

X-Pack 5.6提供了迁移援助和升级工具,简化了从新索引和升级到6.x,这些工具在X-Pack试用版和基本许可中是免费的,你可使用它们来升级,不管X-Pack是否是你的Elastic Stack的一个常规部分,有关更多信息,请参阅http://www.elastic.co/guide/en/elastic-stack/6.4/upgrading-elastic-stack.htmlrem

从远程集群从新索引

你可使用reindex从远程将索引从旧集群迁移到新的6.x集群,这使你能够在不中断服务的状况下将以前的5.6集群迁移到6.x。

Elasticsearch提供向后兼容支持,能够将之前的主要版本的索引升级到当前的主要版本,跳过主要版本意味着你必须本身解决全部向后兼容性问题。

要迁移你的索引:

  1. 在旧集群旁边设置一个新的6.x集群,经过将旧集群添加到elasticsearch.yml中的reindex.remote.whitelist,使其可以访问旧集群:

    reindex.remote.whitelist: oldhost:9200
    新的集群没必要彻底扩展,当你迁移索引并将负载转移到新集群时,你能够向新集群添加节点,并从旧集群中删除节点。
  2. 对于须要迁移到6.x集群的每一个索引:

    • 用适当的映射和设置在6.x中建立一个新的索引,将refresh_interval设置为-1,并将number_of_replicas设置为0,以便更快地从新索引。
    • 从远程从新索引以将文档从旧索引拉到新的6.x索引。

      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在后台运行从新索引做业,那么从新索引请求将返回一个task_id,你可使用task API用来监控从新索引做业的进度:GET _tasks/TASK_ID
    • 当从新索引做业完成时,将refresh_intervalnumber_of_replicas设置为所需的值(默认设置是30s1)。
    • 一旦复制完成,新索引的状态为green,你就能够删除旧索引。

下一篇:多索引

相关文章
相关标签/搜索