Elasticsearch基本概念

  • Elasticsearch自顶向下的架构体系

􏱍􏴖􏰬􏳤􏴗node

 

 

  • 􏱍􏴖􏰬􏳤􏴗文档,索引

  

文档(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,使用它与集群进行交互app

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

􏱍􏴖􏰬􏳤􏴗机器学习

相关文章
相关标签/搜索