elasticSearch核心概念的介绍(十四):ES集群索引分片管理

这篇具有很好参考价值的文章主要介绍了elasticSearch核心概念的介绍(十四):ES集群索引分片管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上一章节我们对ES的集群进行了搭建,有兴趣的朋友可以参考一下elasticSearch核心概念的介绍(十三):docker搭建ES集群
这里我们来介绍了ES集群索引的分片管理

ES集群索引分片管理

介绍

  • 分片(shard):因为ES是个分布式的搜索引擎,所以索引通常都会分解成不同部分,而这些分布在不同节点的数据就是分片,ES自动管理和组织分片,并在必要的时候对分片数据进行再平衡分配,所以用户基本上不用担心分片的处理细节。
  • 副本(replica):ES默认为一个索引创建一个主分片,并分别为其创建一个副分片,也就是说每个索引都由一个主分片成本,而每个主分片都有相应的一个copy。
  • ES7.x之后,如果不指定索引分片,默认会创建一个主分片和一个副分片,而7.x版本之前的比较,如6.x版本,默认是5个主分片

下面我们来看看分片如何使用?

创建索引(不指定分片数量)
curl -X PUT "172.25.45.150:9200/nba" -H 'Content-Type:aplication/json' -d '
{
    "mappings": {
        "properties": {
            "birthDay": {
                "type": "date"
            },
            "birthDayStr": {
                "type": "keyword"
            },
            "age": {
                "type": "integer"
            },
            "code": {
                "type": "text"
            },
            "country": {
                "type": "text"
            },
            "countryEn": {
                "type": "text"
            },
            "displayAffiliation": {
                "type": "text"
            },
            "displayName": {
                "type": "text"
            },
            "displayNameEn": {
                "type": "text"
            },
            "draft": {
                "type": "long"
            },
            "heightValue": {
                "type": "float"
            },
            "jerseyNo": {
                "type": "text"
            },
            "playYear": {
                "type": "long"
            },
            "playerId": {
                "type": "keyword"
            },
            "position": {
                "type": "text"
            },
            "schoolType": {
                "type": "text"
            },
            "teamCity": {
                "type": "text"
            },
            "teamCityEn": {
                "type": "text"
            },
            "teamConference": {
                "type": "keyword"
            },
            "teamConferenceEn": {
                "type": "keyword"
            },
            "teamName": {
                "type": "keyword"
            },
            "teamNameEn": {
                "type": "keyword"
            },
            "weight": {
                "type": "text"
            }
        }
    }
}
'

创建之后我们在获取索引来看看分片数量

curl -X GET "172.25.45.150:9200/nba"

返回结果如关注下面这部分

"settings": {
            "index": {
                "creation_date": "1646360464892",
                "number_of_shards": "1", 
                "number_of_replicas": "1",
                "uuid": "oUWzENVEQVW_hXZlCdfQhg",
                "version": {
                    "created": "7040299"
                },
                "provided_name": "nba"
            }
        }

可以看到number_of_shards(主分片)和number_of_shards(副分片)的数量都是1。

将上述索引删除我们再来看看指定分片数量如何取创建

curl -X DELETE "172.25.45.150:9200/nba"
创建索引(指定分片数量)
  • settings
 "settings":{
        "number_of_shards":3,
        "number_of_replicas":1
    },
  • 创建索引
curl -X PUT "172.25.45.150:9200/nba" -H 'Content-Type:aplication/json' -d '
{
    "settings":{
        "number_of_shards":3,
        "number_of_replicas":1
    },
    "mappings": {
        "properties": {
            "birthDay": {
                "type": "date"
            },
            "birthDayStr": {
                "type": "keyword"
            },
            "age": {
                "type": "integer"
            },
            "code": {
                "type": "text"
            },
            "country": {
                "type": "text"
            },
            "countryEn": {
                "type": "text"
            },
            "displayAffiliation": {
                "type": "text"
            },
            "displayName": {
                "type": "text"
            },
            "displayNameEn": {
                "type": "text"
            },
            "draft": {
                "type": "long"
            },
            "heightValue": {
                "type": "float"
            },
            "jerseyNo": {
                "type": "text"
            },
            "playYear": {
                "type": "long"
            },
            "playerId": {
                "type": "keyword"
            },
            "position": {
                "type": "text"
            },
            "schoolType": {
                "type": "text"
            },
            "teamCity": {
                "type": "text"
            },
            "teamCityEn": {
                "type": "text"
            },
            "teamConference": {
                "type": "keyword"
            },
            "teamConferenceEn": {
                "type": "keyword"
            },
            "teamName": {
                "type": "keyword"
            },
            "teamNameEn": {
                "type": "keyword"
            },
            "weight": {
                "type": "text"
            }
        }
    }
}
'

继续来看看索引的分片

curl -X GET "172.25.45.150:9200/nba"
"settings": {
            "index": {
                "creation_date": "1646361232608",
                "number_of_shards": "3",
                "number_of_replicas": "1",
                "uuid": "m_z801WySBCVX-ujrGSv8g",
                "version": {
                    "created": "7040299"
                },
                "provided_name": "nba"
            }
        }

可以看到现在我们创建的索引分片数量已经为我们设置的了

索引分片分配
  • 分片分配到哪个节点是由ES自动管理的,如果某个节点挂了,那分配又会重新分配到别的节点上。
  • 在单机中,节点没有副分片,因为只有一个节点没必要生成分片,一个节点挂了,副分片也会挂掉,完全是单故障,没有存在的意义。
  • 在集群中,同个分片它的主分片和副分片不会在同一个节点上,因为主分片和副分片在同个节点,节点挂了,副分片和主分片一样是挂了,不要把鸡蛋都放在同个篮子里。
  • 可以手动移动分片,比如把某个分片移动从节点1移动到节点2.
  • 创建索引时指定的主分片数以后是无法修改的,所以主分片数的数量要根据项目决定,如果真的要增加主分片只能重建索引了。副分片数以后是可以修改的。

按照上述我们所创建的分片,有3个主分片,然后每个主分片都1个副分片,那么我们就存在6个分片。

如果装了kibana的可以通过Monitoring查看分片分布的情况。

elasticSearch核心概念的介绍(十四):ES集群索引分片管理

  • Primary:主分片
  • Replica:副分片
  • Relocating:分配中
  • Initializing:初始化
  • Unassigned Primary:未分片的主分片
  • Unassigned Replica:未分配的副分片
手动移动分片

将分片2从节点1移动到节点3

curl -X PUT "172.25.45.150:9200/_cluster/reroute" -H 'Content-Type:aplication/json' -d '
{
    "commands": [
        {
            "move": {
                "index": "nba",
                "shard": 2,
                "from_node": "node-1",
                "to_node": "node-3"
            }
        }
    ]
}
'

elasticSearch核心概念的介绍(十四):ES集群索引分片管理

修改副分片数量

上面我们提到了主分片的数量在索引创建后是无法修改的,如果想要进行修改就得重新创建一下索引,那么我们可以修改副分片的数量的。

curl -X PUT "http://172.25.45.150:9200/nba/_settings" -H 'Content-Type:application/json' -d '
{
	"number_of_replicas":2
}
'

查询所有

curl -X GET "http://172.25.45.150:9200/nba"
 "settings": {
            "index": {
                "creation_date": "1646361232608",
                "number_of_shards": "3",
                "number_of_replicas": "2",
                "uuid": "m_z801WySBCVX-ujrGSv8g",
                "version": {
                    "created": "7040299"
                },
                "provided_name": "nba"
            }
        }

可以看到副分片的数量变成了2个,现在每个主分片都存在2个副分片,那么现在我们就存在了9个分片,我们来看一下分片的分布

elasticSearch核心概念的介绍(十四):ES集群索引分片管理文章来源地址https://www.toymoban.com/news/detail-426631.html

到了这里,关于elasticSearch核心概念的介绍(十四):ES集群索引分片管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • ES命令行查询es集群的状态、分片、索引

    查看es集群状态 查看es分片信息 查看es索引 查看ES索引 本文参考:https://www.cnblogs.com/expiator/p/14847705.html

    2024年02月12日
    浏览(29)
  • ElasticSearch的集群、节点、索引、分片和副本

    Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档。为了方便大家理解,我们将Elasticsearch里存储文档数据和关系型数据库MySQL存储数据的概念进行一个类比 ES里的Index可以看做一个库,而Types相当于表,Documents则相当于表的行。 这里Types的概念已经被逐渐弱化,E

    2024年02月02日
    浏览(88)
  • elasticsearch——ES集群分片不平衡处理

    在使用云上的一个ES集群的时候,发现搜索性能很差,查看分片情况,发现ES有12个节点,索引创建了10个分片,1个副本,最后20个分片全在其中3个节点上,分布不均衡,实际只消耗了3个节点的资源,所以性能很差,再次创建新的索引,发现仍然是这种情况,最后通过下面的命

    2024年02月13日
    浏览(27)
  • 【ElasticSearch系列-07】ES的开发场景和索引分片的设置及优化

    ElasticSearch系列整体栏目 内容 链接地址 【一】ElasticSearch下载和安装 https://zhenghuisheng.blog.csdn.net/article/details/129260827 【二】ElasticSearch概念和基本操作 https://blog.csdn.net/zhenghuishengq/article/details/134121631 【三】ElasticSearch的高级查询Query DSL https://blog.csdn.net/zhenghuishengq/article/details/1

    2024年02月03日
    浏览(33)
  • ES是一个分布式全文检索框架,隐藏了复杂的处理机制,核心数据分片机制、集群发现、分片负载均衡请求路由

    ES是一个分布式框架,隐藏了复杂的处理机制,核心数据分片机制、集群发现、分片负载均衡请求路由。 ES的高可用架构,总体如下图: 说明:本文会以pdf格式持续更新,更多最新尼恩3高pdf笔记,请从下面的链接获取:语雀 或者 码云 ES基本概念名词 Cluster 代表一个集群,集

    2024年02月10日
    浏览(30)
  • es 集群核心概念以及实践

    节点是一个Elasticsearch的实例 本质上就是一个JAVA进程 一台机器上可以运行多个Elasticsearch进程,但是生产环境一般建议一台机器上只运行一个Elasticsearch实例 每一个节点都有名字,通过配置文件配置,或者启动时候 -E node.name=node1指定 每一个节点在启动之后,会分配一个UID,保

    2024年04月22日
    浏览(25)
  • 【ELK02】ES的重要核心概念和索引常用操作-索引文档管理、文档搜索

    1.1索引(index) 类似于关系型数据中的库-database ,一个es的集群中可以有多个索引,每个索引都是一批独立的存储数据,按照一定的数据结构保存,方便查询. 1.2类型(type) 类似于关系型数据库中的表格-table ,一个索引中可以有多个类型,每个类型中的数据结构是一致的. 注意:6.x中使用类

    2024年02月04日
    浏览(29)
  • 【elasticsearch】修改es集群的索引副本数量

    最近海外es集群进行调整,从3节点变成了单节点。所以需要将集群模式改为单点模式,并需要将es 集群的全部索引副本个数改为0,不然会有很多未分配的分片,导致集群状态为 yellow 。 1. 先将现有的index的副本数量为0个 此步骤是为了解决现有的索引副本数。 2. 创建模板匹配

    2024年02月11日
    浏览(35)
  • elasticsearch修改es集群的索引副本数量

    最近es集群进行调整,从2节点变成了单节点。所以需要将集群模式改为单点模式,并需要将es 集群的全部索引副本个数改为0,不然会有很多未分配的分片,导致集群状态为 yellow。 1. 先将现有的index的副本数量为0个 此步骤是为了解决现有的索引副本数。 2. 创建模板匹配所有

    2024年02月08日
    浏览(36)
  • 简述Elasticsearch(ES)是什么 全文搜索概念 (倒排索引 管理文档)

    今天 我们来说说 NoSql 中的 Elasticsearch 大家基本都叫它 ES 官方介绍 它是一个分布式全文搜索引擎 分布式是一个系统架构的概念 而 全文搜索引擎 全文搜索 可以说基本大家天天都在接触 就比如 我们京东购物 想买什么东西 在全文输入框中搜索 它就会在所有物品中 帮你找出需

    2024年01月25日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包