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能够设置很多Types2. 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. 主分片数在索引创立时指定,后续不容许批改,除非Reindex2. 正本,用以解决数据高可用的问题,分片是主分片的拷贝 1. 正本分片数,能够动静调整 2. 减少正本数,还能够在肯定水平上进步服务的可用性(读取的吞吐)3. 对于生产环境中分片的设定,须要提前做好容量布局 1. 分片数设置过小 1. 导致后续无奈减少节点,实现程度扩大 2. 单个分片的数据量太大,导致数据重新分配耗时 2. 分片数设置过大 1. 影响搜寻后果的相关性打分,影响统计后果的准确性 2. 单个节点上过多的分片,会导致资源节约,同时也会影响性能
查看集群的衰弱状况
1. Green: 主分片与正本都失常调配2. Yellow:主分片全副失常调配,有正本调配未能失常调配3. Red:有主分片未能调配 1. 例如,当服务器的磁盘容量超过85%时,去创立一个新的索引
更多内容欢送关注我的集体公众号“韩哥有话说”,100G人工智能学习材料,大量后端学习材料等你来拿。