cluster
由一个或多个节点组成,它们都使用同一个集群名。
每个集群都有一个master节点,它是自动被集群选举的,如果当前master节点发生故障,可以用候选master节点代替它。
Master负责处理节点的加入和推出,以及分片的重新分配,
当有节点加入、推出集群时,Es会根据机器的负载情况,对索引分片进行重新分配
node
节点是一个运行中的es实例,它属于一个集群。可以在一个服务器启动多个节点用于测试,但通常都是一个服务器一个节点。在启动的时候节点会使用单播查找一个具有相同集群名并且已存在的集群,并尝试加入它。
索引
Index # 类似关系数据库中的一个Database,一般会有多个存放数据的Type;
Type # 类似与数据表,用来存放具体的数据;
Document # 类似关系数据库中的一行数据, 每一行数据都有一个唯一的ID,如果没有提供将会自动生成;
Field # 类似关系数据库中的一列,是ES的最小存储单位
Mapping
定义索引下Type的字段处理规则,如:索引的建立、索引数据类型、是否保存原始索引JSON文档、是否需要分词处理、如何进行分词处理等;可以显示定义或者在索引文档时自动生成。每个索引都有一个Mapping
Mapping可以通过语句删除,对应类型文件下的所有数据也会被删除。
Shard
Elasticsearch将一个完整的索引分成若干部分(默认5个),每个部分就是一个Shards,并存储在相同或不同的Node上。
Shards的数量在索引创建前指定,且创建后不可更改。
检索时,Elasticsearch会将查询发送到不同的Shards上,并将返回的结果合并,这个过程对用户是透明的。
Replicas
是索引的冗余备份,每个主分片都有一个或多个副本分片,可用于防止数据丢失(当主分片不可用,副本分片提升为主分片)或用来做负载均衡(Es会自动对搜索请求进行负载均衡)
Routing
当你索引一个文档,它被保存在一个主分片,并基于对routing的值(默认_id)进行hash计算映射到对应的分片。
shard = hash(routing) % number_of_primary_shards 计算后得到余数