文档(document)
elasticsearch 是面向文档的,文档是所有可搜索数据的最小单位。例如说是一篇文章,一首歌的详细信息,会被序列化成json格式保存在elasticsearch。每个文档都有对应的unique id,一篇文档包含了一系列字段,类似于mysql中的一条记录。
元数据
元数据,用于标注文档的相关信息
- _index – 文件所属的索引名
- _type – 文档所属的类型名
- _id – 文档的唯一ID
- _source – 文档的原始json数据
- _version – 文档版本号
- _score – 相关性打分
索引(index)
索引(名词):
一个索引类似于传统关系数据库中的一个数据库,是一个存储关系型文档的地方。 索引(index)的复数词为indices或indexes 。
索引(动词):
索引一个文档 就是存储一个文档到一个索引(名词)中以便被检索和查询。这非常类似于SQL语句中的INSERT关键词,除了文档已存在时,新文档会替换旧文档情况之外。
类型(type)
类型(type)在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。通常,会为具有一组相同字段的文档定义一个类型。比如说,我们假设你运营一个博客平台 并且将你所有的数据存储到一个索引中。在这个索引中,你可以为用户数据定义一个类型,为博客数据定义另一个类型,当然,也可以为评论数据定义另一个类型。(7.0版本以后一个索引只能创建一种类型)
集群(cluster)
一个集群就是由一个或多个节点组织在一起,它们共同持有全部的数据,并一起提供索引和搜索功能。
节点(node)
- 节点就是一个elasticsearch实例,一台机器同时启动多个实例,也就是多个节点
- 每一个节点都有对应的名称,通过配置文件配置
- 启动时会分配对应UID
当一个节点被选举成为主节点时,它将负责管理集群范围内的所有变更,例如增加、删除索引,或者增加、删除节点等。而主节点并不需要涉及到文档级别的变更和搜索等操作,所以当集群只拥有一个主节点的情况下,即使流量的增加它也不会成为瓶颈。任何节点都可以成为主节点。
分片
Index是逻辑上同类数据组合,从物理存储上,一个Index上的数据将被 Hash分配到不同的 Node。每个物理上存储数据的最小单元即为Shard。通常,一个Cluster有多个Shard,一个Index上的数据将被存储于不同的Shard上
副本分片
副本分片只是对主分片数据的备份。当某一个主分片因某些原因挂掉了,副本分片将被提升为主分片。主分片和副本分片不会位于同一个Node中。
参考资料:
- Elasticsearch 权威指南
- 极客时间专栏 《Elasticsearch核心技术与实战》