首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Elasticsearch 基本概念- Shard

Elasticsearch 基本概念- Shard

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

Shard 的基本概念

Shard 是 Elasticsearch 中存储数据的最小单位。每个索引都被分成多个 Shard,每个 Shard 都是一个 Lucene 索引,用于存储和索引数据。当我们往索引中添加数据时,Elasticsearch 会自动将数据分配到不同的 Shard 上。

Shard 可以分为两种类型:Primary Shard 和 Replica Shard。Primary Shard 是数据的主要分片,负责处理所有的索引请求,每个索引至少有一个 Primary Shard。而 Replica Shard 是 Primary Shard 的备份,用于提供高可用性和容错性。在一个 Elasticsearch 集群中,多个节点可以存储同一个 Shard 的副本,当 Primary Shard 发生故障时,Elasticsearch 会自动将其中一个 Replica Shard 升级为 Primary Shard,以保证数据的可用性。

Shard 的操作

在 Elasticsearch 中,我们可以对 Shard 进行一些基本的操作,包括创建、删除、移动和合并。

创建 Shard

当我们创建一个新的索引时,Elasticsearch 会自动为该索引创建一定数量的 Primary Shard,并将这些 Primary Shard 分配到不同的节点上。我们可以在创建索引时指定 Primary Shard 的数量,例如:

代码语言:javascript
复制
PUT /my_index
{
  "settings": {
    "number_of_shards": 5
  }
}

这个请求将创建一个名为 my_index 的索引,并将其分成 5 个 Primary Shard。

删除 Shard

我们可以通过删除索引的方式删除 Shard,例如:

代码语言:javascript
复制
DELETE /my_index

这个请求将删除名为 my_index 的索引及其所有的 Shard。

移动 Shard

当我们需要将一个 Shard 从一个节点移动到另一个节点时,可以使用 shard allocation API。例如,我们可以将 Shard 0 移动到节点 node2 上:

代码语言:javascript
复制
POST /_cluster/reroute
{
  "commands": [
    {
      "move": {
        "index": "my_index",
        "shard": 0,
        "from_node": "node1",
        "to_node": "node2"
      }
    }
  ]
}

合并 Shard

当我们需要减少 Shard 的数量或合并小的 Shard 以优化查询性能时,可以使用 shard allocation API 手动执行 Shard 合并操作。例如,我们可以将名为 my_index 的索引中的所有 Primary Shard 合并成一个 Shard:

代码语言:javascript
复制
# 创建一个包含两个主分片和一个副本分片的索引
PUT /my_index
{
  "settings": {
    "number_of_shards": 2,
    "number_of_replicas": 1
  }
}

# 获取索引的分片信息
GET /my_index/_shard_stores

# 获取特定分片的信息
GET /my_index/_shard_stores?status=green&pretty&index.uuid={shard_uuid}&index={index_name}&shard={shard_number}

# 查看特定分片中的文档
GET /my_index/_search?preference={shard_prefernece}

# 查看特定文档所在的分片
GET /my_index/_search_shards?routing={document_id}

# 修改副本分片数量
PUT /my_index/_settings
{
  "index" : {
    "number_of_replicas" : 2
  }
}

# 查看分片状态
GET /_cluster/health?level=shards

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Shard 的基本概念
  • Shard 的操作
    • 创建 Shard
    • 删除 Shard
    • 移动 Shard
    • 合并 Shard
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档