美文网首页
Elasticsearch基本概念

Elasticsearch基本概念

作者: Splunker | 来源:发表于2019-12-12 22:08 被阅读0次

索引

  • 索引是文档的容器,是一类文档的集合

    1. index 体现了逻辑空间的概念: 每个索引都有自己的Mapping定义,用于定义包含的文档的字段名和字段类型。
    2. Shard 体现了物理空间的概念:索引中的数据分散在Shard上。
  • 索引这个词在 ElasticSearch 会有三种意思:

    1. 索引(名词)
      类比传统的关系型数据库领域来说,索引相当于SQL中的一个数据库(Database)。索引由其名称(必须为全小写字符)进行标识。
    2. 索引(动词)
      保存一个文档到索引(名词)的过程。这非常类似于SQL语句中的 INSERT关键词。如果该文档已存在时那就相当于数据库的UPDATE。
    3. 倒排索引
      关系型数据库通过增加一个B+树索引到指定的列上,以便提升数据检索速度。索引ElasticSearch 使用了一个叫做 倒排索引 的结构来达到相同的目的。
  • 与关系型数据库的类比



Type

Type 可以理解成关系数据库中Table。
之前的版本中,索引和文档中间还有个类型的概念,每个索引下可以建立多个类型,文档存储时需要指定index和type。从6.0.0开始单个索引中只能有一个类型,7.0.0以后将将不建议使用,8.0.0 以后完全不支持。

弃用该概念的原因:
  1. 我们虽然可以通俗的去理解Index比作 SQL 的 Database,Type比作SQL的Table。但这并不准确,因为如果在SQL中,Table 之前相互独立,同名的字段在两个表中毫无关系。但是在ES中,同一个Index 下不同的 Type 如果有同名的字段,他们会被 Luecence 当作同一个字段 ,并且他们的定义必须相同。所以我觉得Index现在更像一个表,而Type字段并没有多少意义。
  2. 目前Type已经被Deprecated,在7.0开始,一个索引只能建一个Type为_doc

文档(Document)

  • Index 里面单条的记录称为Document(文档)。等同于关系型数据库表中的行
  • Elasticsearch 是面向文档的,文档是所有可搜索数据的最小单位。
    1. 一部电影的具体信息/一张唱片的详细信息
  • 文档会被序列化JSON格式,保存在Elasticsearch中
    1. JSON对象由字段组成
    2. 每个字段都有对应的字段类型 (字符串/数值/布尔/日期/二进制/范围类型)
  • 每个文档都有一个Unique ID
    1. 你可以自己指定ID
    2. 或者通过Elasticsearch自动生成
  • 文档的源数据


#源数据用于标注文档的相关信息
#_index 文档所属的索引名
#_type 文档所属的类别名
#_id 文档的唯一id
#_source 文档的原始Json数据
#_version 文档的版本信息
#_seq_no 严格递增的顺序号,每个文档一个,Shard级别严格递增,保证后写入的Doc的_seq_no大于先写入的Doc的_seq_no
#primary_term primary_term也和_seq_no一样是一个整数,每当Primary Shard发生重新分配时,比如重启,Primary选举等,_primary_term会递增1
#found 查询的ID正确那么ture, 如果 Id 不正确,就查不到数据,found字段就是false。

节点

  • 节点是一个Elasticsearch的实例
    1. 本质上就是一个JAVA进程。
    2. 一台机器可以运行多个Elasticsearch进程,但是生产环境一般建议还是一台机器运行一个Elasticsearch实例。
  • 每个节点都有名字,通过配置文件配置,或者启动的时候 -E node.name=node1 指定
  • 每个节点在启动之后,会分配一个UID,保存在data目录下
Master-eligible 节点 和 Master 节点
  • 每个节点启动后,默认就是一个Master eligible 节点
  • Master-eligible节点可以参加选主流程,成为Master节点
  • 当第一个节点启动的时候,它会将自己选举成Master节点
  • 每个节点上都保存了集群的状态,但是只有Master节点才能修改集群的状态信息
    1. 集群状态(Cluster State),维护了一个集群中,必要的信息所有的节点信息所有的索引和其相关的Mapping 与 Setting 信息分篇的路由信息
Data 节点 和 Coordinating 节点
  • Data 节点
    1. 可以保存数据的节点,叫做Data Node。负责保存分片数据,在数据扩展上起到了至关重要的作用。
  • Coordinating 节点
    1. 负责接受Client的请求,将请求分发到合适的节点,最终把结果汇聚到一起。
    2. 每个节点默认都起到了Coordinating Node 的职责。
其他节点
  • Hot & Warm 节点
    1. 不同硬件配置的Data Node,用来实现Hot & Warm 结构,降低集群部署的成本。
  • Machine Learning Node
    1. 负责跑机器学习的Job。

分片

  • 主分片,用以解决数据水平扩展的问题,通过主分片,可以将数据分布到集群的所有节点之上
    1. 一个分片是一个运行的Lucene的实例。
    2. 主分片在索引创建时指定,后续不允许修改,除非Reindex。
  • 副本,用以解决数据高可用的问题,副本分片是主分片的拷贝
    1. 副本分片数,可以动态调整。
    2. 增加副本数,还可以在一定程度上提高服务可用性(读取的吞吐)。
  • 分片的设定
  1. 分片数设置过小
    导致后续无法增加节点进行水平扩展。
    导致分片的数据量太大,数据在重新分配时耗时。
  2. 分片数设置过大
    影响搜索结果的相关性打分,影响统计结果的准确性。
    单个节点上过多的分片,会导致资源浪费,同时也会影响性能。

相关文章

  • 2018-11-14

    Elasticsearch中的一些基本概念 索引词(term) 在Elasticsearch中索引词(term)是...

  • elasticsearch使用笔记

    资源 Elasticsearch 权威指南:看完后能了解elasticsearch的基本概念和使用方法 Downl...

  • ElasticSearch 系列 - 基本概念

    1.ElasticSearch的基本概念 1.1 概念 Elasticsearch有几个核心概念,先理解这些概念将...

  • ElasticSearch的基本概念

    3:elasticsearch的基本概念【 要清晰】 3.1 :cluster :集群 整个elasticsear...

  • Elasticsearch-入门

    环境:Centos7、Docker、Elasticsearch7.8.0、Kibana7.8.0 基本概念 1、索...

  • Elasticsearch基本概念

    Elasticsearch是什么?是一种NonSQL的存储,从名字上面可以看出,search表示最大的特点是在于搜...

  • ElasticSearch—基本概念

    基本概念: Cluster 节点集群通过集群名称区分,默认名称是elasticsearch。 Node 没有节点都...

  • Elasticsearch基本概念

    Elasticsearch是一个开源搜索引擎,功能强大,可以进行分布式的实时文件存储,每个字段都被索引并可被搜索,...

  • ElasticSearch - 基本概念

    文档(document) ElasticSearch是面向文档的,文档是所有可搜索数据的最小单位。类似关系型数据库...

  • Elasticsearch基本概念

    索引 索引是文档的容器,是一类文档的集合index 体现了逻辑空间的概念: 每个索引都有自己的Mapping定义,...

网友评论

      本文标题:Elasticsearch基本概念

      本文链接:https://www.haomeiwen.com/subject/bnzzgctx.html