在 Elasticsearch 中,每个副本都是一个完整的分片拷贝。这意味着副本中包含与主分片相同的所有数据,并且可以完全独立地提供服务。
当索引操作在主分片上执行时,Elasticsearch 会自动将这些操作传播到副本分片上,以便在发生故障时进行故障转移。这些操作包括文档索引、更新和删除等操作。
如果主分片变为不可用状态,Elasticsearch 会自动从可用的副本中选择一个作为新的主分片。选择新的主分片的过程称为选举。Elasticsearch 会选择具有最高副本。
对于一个拥有多个副本的索引,Elasticsearch会将每个副本分配到不同的节点上,以保证索引的高可用性。当一个主分片出现故障时,Elasticsearch会从它的副本中自动选举一个新的主分片,使得数据的可用性不受影响。
副本的数量可以在索引创建时指定。每个主分片可以有0个或多个副本。副本的数量不仅影响到索引的可用性,还影响到搜索性能。由于副本可以跨越多个节点,因此它们可以并行地处理搜索请求,从而提高搜索速度。
在索引中,副本是在主分片之后创建的,它们将自动复制主分片中的所有数据。Elasticsearch使用复制协议来保持主分片和副本之间的数据同步。当主分片接收到新的文档时,它会将该文档写入本地的Lucene索引,并将该文档的副本分发给每个副本。每个副本都会将副本写入本地的Lucene索引,并将副本的确认发送回主分片。当主分片收到所有副本的确认时,该文档被视为成功索引。
副本数量的配置可以在索引创建时指定,也可以在索引创建后动态更改。下面是一些常用的副本管理API:
_shrink
API 用于将现有索引缩小到一个较小的大小,并在缩小后的索引中重新分配副本。_reindex
API 用于将一个或多个索引中的文档重新索引到新的索引中,并在新的索引中重新分配副本。_update_by_query
API 用于更新一个或多个索引中的文档,并在新的索引中重新分配副本。下面是一些有关副本管理的常见示例:
PUT /my_index
{
"settings": {
"number_of_replicas": 3
},
"mappings": {
"properties": {
"title": {
"type": "text"
},
"author": {
"type": "keyword"
}
}
}
}
POST /my_index/_shrink/my_shrunk_index
{
"settings": {
"index.number_of_replicas": 1
}
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。