共计 927 个字符,预计需要花费 3 分钟才能阅读完成。
ElasticSearch 基本概念
文档(Document)
ElasticSearch 是面向文档的,文档是可搜索的最小单位。
好比
- 日志文件中的日志
- MP3 播放的一首歌
文档会被序列化成 JSON 格式,保存在 ElasticSearch 中
每个文档都有一个 Unique ID
- 你可以自己制定 ID
- 或者 ElasticSearch 自动生成。
文档元数据
元数据用于标注文档的相关信息
- _index: 文档所属的索引名
- _type: 文档所属的类型名(目前版本只有一种类型_doc)
- _id: 文档唯一 ID
- _source: 文档的原始 Json 串
- _version: 文档的版本信息
- _score: 相关性打分
索引
Index 是文档的容器。是一类文档的集合。
每个索引都有自己的 Mapping 定义,用于定义包含的文档的字段名和字段类型。
索引中的数据分散在 Shard 上。
传统数据库与 ElasticSearch 对比
分布式特性
- 水平扩容
- 高可用(部分节点停止服务,整个集群服务不受影响)
节点
Master Node
修改集群状态,集群状态包括- 所有的节点信息
- 所有的索引和其相关的 Mapping 与 Setting 信息
- 分片的路由信息
- Master-eligible Node
每个节点启动后,默认就是一个 Master-eligible Node - Ingest Node
数据预处理节点,默认每个节点都启用 Ingest - DataNode
负责保存分片数据的节点 - Hot Node & Warm Node
不同硬件配置的 DataNode,用来实现 Hot&Warm 架构,降低集群部署的成本 - Coordinating Node
负责接受 Client 的请求,将请求分发到合适的节点,最后将结果汇集在一起 - Machine Learing Node
负责跑机器学习的节点,用来做异常检测 - Tribe Node
Tribe Node 可以连接到不同的集群,并且支持将这些集群当成一个单独的集群处理
节点配置
分片
- 主分片
用于解决数据水平扩展,通过主分片,将数据分布到集群内所有节点之上。一个分片就是一个 Lucene 实例,主分片数在索引创建时指定,后续不允许修改,除非 Reindex - 副本
用于解决数据高可用的问题。分片是主分片的拷贝。
副本分片数,可以动态调整
增加副本数,还可以在一定程度上提高服务的可用性(读取的吞吐)
正文完
发表至:无分类
2019-08-29