Elasticsearch基本概念

  • Elasticsearch自顶向下的架构体系

 

 

  • 文档,索引

  

文档(Document)
    • Elasticsearch是面向文档的,文档是所有可搜索数据的最小单位
    • 文档会被序列化成JSON格式,保持在Elasticsearch中􏲍􏱂􏵓􏵔􏵖􏴚􏵐􏴣 􏲯􏵓􏵗􏵘 􏰴 􏰠􏵙 􏰴 􏰙􏵚 􏰴
    • 每一个文档都有一个UniqueID
文档的元数据
    • 元数据,用于标注稳定的相关信息
    • _index -文档所属的索引名
    • _type -文档所属的类型名                                       
    • _source-文档的原始Json数据
    • _version-文档的版本信息
    • _score-相关性打分

            索引(Index)

          Index- 索引是文档的容器,是一类文档的结合

    • Index体现了逻辑空间的概念:每一个索引都有自己的Mapping定义,用于定义包含的文档的字段名和字段类型
    • Shard体现了物理空间的概念:索引中的数据分散在Shard上

          索引的Mapping与Settings

    • Mapping定义文档字段的类型
    • Setting定义不同的数据分布
          Type
    • 在7.0之前,一个index可以设置多个Types
    • 6.0开始,Type已经被Deprecated。7.0开始一个索引只能创建一个Type -"_doc"
  • 集群/节点/分片/副本


  • 分布式系统的可用性与扩展性
    • 高可用
      • 服务可用性-允许有节点停止服务
      • 数据可用性-部分节点丢失,不会丢失数据
    • 可扩展性
      • 存储的水平扩容 请求量提升/数据的不断增长(将数据分布到所用节点上)
  •  集群
    • 多台Es服务器的结合的统称叫ES集群
    • 集群的健康状态
      • Green-主分片与副本都正常分配
      • Yellow-主分片全部正常分配,有副本分片未能正常分配
      • Red-有主分片未能分配(例如 当服务器的磁盘容量超过85%时,去创建了一个新的索引)
  • 节点
    1. 节点是一个Elasticsearch的实例,本质上就是一个JAVA进程
    2. 每一个节点都有名字,通过配置文件配置,或者启动时候指定
    3. 每一个节点在启动之后,会分配一个UID,保存在data目录下
  • Master-eligible nodes 和Master Node(主节点)
    •  每个节点启动后,默认就是一个Master eligible节点(可以设置node.master:false禁止)
    • Master-eligible节点可以参加选主流出,成为Master节点
    •  每个节点上都保存了集群的状态,只有Master节点才能修改集群的状态信息
      •  集群状态(cluster state)维护了一个集群中必要的信息所有节点的信息/所有的索引和其相关的Mapping与Setting信息/分片的路由信息
      •    任意节点都能修改信息会导致数据的不一致性 
  • DataNode(数据节点)
    • 可以保存数据的节点。负责保存分片数据。在数据扩展上起到了至关重要的作用
  • Coordination Node(协调节点)
    • 负责接收Client的请求,将请求分发到合适的节点,最终把结果汇集到一起
    • 每个节点默认都起到了Coordination Node的职责 
  • Hot&Warm Node
    • 不同硬件配置的Data Node,用来实现Hot&Warm架构,降低集群部署的成本
  • Machine Learning Node
    • 负责跑机器学习的Job,用来做异常检测
  • Ingest Node
    • Ingest Node 可以看作是数据前置处理转换的节点,支持 pipeline管道 设置,可以使用 ingest 对数据进行过滤、转换等操作,类似于 logstash 中 filter 的作用。
  • Tribe Node
    • 5.3开始使用Cross Cluster Search)TribeNode 连接到不同的Elasticsearch集群,并且支持将这些集群当成一个单独的集群处理
     节点角色划分及资源使用情况
角色
描述
存储
内存
计算
网络
数据节点
存储和检索数据
极高
主节点
管理集群状态
Ingest 节点
转换输入数据
机器学习节点
机器学习
极高
极高
协调节点
请求转发和合并检索结果
 
  •  分片(Primary Shard & Replica Shard)
    • 将数据切分放在每个分片中,分片又被放到集群中的节点上。
    • 每个分片都是独立的lucene实例
    • 分片数设置过小
      • 导致后续无法增加节点实现水平扩展
      • 单个分片的数据量太大,导致数据重新分配耗时
    • 分片数设置过大
      • 影响搜索结构的相关性打分,影响统计结果的准确性
      • 单个节点上过多的分片,会导致资源浪费,同时也会影响性能
    • 分片为主分片和备份分片
      • 副本分片数提高了数据冗余量
      • 主分片挂掉以后能够自动由副本分片升为主分片
      • 备份分片还能够降低主分片的查询压力(会消耗更多的系统性能)
  • REST API 

             Elasticsearch提供了一个非常全面和强大的REST API,使用它与集群进行交互

    1. 检查群集,节点和索引运行状况,状态和统计信息
    2. 管理您的群集,节点和索引数据和元数据
    3. 对索引执行CRUD(创建,读取,更新和删除)和搜索操作
    4. 执行高级搜索操作,例如分页,排序,过滤,脚本编写,聚合等

      

 

       

posted @ 2020-01-14 23:36  %阳阳羊%  阅读(...)  评论(...编辑  收藏