Elasticsearch 28道面试题和答案.docx
Elasticsearch 是一个分布式、开源的全文检索引擎,广泛用于实时数据分析和大规模搜索应用。以下是一些关于 Elasticsearch 的关键知识点,基于提供的面试题和答案: 1. **节点分片策略**:遵循官方建议,一个节点最好不超过三个主分片(shards)。这是因为过多的分片会增加节点的负载,影响性能。 2. **Master 选举**:Elasticsearch 使用 ZenDiscovery 模块进行主节点选举。节点间通过 Ping 进行通信,通过 Unicast 单播发现彼此。选举过程是所有可成为主节点的节点根据节点 ID 排序,得票数超过半数(n/2+1)且自身也投票的节点成为主节点。 3. **写入调优**: - 写入前设置副本数为 0,关闭 refresh_interval 以禁用刷新机制。 - 批量写入(bulk)以提高效率。 - 写入后恢复副本数和刷新间隔。 - 使用系统自动生成的 ID,避免手动操作带来的潜在问题。 4. **避免脑裂**:通过配置 `discovery.zen.minimum_master_nodes` 至超过所有候选主节点的一半以上,防止网络分区导致的多个主节点情况(脑裂)。 5. **大数据量聚合**:对于上亿量级的聚合,Elasticsearch 提供了 cardinality 度量,基于 HyperLogLog(HLL)算法,能高效估计基数,同时允许配置内存使用以平衡精度和资源消耗。 6. **主分片数量变更**:主分片数量一旦设定,不可更改,因为数据路由依赖于文档 ID 的哈希值与主分片数量的模运算。 7. **集群监控**:使用 Marvel 插件结合 Kibana 可以实时监控 Elasticsearch 集群的健康状态和性能指标。 8. **副本**:副本是分片的备份,用于提高可用性和容错性。一个集群由一个或多个共享相同集群名称的节点组成,每个节点可以包含多个分片。 9. **数据更新流程**: - 更新数据时,旧文档标记为删除,新数据写入。 - 刷新操作(refresh)会产生新的 segment 文件。 - 定期合并 segment 文件,删除已删除的文档,并更新 commit point。 10. **分析器**:分析器负责将输入文本转换为可用于索引的 tokens。Elasticsearch 内置多种分析器,如标准分析器,用户也可自定义分析器,包括 CharFilter、Tokenizer 和 TokenFilter。 11. **节点选择**:TransportClient 使用轮询方式与预先配置的集群节点通信,选择特定节点执行请求。 12. **倒排索引**:倒排索引是 Elasticsearch 实现快速全文搜索的关键。它将每个词元(token)映射到包含该词元的文档列表,使得搜索时可以迅速定位到相关文档。 以上知识点涵盖了 Elasticsearch 的核心概念,包括集群管理、数据处理、性能优化和监控等方面。理解和掌握这些知识点对于使用和维护 Elasticsearch 集群至关重要。
剩余6页未读,继续阅读
- 粉丝: 33
- 资源: 5321
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 章节1:Python入门视频
- 无需样板的 Python 类.zip
- ESP32 : 32-bit MCU & 2.4 GHz Wi-Fi & BT/BLE SoCs
- 博物馆文博资源库-JAVA-基于springBoot博物馆文博资源库系统设计与实现
- 旅游网站-JAVA-springboot+vue的桂林旅游网站系统设计与实现
- 小说网站-JAVA-基于springBoot“西贝”小说网站的设计与实现
- 游戏分享网站-JAVA-基于springBoot“腾达”游戏分享网站的设计与实现
- 学习交流-JAVA-基于springBoot“非学勿扰”学习交流平台设计与实现
- EDAfloorplanning
- 所有课程均提供 Python 复习部分.zip