es是面向doc的,doc是搜索数据的最小单位,doc在es中被序列化为json格式,doc由多个key、value组成,每一个doc都有唯一的id。
一个doc类似数据库表的一条记录,doc包含的key类似数据库表的column。es是基于lucene的,so,doc中的key就是lucene中的field。
文档的元数据(meta-data)元数据就是用来描述数据的数据,例如数据库表的定义,包含表名,列表,列长度类型,主键等信息。
doc的元数据用于标注文档的相关信息:
_index:文档所属的索引名称
_type:文档所属的类型,es7中强制为 _doc
_id:文档唯一id
_source:文档原始数据
索引(名词):索引的概念类似于关系数据库中的一张表,用来储存doc的地方,索引的复数是indices或indexes。
索引(动词):索引表示将一个文档存储到指定的索引(名词)中,这样文档才可以被检索或查询。
倒排索引:doc中的字段默认都会被分词、索引,以便可以对文档进行快速检索。
Mappings:定义文档的字段类型
Settings:定义数据的分布(数据的分片,数据的副本)
ES vs RDBMS节点就是一个es的进程实例,本质上就是一个java进程,每一个节点都有自己的节点名字node.name。同时拥有集群名称cluster.name,网络互通的节点间,拥有相同集群名称的节点会自动加入集群。
节点类型:
主节点,可以参加选主流程,只有主节点才能修改集群
状态
Data数据节点,默认的节点角色,用来保存数据及执行相
关数据操作
Ingest数据前置处理及转换节点,可以使用ingest进行数据
过滤、转换
Coordinating 负责接收请求,将请求转发到正确的节点,并最终汇总查询结果,起到负载均衡的作用,每个节点默认都是分片(shard)和副本(replica)分片类似于数据库的分区或分库操作,主要用来解决数据水平扩展,通过主分片可以将数据分布到集群中不同的节点上。
副本是主分片的copy,用来解决数据高可用,增加副本数一定程度上可以提高查询响应。
集群健康(cluster health)集群健康有3种状态:green,yellow,red。主要用来说明集群中主分片和副本分片的健康情况。
通常只有一个节点的集群是yellow,因为主分片是正常的,副本分片在单实例上保存是无意义的,so,因为副本分片没有被分配出去,所以集群健康状态就为yellow了。