关于mysql:Elasticsearch相关概念

Elasticsearch相干概念

文档

1. elasticsearch是面向文档的,文档是所有可搜寻数据的最小单位,例如:
    1. 日志文件中的日志项
    2. 一本电影的具体信息 / 一张唱片的详细信息
    3. MP3播放器里的一首歌 / 一篇PDF文档中的具体内容
2. 文档会被序列化为Json格局,放弃在elasticsearch中
    1. Json对象有字段注册
    2. 每个字段都有对应的字段类型(字符串,数值,布尔,日期,二进制,范畴类型)
3. 每个文档都有一个 uniqueID
    1. 你能够本人指定ID
    2. 或者通过Elasticsearch主动生成

文档的元数据

1. 元数据能够认为是每个json数据自带的原始的字段,用于标注文档的相干信息,次要有以下几个元数据:
    1. _indx 文档所属的索引名
    2. _type 文档所属的类型名
    3. _id 文档的惟一ID
    4. _source 文档的原始JSON数据
    5. _version 文档的版本信息
    6. _score 相关性打分

索引 Index

1. 索引是文档的容器,是一类文档联合
    Index体现了逻辑空间的概念:每个索引都有本人的Mapping定义,用于定义蕴含的文档的字段名和字段类型
    每个索引的数据分布在Shard上,Shard体现了物理空间的概念
2. 索引的Mapping和Settings
    Mapping定义文档字段的类型
    settings定义不同的数据分布
索引的不同语义
1. 名词:一个Elasticsearch集群中,能够创立很多不同的索引
2. 动词:保留一个文档到elasticsearch的过程也叫索引(indexing),即es创立一个倒排索引的过程
3. 名词:一个B树索引,一个倒排索引

Type

Type是一类索引的组合
1. 在7.0之前,一个Index能够设置很多Types
2. 6.0开始,Type曾经被Deprecated。7.0开始,一个索引只能创立一个type,即“_doc”

与传统关系型数据库RDMS的比照

1. ES的特点是弱结构化,相关性,高性能全文检索
2. RDMS 事务性和数据聚合Join
RDMS ES
Table Index(Type)
Row Document
Column Field
Schema Mapping
SQL DSL

REST API

ES提供rest api的接口,以便于各种语言调用

分布式集群

    分布式集群是目前的支流做法,起因也是不言而喻的,分布式系统具备单机零碎无法比拟的高可用性和可扩展性

1. 高可用性:
    1. 服务可用性:容许有节点进行服务
    2. 数据可用性:局部节点失落,不会失落数据
2. 可扩展性:
    1. 能够程度扩大
节点
1. 节点是一个ES实例
    1. 实质上就是一个JAVA过程
    2. 一台机器上能够运行多个ES过程,然而生产环境个别倡议一台机器只运行一个ES实例
2. 每个节点都有名字,通过配置文件配置,或者启动的时候,加上 -E node.name=node1 指定
3. 每个节点在启动后,会调配一个UID,放弃在data目录下
Master-eligible nodes 和Master Node
1. 每个节点启动后,默认就是一个Master eligible节点
    1. 能够设置node.master:false禁止
2. Master-eligible节点能够加入选主流程,成为Master节点
3. 当第一个节点启动的时候,它会将本人选举为Master节点
4. 每个节点上都保留了集群的状态,只有Master节点能力批改集群的状态信息
    1. 集群状态(Cluster State) ,保护了一个集群中,必须的信息
        1. 所有的节点信息
        2. 所有的索引和棋相干的Mapping和Settings信息
        3. 分片的路有信息
Data Node
    能够保留数据的节点,叫做Data Node,负责保留分片数据,在数据扩大上起到了至关重要的作用
Coordinating Node
1. 负责接管Client的申请,将申请散发到适合的节点,最终把后果会集到一起
2. 每个节点默认都起了Coordinationg Node的职责
Hot & Warm Node
    不同硬件配置的Data Node,用来实现Hot & Warm 架构,升高集群部署的老本
Machine Learning Node
    顾名思义,负责跑机器学习的Job,用来做异样检测
Tribe Node
(5.3开始用Cross Cluster Serach) Tribe Node 连贯到不同的ES集群,并且反对将这些集群当做一个独自的集群解决
配置节点类型
1. 开发环境中一个节点能够承当多种角色
2. 生产环境中,应该设置繁多的角色的节点
节点类型 配置参数 默认值
master eligible node.master true
data node.data true
ingest node.ingest true
coordinating only 每个节点默认都是coordinating,设置其它类型全副为false
machine_learing node.ml ture(须要 enable x-pack)
分片
1. 主分片:用以解决数据程度扩大的问题,通过主分片,能够将数据分布到集群内的所有节点之上
    1. 一个分片是一个运行的Lucene的实例
    2. 主分片数在索引创立时指定,后续不容许批改,除非Reindex
2. 正本,用以解决数据高可用的问题,分片是主分片的拷贝
    1. 正本分片数,能够动静调整
    2. 减少正本数,还能够在肯定水平上进步服务的可用性(读取的吞吐)
3. 对于生产环境中分片的设定,须要提前做好容量布局
    1. 分片数设置过小
        1. 导致后续无奈减少节点,实现程度扩大
        2. 单个分片的数据量太大,导致数据重新分配耗时
    2. 分片数设置过大
        1. 影响搜寻后果的相关性打分,影响统计后果的准确性
        2. 单个节点上过多的分片,会导致资源节约,同时也会影响性能
查看集群的衰弱状况
1. Green: 主分片与正本都失常调配
2. Yellow:主分片全副失常调配,有正本调配未能失常调配
3. Red:有主分片未能调配
    1. 例如,当服务器的磁盘容量超过85%时,去创立一个新的索引

更多内容欢送关注我的集体公众号“韩哥有话说”,100G人工智能学习材料,大量后端学习材料等你来拿。

评论

发表回复

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

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理