Elasticsearch面试深度解析:关键知识点与调优策略

需积分: 0 0 下载量 135 浏览量 更新于2024-08-03 收藏 27KB DOCX 举报
"Elasticsearch面试题和答案涵盖了多个核心概念,包括节点配置、主节点选举、性能调优、防止脑裂策略以及大数据量聚合的实现。" 在Elasticsearch中,一个Node的分片分配数量通常是根据官方建议来设定的,避免过多以优化性能。在之前的公司实践中,通常一个Node不会分配超过三个主分片。 Elasticsearch的Master选举由ZenDiscovery模块处理,通过Ping和Unicast机制进行节点间的通信。节点根据node.id排序,并尝试将排序第一位的节点作为潜在的Master节点。当选票数达到n/2+1(其中n为可成为Master节点的数量)并且节点自身也同意时,该节点将成为Master。若未满足条件,则继续选举。 写入调优主要包括以下几个步骤:首先,在写入前将副本数设置为0,关闭刷新间隔(refresh_interval设为-1),然后使用bulk批量写入以提高效率。写入完成后,恢复副本数和刷新间隔,确保数据的实时性。此外,推荐使用系统自动生成的ID,以避免因手动设置ID导致的不均匀分布。 为防止Elasticsearch集群出现脑裂现象,即网络分区后的多个Master节点,可以通过配置discovery.zen.minimum_master_nodes参数,确保至少一半以上的节点同意新Master,从而避免不一致。 对于大数据量的聚合操作,Elasticsearch提供了cardinality度量,它基于HyperLogLog (HLL) 算法估算字段的唯一值数量。HLL通过哈希运算和位操作进行基数估计,可以根据需求调整精度,以控制内存使用。即使面对亿级数据,也能保持相对低的内存消耗。 关于主分片数量的调整,这是不被允许的。因为主分片数量直接影响文档的路由算法,一旦改变,会导致数据无法正确地分配到对应的分片上,因此主分片数量在索引创建后应保持不变。 Elasticsearch在设计和使用中需要考虑到性能优化、高可用性和数据一致性等关键因素,这在面试中也是考察的重点。理解并掌握这些核心概念对于Elasticsearch的管理和使用至关重要。