1.基本概念和术语文档:是es搜索的最小单位,序列化成json对象存储在es中。文档类似于关系数据库。每个文档都有一个唯一的ID。主键IDjson对象由filed组成。Field类比关系数据库的columnIndex:索引是文档的容器,是一类文档的集合,存储在分片上。索引类比关系数据库表索引的Mapping定义了文档字段类型,关系数据库schema索引的Setting定义了数据在shard上的分布节点:ES实例的java进程,节点名称在启动时由-Enode.name指定,每个节点存储集群状态信息。集群状态包括:所有节点信息、所有索引、Mapping和Setting信息、分片路由信息。只有主节点可以修改集群状态信息。DataNode:保存分片数据的节点。CoordinatingNode:负责接受客户端请求,并转发到合适的节点,并负责汇总结果;默认情况下,每个节点都会启动CoordinatingNodeHot&WarmNode的职责:由不同配置的DataNode组成,主要是为了降低成本,Hot节点使用高配置,Warm节点使用低配置Primaryshard:指定主分片时创建索引解决数据横向扩展的问题。类比Kafka的分区,在创建索引时指定一个运行在shards中的Lucene实例,修改后Reindexshards的个数与节点数相关。分片太少会影响节点扩容,分片太多会影响查询性能。分片分担写入压力。当分片数>节点数时,新节点加入分片时会自动分配分片。太多的分片会导致潜在的性能。查询需要从多个分片中检索数据。单分片数据存储大小在50G以内,搜索单分片存储大小在20G以内,减少merge/rebalancing的消耗。类似于Kafka的replica,replicasharding可以动态调整,增加replicas的数量。除了解决高可用之外,它还可以提高读取性能并增加存储成本。二、节点角色和集群状态1、节点角色Node官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.10/modules-node.htmlElasticsearch7.9通过node配置节点角色。roles,并在配置文件elasticsearch.yml中设置角色选项说明masternode.roles:[master]:有投票权和被选举权不选权datanode.roles:[data]:处理数据相关的操作增删改查、搜索、聚合:[data_hot]:冷热分层架构,热节点承担快速读写操作,可配置为SSD盘data_warmnode.roles:[data_warm]:冷热分层架构,暖节点索引不定期更新,查询频率低于tha热节点的t,配置低于热节点。[ingest]:ingest节点用于对写入和查询的数据进行预处理。Coordinatingonlynodenode.roles:[]:协调节点不承担master的责任,不保存数据,不做预处理;负责接受请求、分发请求、汇总结果备注:在生产环境中,建议一个节点设置单一角色,这样有利于更好的性能和基于角色的自定义配置。2.clusterstatus用三种状态衡量集群的健康度:Green:Primaryshards和replicas正常分配Yellow:所有primaryshards正常分配,部分replicashards未正常分配Red:部分primaryshards未正常分配查看集群状态:官方API文档://索引APIhttps://www.elastic.co/guide/en/elasticsearch/reference/8.1/indices.html//获取索引APIhttps://www.elastic.co/guide/en/elasticsearch/reference/8.1/indices-get-index.html//catAPIhttps://www.elastic.co/guide/en/elasticsearch/reference/8.1/cat.html查询文档总数:三、通用集群部署架构1、各角色配置在生产环境架构中,每个节点配置单一职责,具体为Master、Data、Ingest、Coordinate其中之一,有利于每个角色使用不同的机器配置。Master负责集群状态信息管理。生产环境通常配置3个低配置(低CPU核数、小内存、低磁盘)数据节点负责处理数据相关的操作高配置(高CPU核数、大内存、SSD盘)Ingest节点负责用于预处理写入和查询的数据。配置(高CPU核心,中内存,低磁盘)协调节点,通常配置在大型es集群中,减少Master和DataNodes的负载,负责接受和分发请求,聚合结果响应未知的查询请求从客户来看,深度聚合可能导致OOM中高配置(CPU核心数中高,内存中高,磁盘低)2.集群部署架构2.1水平扩展注:当有大量集群中复杂查询的数量,通过加入Collaborative节点提高查询性能。2.2读写分离备注:通过配置不同的读写负载均衡,将读写请求分离,将读请求路由到协作节点,将写请求路由到摄取节点,实现协作节点和摄取节点的横向扩展。2.3冷热分离备注:在冷热分离架构中,热节点通过高配置承担更多的读写压力,冷节点承担一定的读请求,这在日志使用场景中很常见。2.4混合部署备注:ES集群由数据节点和master节点组成,常见于非生产环境和在线读写无压力的场景。
