当前位置:   article > 正文

Elasticsearch 索引的分片和副本是什么意思,如何扩展分片_elasticsearch 分片副本

elasticsearch 分片副本

前言

  如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
  而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


Elasticsearch 索引的分片和副本是什么意思,如何扩展分片

当你在 Elasticsearch 中创建一个索引时,你可以指定该索引被分成多个分片(Shard)。分片是索引的基本构建块,每个分片都是一个独立的 Lucene 索引,它包含了一部分你的数据。分片允许你水平扩展你的索引以处理更大的数据量。

副本(Replica)是分片的备份。副本的存在提供了数据的冗余,增加了系统的可用性和容错性。当主分片不可用时,副本可以被提升为主分片,从而保证数据的可用性。

例如,如果你有一个索引,其中包含了 5 个分片和每个分片有 1 个副本,那么你实际上有 5 个主分片和 5 个副本,共计 10 个分片。这意味着你的索引数据会被分成 10 份,每份数据被存储在一个主分片和一个副本中。
分片和副本的数量需要根据你的数据量、负载和可用性要求来进行合理的设置。通常情况下,可以通过增加分片数量来扩展索引的容量和吞吐量,通过增加副本数量来提高系统的可用性和容错性。然而,分片和副本的增加也会带来一些额外的开销,因此需要在设计时进行权衡和优化。

示例:

假设你正在构建一个电子商务网站的搜索引擎,用于存储商品信息。你创建了一个名为 “products” 的索引来存储所有商品数据。
你决定将 “products” 索引分成 5 个主分片和每个主分片创建一个副本,以确保数据的高可用性和容错性。这样,你的索引会有 5 个主分片和 5 个副本,共计 10 个分片。

现在假设你的网站经历了快速增长,商品数量激增,导致原先的 5 个主分片无法满足查询需求和索引更新的吞吐量。为了处理更大的数据量和更高的负载,你决定增加主分片数量。

你可以通过修改索引的设置来增加主分片的数量,比如将主分片数量增加到 10。这样,每个原先的主分片将被拆分成两个新的主分片,并且每个主分片仍保持一个副本。最终,你的索引会有 10 个主分片和 10 个副本,共计 20 个分片。
通过增加主分片数量,你可以水平扩展你的索引以处理更大的数据量和更高的负载,同时保持系统的可用性和容错性。

1. 设置 5个分片,每个分片一个副本的命令
PUT /my_index
{
  "settings": {
    "number_of_shards": 5,
    "number_of_replicas": 1
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述
下面是我们刚刚建的索引:
在这里插入图片描述
设置 5个分片,每个分片一个副本。

2. 将5个分片扩展到10个分片

测试之前插入一条数据:

PUT /my_index/_doc/yzy100001
{
  "title": "jstat命令查看jvm的GC信息",
  "content": "jstat命令查看jvm的GC信息999999999999",
  "author": "糖炒栗子",
  "publish_date": "2024-04-23",
  "tags": ["Elasticsearch", "Search", "Tutorial"]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述
在这里插入图片描述
1、创建新索引:修改主分片数量后,需要重新创建索引,并指定新的主分片数量。
创建新索引:

PUT /my_index_new
{
  "settings": {
    "number_of_shards": 10,  // 将主分片数量增加到 10
    "number_of_replicas": 1  // 根据需要设置副本数量
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

通过上面的请求创建一个新的索引 “my_index_new”,并将主分片数量设置为 10,副本数量根据需要进行设置。
在这里插入图片描述
在这里插入图片描述
2、重新索引数据:重新创建索引后,你需要重新索引你的数据,以便数据能够被正确地分配到新的主分片中。

POST /_reindex
{
  "source": {
    "index": "my_index"
  },
  "dest": {
    "index": "my_index_new"
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述
通过上面的请求重新索引数据,将原先索引 “my_index” 中的数据重新索引到新创建的索引 “my_index_new” 中。

完成以上步骤后,你的索引 “my_index” 的主分片数量就从 5 增加到了 10,并且数据已经被正确地重新索引到了新的索引中。

在新索引中查询我们刚刚插入一条文档,看看数据是否转移过去

GET /blog_new/_doc/yzy100001
  • 1

在这里插入图片描述
之前的哪个索引就可以干掉了

DELETE /my_index
  • 1

在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/685598
推荐阅读
相关标签
  

闽ICP备14008679号