分享:Elasticsearch教程-基本概念

版权声明:本文为神州灵云作者的原创文章,未经神州灵云允许不得转载。

本文作者:Kun

Elasticsearch教程-基本概念

Cluster(集群)

  • 集群可以由一个或者任意多个节点组成
  • 集群中每个节点拥有部分数据,所有节点一起拥有全部数据
  • 集群提供跨所有节点的索引和搜索功能
  • 集群名称(默认为elasticsearch)相同的节点会加入同一个集群,必须避免不同的集群使用相同的名称

集群会通过选举产生一个Master节点,其主要作用之一,就是决定哪些分片被分配到哪些节点,以及何时在节点间移动分片以重新平衡集群。

Node(节点)

  • 启动Elasticsearch服务产生的实例就是一个节点
  • 启动时默认会分配一个随机的UUID作为节点名称
  • 可通过配置节点的集群名称(默认为elasticsearch)来加入一个特定的集群,多个拥有相同集群名称的节点会自动连接组成集群
  • 一个集群可以由任意多个节点组成,如果没有其他节点拥有相同的集群名称,启动一个新节点默认会产生一个对应集群名称(默认为elasticsearch)的集群
  • 所有节点都知道集群中的其他节点,并且能够把客户端请求转发到适当的节点
  • 节点有候选主节点、数据节点、预处理节点和协调节点几种类型(一个节点默认即为候选主节点,又是数据节点,还是预处理节点),集群规模很大的时候,合理地区分/分配节点的角色是非常重要的

Index(索引)

  • 索引相当于关系型数据库的数据库

    类型
    关系型数据库 Databases Tables Rows Columns
    Elasticsearch Indices Types Documents Fields
  • 索引只是一个用来指向一个或者多个分片的"逻辑命名空间"

  • 一个集群中可以定义任意多个索引

  • 索引名称必须为小写

Type(类型)

  • 类型(type)是用来在同一个索引中存储不同类型文档的逻辑分类/划分,从6.0.0版本开始被弃用
  • 从6.x版本开始,一个索引只允许包含一个类型(type)
  • 同一个索引中拥有相同名称字段的不同类型(type),在内部却是使用一样的Lucene字段存储,因此不同的类型(type)也应该有相似的结构(schema),比如名称相同的字段不能既是字符串又是数值

Document(文档)

  • 索引里面的每一条记录称为文档,文档是可以被索引的基本信息单元
  • 在Elasticsearch中,文档特指最顶层结构或者根对象序列化成的JSON数据
  • 同一个索引里面的文档,不严格要求有相同的结构(schema),结构相同时搜索效率最高

Mapping(映射)

  • 类似于关系型数据库中的表结构
  • 映射定义了文档及其包含的字段如何被索引和存储

Shards(分片)

  • 一个索引有可能存储了非常大量的数据,这些数据超过了单一节点的硬件存储能力
  • 一个索引可以被切分为很多部分,每个部分称为一个分片
  • 一个分片是一个全功能的独立的(Lucene)索引,可以被存储在任何一个节点上
  • 创建索引的时候,可以指定(主)分片的数量(不可更改)
  • 利用分片,可以横向拆分/扩展索引的内容量,可以跨分片(有可能是多节点)达到分布式的并行操作以增加性能和吞吐

Replicas(复制分片)

  • 复制分片是分片的副本

  • 提供了分片或者节点失败情况下的高可用性(复制分片永远不会与其对应分片存在于同一个节点)

  • 扩展了搜索能力,因为搜索请求可以在所有的分片/复制分片上被并行执行

  • 可以通过API动态修改索引的复制分片数量

  • 每一个索引默认拥有5个(主)分片和1个复制分片

你可能感兴趣的:(分享:Elasticsearch教程-基本概念)