前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elasticsearch 基本概念- Replica(二)

Elasticsearch 基本概念- Replica(二)

原创
作者头像
堕落飞鸟
发布2023-05-08 11:08:52
3640
发布2023-05-08 11:08:52
举报
文章被收录于专栏:飞鸟的专栏

副本如何工作?

在 Elasticsearch 中,每个副本都是一个完整的分片拷贝。这意味着副本中包含与主分片相同的所有数据,并且可以完全独立地提供服务。

当索引操作在主分片上执行时,Elasticsearch 会自动将这些操作传播到副本分片上,以便在发生故障时进行故障转移。这些操作包括文档索引、更新和删除等操作。

如果主分片变为不可用状态,Elasticsearch 会自动从可用的副本中选择一个作为新的主分片。选择新的主分片的过程称为选举。Elasticsearch 会选择具有最高副本。

对于一个拥有多个副本的索引,Elasticsearch会将每个副本分配到不同的节点上,以保证索引的高可用性。当一个主分片出现故障时,Elasticsearch会从它的副本中自动选举一个新的主分片,使得数据的可用性不受影响。

副本的数量可以在索引创建时指定。每个主分片可以有0个或多个副本。副本的数量不仅影响到索引的可用性,还影响到搜索性能。由于副本可以跨越多个节点,因此它们可以并行地处理搜索请求,从而提高搜索速度。

在索引中,副本是在主分片之后创建的,它们将自动复制主分片中的所有数据。Elasticsearch使用复制协议来保持主分片和副本之间的数据同步。当主分片接收到新的文档时,它会将该文档写入本地的Lucene索引,并将该文档的副本分发给每个副本。每个副本都会将副本写入本地的Lucene索引,并将副本的确认发送回主分片。当主分片收到所有副本的确认时,该文档被视为成功索引。

副本数量的配置可以在索引创建时指定,也可以在索引创建后动态更改。下面是一些常用的副本管理API:

  • _shrink API 用于将现有索引缩小到一个较小的大小,并在缩小后的索引中重新分配副本。
  • _reindex API 用于将一个或多个索引中的文档重新索引到新的索引中,并在新的索引中重新分配副本。
  • _update_by_query API 用于更新一个或多个索引中的文档,并在新的索引中重新分配副本。

下面是一些有关副本管理的常见示例:

创建一个有3个副本的索引:

代码语言:javascript
复制
PUT /my_index
{
  "settings": {
    "number_of_replicas": 3
  },
  "mappings": {
    "properties": {
      "title": {
        "type": "text"
      },
      "author": {
        "type": "keyword"
      }
    }
  }
}

将现有索引缩小到一个较小的大小,并在缩小后的索引中重新分配副本:

代码语言:javascript
复制
POST /my_index/_shrink/my_shrunk_index
{
  "settings": {
    "index.number_of_replicas": 1
  }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 副本如何工作?
    • 创建一个有3个副本的索引:
      • 将现有索引缩小到一个较小的大小,并在缩小后的索引中重新分配副本:
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档