elasticsearch的常见面试题?

news/2025/1/31 5:23:18/

在面试过程中除去各个公司的不同服务架构之外,也会存在一些普遍大众的面试点,以下将会从三个维度进行介绍。

基础知识类

elasticsearch_2">elasticsearch和数据库之间区别?

  • elasticsearch:面向文档,数据以文档的形式存储,即JSON格式的对象。更强调数据的搜索、索引和分析。
  • 数据库:更侧重于事务处理、数据的严格结构化和完整性,适用于关系复杂、数据一致性要求高的业务场景。

elasticsearch_6">elasticsearch和核心组件包含哪些?

  • 节点(Node)elasticsearch集群中一个服务器实例,负责存储数据、处理请求等,根据角色不同可分为主节点、数据节点、协调节点等。
  • 集群(Cluster):由一个或多个节点组成的elasticsearch实例的集合,用于存储和管理数据。
  • 索引(Index):文档的集合,类似于关系型数据库中的数据库。
  • 类型(Type):一个索引对应一种文档类型。
  • 文档(Document)elasticsearch中存储的基本单位,以JSON格式表示。

elasticsearch_13">什么是elasticsearch中的“倒排索引”?

  • 正向索引:根据文档查询其中包含的词。
  • 倒排索引:建立一个词到文档的映射关系。

具体来说:
每个词对应一个词典项,词典项中包含了改词的所有文档列表,以及每个文档中改词出现的频率、位置等信息。当用户进行搜索时,elasticsearch会根据查询在词典中查找对应的文档列表,从而快速定位包含该词的文档,从而提高效率。


集群管理与监控类

elasticsearch_20">如何查看elasticsearch集群的健康状态?

curl -X GET "localhost:9200/_cluster/health"|jq
  • green:主分片和副本分片都正常分配。
  • yellow:主分片分配成功,但副本分片未分配,可能存在节点故障或网络问题导致副本未就绪。
  • red:主分片未分配,此时部分数据不可用,集群处于异常。

elasticsearch_27">elasticsearch集群中主分片和副本分片的作用是什么?如何配置它们的数量?

  • 主分片:每个索引的文档都会被分配到一个主分片中,主分片负责存储实际的数据。
    • 一个索引可以有多个主分片,主分片的数量在索引创建时确定,并且不能更改。
    • 主分片的数量应根据预计的数据量和集群的节点容量来确定,建议:主分片数量最多不要超过集群中节点的数量,避免单个节点分配过多主分片而造成资源紧张。
  • 副本分片:为主分片的副本,用于高可用性和容错性。
    • 当某个主分片所在的节点发生故障时,副本分片可以提升为主分片继续提供服务。同时也能够分担读请求,提高搜索和查询效率。
    • 副本分片的数量可以在索引创建后动态调整。
案例:在不影响业务的情况下最多可以容忍几台服务器宕机?
如果你要容忍N台服务器故障,集群需要2N+1台服务器,故高可用集群都采用奇数台服务器。
1)5台服务器的最大允许宕机服务器数是多少?
2n+1=5---->n=2
2)6台服务器的最大允许宕机服务器数是多少?
2n+1=6---->n=2

elasticsearch_42">如何监控elasticsearch集群的性能指标?

  1. 使用elasticsearch自带的监控API
    • /_cat:API可以用于获取集群、节点、索引等基本信息。
    • _cat/indices:查看索引的健康状态、文档数量、存储大小。
    • _cat/nodes:查看节点的状态、CPU使用率、内存使用率等。
    • _nodes/status:获取节点的详细统计信息(含索引、分片、缓存、线程池等)。
  2. 第三方监控工具Prometheus + Grafana
    • prometheus可以收集elasticsearch的各种指标数据,包含JVM堆内存使用率、索引和搜索的吞吐量、分片分配情况等。
    • 通过Grafana可视化这些数据,及时发现潜在的性能瓶颈和问题。

性能优化与故障处理

elasticsearch_54">如何优化elasticsearch的搜索性能?

  • 合理设置索引的分片和副本数量
    • 根据数据量和集群资源合理配置主分片数和副本数,避免分片过多或过少。
  • 优化查询语句
    • 采用更高效的查询方式。
    • 例如避免使用通配符查询(如*)开头的查询方式。
  • 调整java堆内存大小
    • elasticsearch运行在jvm上,适当的堆内存大小对性能至关重要。
    • 通常建议将堆内存大小设置为系统物理内存的一半即可。且不超过32GB,避免降低性能。
  • 硬件升级和优化
    • 对于高并发、大数据量的场景,可以通过增加节点、升级服务器硬件(如,CPU\内存\SSD磁盘等)来提升集群的整体性能。

elasticsearchred_65">当elasticsearch节点出现故障或集群为red时,如何进行故障排查?

  • 收集故障信息
    • 查看elasticsearch的日志文件,日志文件通常位于logs目录下,所以从中获取节点故障的错误信息、异常堆栈等,初步判断故障原因。
    • 使用curl -X GET "localhost:9200/_cluster/health"|jq查看集群健康状态,确保集群状态为red的具体原因(如主分片未分配等)。
  • 检查节点连接和网络状况
    • 确认故障节点是否可以正常通信,检查网络连接是否正常,是否有网络分区或其他网络故障导致节点无法通信。
    • 可通过ping命令测试节点之间的连通性,或使用telnet测试节点间的端口是否开放。
  • 检查硬件资源
    • 查看故障节点的CPU、内存、磁盘等硬件资源使用情况,是否存在资源被耗尽的情况。
    • 采用top/free -m/df -h等命令查看硬件资源状态。
  • 根据故障原因进行恢复操作
    • 节点硬件故障(磁盘损坏):更换硬件并更新启动节点。
    • 网络故障:修复网络连接后,集群会自动进行数据恢复和分片分配。
    • 主分片未分配:根据具体情况,如增加副本数、调整分片分配策略等来解决。

http://www.ppmy.cn/news/1568076.html

相关文章

嵌入式知识点总结 Linux驱动 (五)-linux内核

针对于嵌入式软件杂乱的知识点总结起来,提供给读者学习复习对下述内容的强化。 目录 1.内核镜像格式有几种?分别有什么区别? 2.内核中申请内存有哪几个函数?有什么区别? 3.什么是内核空间,用户空间&…

kafka消费者详细介绍(超级详细)

文章目录 一、Kafka 消费者与消费者组1.1 Kafka 消费者(Consumer)概述1.1.1 消费者工作流程1.1.2 消费者的关键配置 1.2 Kafka 消费者组(Consumer Group)概述1.2.1 消费者组的工作原理1.2.2 消费者组的优点1.2.3 消费者组的再均衡…

网安加·百家讲坛 | 樊山:数据安全之威胁建模

作者简介:樊山,锦联世纪教育能源工业互联网数字安全CSM(新能源运维师)课程特聘培训讲师,哈尔滨工业大学(深圳)信飞合创数据合规联合实验室特聘专家,武汉赛博网络安全人才研究中心资深专家;近24年…

SpringBoot+Electron教务管理系统 附带详细运行指导视频

文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码1.查询课程表代码2.保存学生信息代码3.用户登录代码 一、项目演示 项目演示地址: 视频地址 二、项目介绍 项目描述:这是一个基于SpringBootElectron框架开发的教务管理系统。首先&#xff…

【漫话机器学习系列】070.汉明损失(Hamming Loss)

汉明损失(Hamming Loss) 汉明损失是多标签分类问题中的一种评价指标,用于衡量预测结果与实际标签之间的差异。它定义为预测错误的标签比例,即错误标签的个数占总标签数量的比值。 在多标签分类中,每个样本可以属于多…

【反悔堆】【hard】力扣871. 最低加油次数

汽车从起点出发驶向目的地,该目的地位于出发位置东面 target 英里处。 沿途有加油站,用数组 stations 表示。其中 stations[i] [positioni, fueli] 表示第 i 个加油站位于出发位置东面 positioni 英里处,并且有 fueli 升汽油。 假设汽车油…

蓝桥杯算法日常|c\c++常用竞赛函数总结备用

一、字符处理相关函数 大小写判断函数 islower和isupper:是C标准库中的字符分类函数,用于检查一个字符是否为小写字母或大写字母,需包含头文件cctype.h(也可用万能头文件包含)。返回布尔类型值。例如: #…

C++ Lambda 表达式的本质及原理分析

目录 1.引言 2.Lambda 的本质 3.Lambda 的捕获机制的本质 4.捕获方式的实现与底层原理 5.默认捕获的实现原理 6.捕获 this 的机制 7.捕获的限制与注意事项 8.总结 1.引言 C 中的 Lambda 表达式是一种匿名函数,最早在 C11 引入,用于简化函数对象的…