ES面试必备:倒排索引、主节点选举与写入原理

需积分: 0 0 下载量 199 浏览量 更新于2024-08-03 收藏 8KB MD 举报
"ES吊打面试官专属秘籍.pdf" 是一本关于 Elasticsearch 面试准备的资料,其中涵盖了Elasticsearch的核心概念和技术,包括倒排索引、主节点选举、写入原理以及查询类型等内容。 ### 硬核技能 #### 1、倒排索引 倒排索引是全文搜索引擎的核心数据结构。它允许快速地进行关键词查找。当用户输入查询时,ES通过倒排索引找到包含这些关键词的文档。倒排索引包括了词典(存储所有唯一词项及其相关信息)和倒排列表(记录每个词项出现在哪些文档中及位置信息)。倒排索引的压缩算法如DocValues和 postings formats 可以优化存储效率。 #### 2、Master选举 - 主节点(active master):负责集群的元数据管理,如索引创建、删除、分区分配等。 - 候选节点(master node):具备成为主节点的资格,可以参与选举。 - 投票节点:所有候选节点默认都有选举权,但设置为voting_only的节点仅有选举权,不能成为主节点。 - 专用主节点:仅保留master角色,专注于集群管理。 - 仅投票节点:仅参与选举,不参与实际的集群管理工作。 节点失效检测由NodesFaultDetection和MasterFaultDetection两部分组成,确保集群中节点的正常通信和主节点的稳定。 #### 脑裂问题 当集群因网络问题分裂成两个或多个部分,每个部分可能选举出自己的主节点,导致“脑裂”。为避免这种情况,设置 `discovery.zen.minimum_master_nodes` 至 N/2+1,N为有效投票节点数,确保多数派一致性。 ### 3、写入原理 Elasticsearch的写入过程通常涉及以下步骤: 1. 客户端将文档发送到任意一个数据节点。 2. 数据节点将文档写入translog(事务日志)并返回确认。 3. 文档被分割为多个分片,并在各个分片上执行写操作。 4. 如果配置了副本分片,分片的副本也会接收到写请求。 5. 当所有分片成功写入后,主节点更新元数据并提交。 ### 4、ES支持的查询类型 Elasticsearch 支持多种查询方式,包括但不限于: - Term Query:精确匹配某个词项。 - Match Query:模糊匹配,支持分析。 - Phrase Query:短语查询,用于匹配精确的词序。 - Range Query:范围查询,用于筛选数值或日期范围。 - Wildcard Query:通配符查询,支持星号(*)和问号(?)。 - Fuzzy Query:模糊查询,允许一定程度的拼写错误。 - Bool Query:布尔组合查询,可以组合多个查询条件。 - Nested Query:嵌套查询,处理JSON对象数组中的数据。 - Script Query:基于脚本的查询,可以动态计算过滤条件。 此外,还有多字段查询、多术语查询、聚合查询等,提供了强大的搜索和分析能力。 这本秘籍详尽地介绍了Elasticsearch的各个方面,是面试准备或深入了解Elasticsearch的宝贵资料。对于想要在面试中脱颖而出或者深入理解Elasticsearch的人来说,这是一份非常实用的参考资料。