Es的存储
es存储原理
Elasticsearch中的索引(index)是数据存储的基本单元,类似于关系数据库中的表(table)。它用于存储、检索和管理数据。每个索引由一组文档组成,文档是Elasticsearch中的最小数据单元。每个文档都表示一条记录,包含多个字段和相应的值。以下是ES索引的一些关键特点:
- 索引的创建:
- 在Elasticsearch中,可以根据数据类型和需求创建多个索引,每个索引有唯一的名称,可以在操作时指定。
- 创建索引时需要定义映射(mapping),映射定义了文档中字段的数据类型以及如何处理和存储这些字段。
- 文档和分片:
- 一个索引可以分为多个分片(shard),每个分片都可以独立存储一部分数据,分片可以分布在不同节点上,从而实现数据分布式存储和水平扩展。
- 分片分为主分片和副本分片,主分片用于存储原始数据,副本分片用于数据冗余和容错。
- 索引操作:
- 索引中的文档可以通过多种方式搜索和操作,如精确匹配、全文搜索、聚合查询等。
- 文档的CRUD(创建、读取、更新、删除)操作通过Elasticsearch的REST API实现。
- 索引的生命周期管理:
- Elasticsearch提供了索引生命周期管理(ILM),可以帮助用户自动化索引的创建、存储优化、过期删除等操作。
es监控状态颜色
在Elasticsearch中,集群的健康状态通常用颜色来表示,主要有三种颜色:绿色、黄色和红色。每种颜色代表集群的不同健康状况:
- 绿色(Green):
- 集群处于完全健康状态,所有的主分片(primary shard)和副本分片(replica shard)都分配到节点上。
- 数据冗余正常,没有数据丢失的风险。
- 这是集群的理想状态,意味着数据可以高效访问,并且即使某些节点发生故障,数据也不会丢失。
- 黄色(Yellow):
- 集群部分健康,所有的主分片都已分配,但部分或所有的副本分片未分配。
- 数据是可用的,因为主分片都在正常工作,但副本分片没有分配到其他节点上,意味着如果某个节点发生故障,可能会丢失冗余数据,从而影响数据的高可用性。
- 这种状态通常发生在只有一个节点的集群中,因为没有额外的节点可以存放副本分片。
- 红色(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: 主分片的存储大小。
查看单个索引
GET 10.0.0.101:9200/es001
创建索引
自动创建:默认情况下,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: 副本数量
不能创建超过主机副本数量 副本分片的数量超过了集群中的节点数
例如: 3台的集群
{
"settings":{
"number_of_shards": 3,
"number_of_replicas":3
}
}
三个分页 mei
修改索引
curl -XPUT 10.0.0.101:9200/es002/_settings
{
"number_of_replicas": 1
}
### 不能修改分页 也不能增加 减少分页
【文档写入哪个分片编号计算公式: hash(文档ID) % primary_shards_numbers】
已经存储的数据 记录到指定分页上 以后无法寻找 无法查询
删除索引
(1)删除单个索引
curl -XDELETE 10.0.0.101:9200/es001-index
(2)基于通配符删除多个索引
curl -XDELETE 10.0.0.101:9200/es*
索引的别名(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"
}
}
]
}
查看别名
### 查看全部 索引别名
GET http://10.0.0.101:9200/_aliases
### 查看指定索引别名
http://10.0.0.101:9200/es003/_alias
删除别名
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"
}
}
]
}
索引的开关
### 关闭指定索引
POST 10.0.0.101:9200/es001/_close
### 开启指定索引
POST 10.0.0.101:9200/es001/_open