ES 入门篇 基础概念

文档(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核心技术与实战》

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注