ElasticSearch--分片和副本--原理

这篇具有很好参考价值的文章主要介绍了ElasticSearch--分片和副本--原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原文网址:ElasticSearch--分片和副本--原理_IT利刃出鞘的博客-CSDN博客

简介

说明

本文介绍ES的分片和副本的原理。

粉丝福利:有很多粉丝私信问我有没有Java的面试及PDF书籍等资料,我整理一下,包含:真实面试题汇总、简历模板、PDF书籍、PPT模板等。这些是我自己也在用的资料,面试题是面试官问到我的问题的整理,其他资料也是我自用的,真正实用、靠谱。资料可以从这里免费获取:资料地址

什么是分片

Elasticsearch集群允许系统存储的数据量超过单机容量,这是通过shard实现的。在一个索引index中,数据(document)被分片处理(sharding)到多个分片上。也就是说:每个分片都保存了全部数据中的一部分。

一个分片是一个 Lucene 的实例,它本身就是一个完整的搜索引擎。文档被存储到分片内,但应用程序直接与索引而不是与分片进行交互。

什么是副本

说明

为了解决访问压力过大时单机无法处理所有请求的问题,Elasticsearch集群引入了副本策略replica。副本策略对index中的每个分片创建冗余的副本。

副本的作用如下:

1. 提高系统容错性

当分片所在的机器宕机时,Elasticsearch可以使用其副本进行恢复,从而避免数据丢失。

2. 提高ES查询效率

处理查询时,ES会把副本分片和主分片公平对待,将查询请求负载均衡到副本分片和主分片。

副本分片是越多越好吗?

答案当然是 no ,原因有以下两点:

(1)多个 replica 可以提升搜索操作的吞吐量和性能,但是如果只是在相同节点数目的集群上增加更多的副本分片并不能提高性能,因为每个分片从节点上获得的资源会变少,这个时候你就需要增加更多的硬件资源来提升吞吐量。

(2)更多的副本分片数提高了数据冗余量,保证了数据的完整性,但是根据上边主副分片之间的交互原理可知,分片间的数据同步会占用一定的网络带宽,影响效率,所以索引的分片数和副本数也不是越多越好。

设置分片与副本的方法

创建索引的命令:

PUT /my_temp_index
{
    "settings": {
        "number_of_shards" :   5,
        "number_of_replicas" : 1
    }
}
  • number_of_shards
    • 每个索引的主分片数,默认值是 5 。
    • 这个配置在索引创建后不能修改。这里和索引分片的算法有关,因为索引通过取模算法判断分到哪个分片,如果改变了主分片数就无法正常查询之前的索引。
  • number_of_replicas
    • 每个主分片的副本数,默认值是 1 。
    • 这个配置可以修改。

分片示例

示例1:启动2个ES节点。创建5个分片,1个副本

结果如下:

ElasticSearch--分片和副本--原理

也就是:

ElasticSearch--分片和副本--原理

上图中,黄色的代表主分片,绿色的是副本。可以发现,分片与其副本不在同一个节点内。这是非常合理的,因为副本本来就是主分片的备胎,当主分片节点挂了,另外一个节点的副本将会充当主分片,如果它们在同一个节点内,副本将发挥不到作用。

示例2:启动3个ES节点。创建5个分片,1个副本

ElasticSearch--分片和副本--原理

分片的路由原理

见 :ElasticSearch--分片的路由原理_IT利刃出鞘的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-407087.html

到了这里,关于ElasticSearch--分片和副本--原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch 的节点、集群、分片和副本 全面解析

    节点是 Elasticsearch 实例的运行实例,即一个独立的 Elasticsearch 服务进程。每个节点都是一个独立的工作单元,负责存储数据、参与数据处理(如索引、搜索、聚合等)以及参与集群的协调工作。节点可以在物理或虚拟机上单独部署,也可以在同一台机器上运行多个节点(但需

    2024年04月27日
    浏览(39)
  • Elasticsearch索引优化指南:分片、副本、mapping和analyzer

    Elasticsearch是一个开源的分布式搜索引擎,它的数据存储和查询速度非常快。然而,在面对大规模的数据集和高并发访问时,Elasticsearch的性能也可能受到一些影响。为了最大程度地提高Elasticsearch的性能,我们需要对索引进行优化。本篇博客将介绍Elasticsearch索引优化的几个关键

    2024年02月20日
    浏览(47)
  • ElasticSearch修改分片数和副本数及增加字段

    一、修改副本数 PUT test/_settings {     \\\"index\\\": {         \\\"number_of_replicas\\\" : 1     } } 二、修改分片数 ElasticSearch中的数据会被分别存储在不同的分片上,索引库的分片数量是在索引库创建的时候通过settings去设置的,如果不设置,分片数默认是5,分片数一旦确定就不能改变。如果

    2024年02月05日
    浏览(46)
  • 【Elasticsearch】索引恢复(recovery)流程梳理之副本分片数据恢复

    也是因为应用新的集群状态触发recovery,进入index阶段 进入translog 阶段。先尝试重放本地的translog到global checkpoint 向primary shard发起start recovery的请求,请求包含replica的localCheckpoint+1。(如果第二步重放translog了,localCheckpoint自然也会增加) 如果开启了soft delete并且索引是7.4版本

    2024年01月20日
    浏览(46)
  • 04_手工画图剖析Elasticsearch核心概念:NRT、索引、分片、副本等

    2.elasticsearch的核心概念 (1)Near Realtime (NRT):近实时, 从写入数据到数据可以被搜索到有一个小延迟(大概1秒);基于es执行搜索和分析可以达到秒级 (2) cluster集群:包括多个节点, 每个节点属于哪个集群是通过一个配置(集群名称,默认是elasticsearch)来决定的, 对于中小型

    2024年02月09日
    浏览(54)
  • ElasticSearch数据库修改分片数、副本数及修改mapping字段

            对于已经存在的索引,副本数可以随时修改。 示例演示如下:         ElasticSearch中的数据会被分别存储在不同的分片上,索引库的分片数量是在索引库创建的时候通过settings去设置的,如果不设置,分片数默认是5,分片数一旦确定就不能改变。分片数量的设

    2024年02月02日
    浏览(48)
  • ClickHouse进阶(五):副本与分片-1-副本与分片

    进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容! 🏡个人主页:含各种IT体系技术, IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客 📌订阅:拥抱独家专题,你的订阅将点燃我的创作热情! 👍点赞:赞同优秀创作,你

    2024年02月10日
    浏览(36)
  • ES分片和副本

    通过该图, 记住下面的几个定义: 集群(cluster):由一个或多个节点组成, 并通过集群名称与其他集群进行区分 es集群一般有几个master 一个 “ • 一个正常es集群中只有一个主节点(Master),主节点负责管理整个集群。 节点(node):单个ElasticSearch实例. 通常一个节点运行在一个隔离的容器

    2024年02月09日
    浏览(46)
  • ClickHouse进阶(五):副本与分片-1-

    进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容! 🏡个人主页:含各种IT体系技术, IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客 📌订阅:拥抱独家专题,你的订阅将点燃我的创作热情! 👍点赞:赞同优秀创作,你

    2024年02月10日
    浏览(40)
  • ES更改默认分片数量及副本

    ES更改默认分片数量及副本 KIBANA方式 POST _template/default_template { \\\"index_patterns\\\": [ \\\"*\\\" ], \\\"settings\\\": { \\\"number_of_shards\\\": 3, \\\"number_of_replicas\\\": 1 } } *代表所有索引 POST _template/microsvclog_template { \\\"index_patterns\\\": [ \\\"*microsvclog*\\\" ], \\\"settings\\\": { \\\"number_of_shards\\\": 3, \\\"number_of_replicas\\\": 1 } }

    2024年02月08日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包