ElasticSearch基本概念
# 一、索引
索引可以理解为文档的归类,对比MySQL就是表。
索引的基本格式如下:
{
"shopping" : {
"aliases" : { },
"mappings" : {
"properties" : {
"category" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"images" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"price" : {
"type" : "float"
},
"title" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
}
},
"settings" : {
"index" : {
"creation_date" : "1684457924330",
"number_of_shards" : "1",
"number_of_replicas" : "1",
"uuid" : "pTIeeeSpTAq267GMTIOn0w",
"version" : {
"created" : "7010099"
},
"provided_name" : "shopping"
}
}
}
}
- mapping是映射关系,可以理解为对字段的定义。
- properties属性下就是对应这个索引下有那些字段。
# 二、文档
文档可以理解为ES操作的最小单元,对比MySQL就是数据行。
文档的基本格式如下:
{
"_index" : "shopping",
"_type" : "_doc",
"_id" : "1",
"_score" : 1.0,
"_source" : {
"title" : "小米手机",
"category" : "小米",
"images" : "photo.jpg",
"price" : 3999.0
}
}
- _index:索引
- _id:主键
- _score:相关性打分
- _source:文档原始json数据
# 三、字段
文档的元数据为一个json格式,其中有对应的属性,这个属于就是字段,对比MySQL就是我们的列(字段)。
现在我们把以上概念和MySQL进行类比:
Elasticsearch 7.X 中, Type 的概念已经被删除了。
# 四、节点
节点是一个ES的实例,本质上它就是一个Java进程。
- Data Node:数据存储的节点,复制保存分片的数据,在数据扩展上起到重要作用。
- Coordinating Node:负责接收Client请求,将请求分发到合适的节点。
# 五、分片
分片主要两种:主分片和副本分片:
- 主分片:是用来解决数据水平扩展问题,通过主分片就可以把数据分布到集群内的所有节点上。
- 副本分片:用来解决数据高可用问题,是主分片的副本。
# 六、集群
集群相当于所有节点的汇总,可以通过如下命令对集群状态进行查看:
# 查看集群的状态
GET _cluster/health
- Green:主分片和副本都分配正常。
- Yellow:主分片全部分配完成,有副本分片未能正常分配。
- Red:有主分片未分配。
# 参考
上次更新: 2024/06/29, 15:13:44