美文网首页
如何在已创建的 es 索引中增加分片

如何在已创建的 es 索引中增加分片

作者: 华山令狐冲 | 来源:发表于2023-08-28 09:05 被阅读0次

在 Elasticsearch 中,分片的数量在创建索引时就已经设置好了,所以在已经创建的索引中增加分片是不可能的。这是因为 Elasticsearch 在创建索引时,会根据分片的数量把数据分布到不同的节点上,如果在创建索引后改变分片的数量,那么数据的分布就会出问题,这是 Elasticsearch 设计上的一个决定。

尽管不能直接更改已存在的索引的分片数,但我们可以通过重新索引(reindex)的方式来实现目标。也就是说,我们需要创建一个新的索引,这个新的索引有我们期望的分片数量,然后把旧的索引的数据拷贝到新的索引中。

下面是详细的步骤:

  1. 创建新索引:你可以使用 PUT 命令创建一个新的索引,设置期望的分片数量。例如:

    PUT /new_index
    {
      "settings": {
        "number_of_shards": 5,
        "number_of_replicas": 1
      }
    }
    

    这个命令会创建一个名为 new_index 的新索引,它有 5 个主分片和 1 个副本分片。

  2. 重新索引:你可以使用 POST 命令将旧索引的数据复制到新索引中。例如:

    POST /_reindex
    {
      "source": {
        "index": "old_index"
      },
      "dest": {
        "index": "new_index"
      }
    }
    

    这个命令会把 old_index 索引中的数据复制到 new_index 索引中。

  3. 验证数据:你可以使用 GET 命令来查看新索引中的数据,确保数据已经被正确复制。例如:

    GET /new_index/_search
    

    这个命令会返回 new_index 索引中的数据。

  4. 删除旧索引:如果你确定新索引中的数据是正确的,那么你可以删除旧的索引。例如:

    DELETE /old_index
    

    这个命令会删除 old_index 索引。

需要注意的是,这个过程可能需要一些时间,因为它需要复制所有的数据。而且,在数据复制的过程中,如果有新的数据被写入到旧的索引中,那么这些新的数据不会被复制到新的索引中。为了解决这个问题,你可能需要在复制数据的过程中停止写入新的数据,或者在数据复制完成后,再复制在此期间新写入的数据。

相关文章

  • ElasticSearch的结构

    一、索引Index ES的服务中,可以创建多个索引。每一个索引默认被分成5片。每一个分片都会存在至少一个备份分片。...

  • 配置高性能 Elasticsearch 集群的 9 个小贴士

    小贴士1:规划索引、分片 以及集群增长情况 ES使得创建大量索引和超大量分片非常地容易,但更重要的是理解每个索引和...

  • 搜索引擎ElasticSearch之(2)、索引管理

    1、索引管理 1.1、索引创建 创建索引主要设置主分片及副分片数量。索引创建后,主分片数不能更改,可以修改副本分片...

  • ElasticSearch分片原理与规划

    1、分片内部原理 分片是ES中较难理解的一个概念,它的核心概念和流程如下:一个ES索引中包含很多分片,一个分片是一...

  • ES 调整分片和副本数

    一、调整副本数 如调整副本数为0 返回 二、调整索引分片 索引分片数在索引创建好了之后就不能调整了,只能重建索引 ...

  • Elasticsearch如何实现分布式?

    (1)大概说:索引是ES中存储数据的基本单位,ES中用索引存储数据,索引是拆分成多个shard分片进行分布式存储的...

  • ES-优化应用篇

    本文主要讲述了对ES的启动后优化。主要采用以es-head插件的方式。 1、索引分片的优化:其中包括索引分片的数量...

  • 利用Knapsack进行elasticseach的备份迁移(为生

    背景: 公司项目生产环境的ES集群索引的初始分片创建时没有设置,默认为5个分片,一个副本。生产环境数据量激增,需要...

  • Elasticsearch 7 : 自定义 mapping 和

    ES 7 中在创建索引时指定 Mapping ES 7 中先建索引,再自定义 mapping ES 7 建索引时指...

  • 阿里JAVA面经

    ES ES这个组件由哪些关键模块组成?(不知道) 答:集群/索引/分片/复制分片等概念 ES的分布式特性体现在哪里...

网友评论

      本文标题:如何在已创建的 es 索引中增加分片

      本文链接:https://www.haomeiwen.com/subject/wbykmdtx.html