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 - 副本
用于解决数据高可用的问题。分片是主分片的拷贝。
副本分片数,可以动态调整
增加副本数,还可以在一定程度上提高服务的可用性(读取的吞吐)
发表回复