共计 2461 个字符,预计需要花费 7 分钟才能阅读完成。
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 人工智能学习材料,大量后端学习材料等你来拿。
正文完