Es的存储


es存储原理

image-20241004142101283

Elasticsearch中的索引(index)是数据存储的基本单元,类似于关系数据库中的表(table)。它用于存储、检索和管理数据。每个索引由一组文档组成,文档是Elasticsearch中的最小数据单元。每个文档都表示一条记录,包含多个字段和相应的值。以下是ES索引的一些关键特点:

  1. 索引的创建
    • 在Elasticsearch中,可以根据数据类型和需求创建多个索引,每个索引有唯一的名称,可以在操作时指定。
    • 创建索引时需要定义映射(mapping),映射定义了文档中字段的数据类型以及如何处理和存储这些字段。
  2. 文档和分片
    • 一个索引可以分为多个分片(shard),每个分片都可以独立存储一部分数据,分片可以分布在不同节点上,从而实现数据分布式存储和水平扩展。
    • 分片分为主分片和副本分片,主分片用于存储原始数据,副本分片用于数据冗余和容错。
  3. 索引操作
    • 索引中的文档可以通过多种方式搜索和操作,如精确匹配、全文搜索、聚合查询等。
    • 文档的CRUD(创建、读取、更新、删除)操作通过Elasticsearch的REST API实现。
  4. 索引的生命周期管理
    • Elasticsearch提供了索引生命周期管理(ILM),可以帮助用户自动化索引的创建、存储优化、过期删除等操作。

es监控状态颜色

在Elasticsearch中,集群的健康状态通常用颜色来表示,主要有三种颜色:绿色黄色红色。每种颜色代表集群的不同健康状况:

  1. 绿色(Green)
    • 集群处于完全健康状态,所有的主分片(primary shard)和副本分片(replica shard)都分配到节点上。
    • 数据冗余正常,没有数据丢失的风险。
    • 这是集群的理想状态,意味着数据可以高效访问,并且即使某些节点发生故障,数据也不会丢失。
  2. 黄色(Yellow)
    • 集群部分健康,所有的主分片都已分配,但部分或所有的副本分片未分配。
    • 数据是可用的,因为主分片都在正常工作,但副本分片没有分配到其他节点上,意味着如果某个节点发生故障,可能会丢失冗余数据,从而影响数据的高可用性。
    • 这种状态通常发生在只有一个节点的集群中,因为没有额外的节点可以存放副本分片。
  3. 红色(Red)
    • 集群不健康,部分主分片没有分配到任何节点,意味着某些数据是不可用的。
    • 在这种状态下,集群中的部分或全部数据无法访问,可能因为节点故障、配置错误或其他问题导致。
    • 如果出现红色状态,应该尽快修复,否则有数据丢失的风险。

总结:

  • 绿色:一切正常,主分片和副本分片都正常运行。
  • 黄色:主分片正常,但副本分片未能分配,有一定风险。
  • 红色:主分片丢失,数据无法访问,需紧急处理。

索引的管理

	- 索引的管理
		- PUT http://10.0.0.101:9200/index_name   				##创建索引
		- POST http://10.0.0.101:9200/index_name/_settings       ## 修改索引
		- DELETE http://10.0.0.101:9200/index_name				## 删除索引
		- GET http://10.0.0.101:9200/index_name		  		  	 ## 查看单个索引信息
		- GET http://10.0.0.101:9200/_cat/indices				##查看所有索引
		- POST http://10.0.0.101:9200/index_name/_close			## 关闭索引
		- POST http://10.0.0.101:9200/index_name/_open			## 开启索引
		- POST http://10.0.0.101:9200/_alias					## 索引别名

查看索引

查看所有索引
GET 10.0.0.101:9200/_cat/indices
?v是一个可选参数,用来在返回结果中显示列名,使结果更加清晰易读。
health: 索引的健康状态(green、yellow或red)。
status: 索引的状态(open表示索引是开放的,close表示索引已关闭)。
index: 索引的名称。
uuid: 索引的唯一标识符。
pri: 索引的主分片数量。
rep: 副本分片的数量。
docs.count: 索引中文档的数量。
docs.deleted: 索引中已删除但尚未物理移除的文档数量。
store.size: 索引的存储大小。
pri.store.size: 主分片的存储大小。

image-20241004142746252

查看单个索引
GET 10.0.0.101:9200/es001

image-20241005144950590

创建索引

自动创建:默认情况下,Elasticsearch在第一次向一个不存在的索引写入数据时,会自动创建该索引。
创建一个指定分页和副本的索引
curl -XPUT 10.0.0.101:9200/es001-index
{
    "settings":{
        "number_of_shards": 5,
        "number_of_replicas":2
    }
}

## 默认创建一个索引一个分片
number_of_shards: 分页数量
number_of_replicas: 副本数量

image-20241004143940610

image-20241004144056252

不能创建超过主机副本数量    副本分片的数量超过了集群中的节点数
例如: 3台的集群

{
    "settings":{
        "number_of_shards": 3,
        "number_of_replicas":3
    }
}

三个分页  mei

image-20241004144748573

修改索引

curl -XPUT 10.0.0.101:9200/es002/_settings
{
    "number_of_replicas": 1
}

image-20241004150827337

### 不能修改分页  也不能增加 减少分页  

【文档写入哪个分片编号计算公式: hash(文档ID) % primary_shards_numbers】

已经存储的数据  记录到指定分页上  以后无法寻找 无法查询

删除索引

	(1)删除单个索引
curl -XDELETE 10.0.0.101:9200/es001-index

	(2)基于通配符删除多个索引
curl -XDELETE 10.0.0.101:9200/es*

image-20241004151335732



索引的别名(aliases)

添加别名

POST http://10.0.0.101:9200/_aliases
{
    "actions": [
        {
            "add": {
                "index": "es001",
                "alias": "aaaaaa"
            }
        },
        {
            "add": {
                "index": "es002",
                "alias": "bbbbbb"
            }
        },
        {
            "add": {
                "index": "es003",
                "alias": "cccccc"
            }
        }
    ]
}

image-20241004152030922

image-20241004152050230

查看别名

### 查看全部 索引别名
GET http://10.0.0.101:9200/_aliases

### 查看指定索引别名
http://10.0.0.101:9200/es003/_alias

image-20241004152348385

image-20241004152752867

删除别名

POST http://10.0.0.101:9200/_aliases

{
    "actions": [
        {
            "remove": {
                "index": "es003",
                "alias": "cccccc"
            }
        }
    ]
}

修改别名

POST http://10.0.0.101:9200/_aliases

{
    "actions": [
        {
            "remove": {
                "index": "es001",
                "alias": "aaaaaa"
            }
        },
        {
            "add": {
                "index": "es001",
                "alias": "yyyyyy"
            }
        }
    ]
}

image-20241004153258576



索引的开关

### 关闭指定索引
POST 10.0.0.101:9200/es001/_close

### 开启指定索引
POST 10.0.0.101:9200/es001/_open

image-20241004153643594

image-20241004153930466