当前位置: 首页 > web >正文

ES面试题系列「一」

1、Elasticsearch 是什么?它与传统数据库有什么区别?

答案:Elasticsearch 是一个基于 Lucene 的分布式、开源的搜索和分析引擎,主要用于处理大量的文本数据,提供快速的搜索和分析功能。与传统数据库相比,ES 更侧重于全文搜索和实时数据分析,数据以 JSON 格式存储,具有更好的扩展性和灵活性,而传统数据库擅长事务处理和结构化数据的存储与查询。

2、什么是倒排索引?它是如何工作的?

答案:倒排索引是 Elasticsearch 的核心数据结构。它从词出发,记载了每个词在哪些文档中出现过,由词典和倒排表组成。在构建倒排索引时,会对文档进行分词处理,将文档拆分成词条,然后建立词条与文档 ID 的映射关系。查询时,通过查找词条在倒排索引中的位置,快速定位到包含该词条的文档。

3、Elasticsearch 中的索引、文档和字段分别是什么?

答案:索引类似于关系数据库中的数据库,是具有相同结构的文档的集合;文档是 ES 中最小的存储单位,相当于关系数据库中的一条记录,以 JSON 格式存储;字段是文档中的属性,类似于关系数据库中的列,每个字段都有其数据类型。

4、如何理解 Elasticsearch 中的分片和副本?

答案:分片是为了提高 ES 的存储和查询性能,将索引分成多个部分,分布在不同的节点上。副本是每个分片的备份,用于提高可用性和容错性,当主分片出现故障时,副本可以替代主分片提供服务。合理设置分片和副本数量可以平衡系统的性能、可用性和成本。

5、Elasticsearch 是如何实现 Master 选举的?

答案:前置前提是只有候选主节点(master:true)的节点才能成为主节点,并且要满足最小主节点数(min_master_nodes)以防止脑裂。选举流程大致为:第一步,确认候选主节点数达标,即满足 elasticsearch.yml 设置的 discovery.zen.minimum_master_nodes 的值;第二步,比较节点,先判定是否具备 master 资格,具备候选主节点资格的优先返回;若两节点都为候选主节点,则 id 小的值会成为主节点,这里的 id 为 string 类型。

6、详细描述一下 Elasticsearch 索引文档的过程。

答案:第一步,客户端向集群中的某节点写入数据,发送请求,如果没有指定路由 / 协调节点,请求的节点扮演路由节点的角色;第二步,节点接收到请求后,使用文档_id 来确定文档属于哪个分片,请求会被转到对应的主分片所在节点;第三步,主分片所在节点在主分片上执行写操作,如果成功,则将请求并行转发到其他副本分片上,等待结果返回。所有的副本分片都报告成功后,主分片所在节点将向协调节点报告成功,协调节点再向请求客户端报告写入成功。

7、Elasticsearch 的查询流程是怎样的?

答案:首先,客户端发送搜索请求,请求中包含查询条件、索引名称等信息。Elasticsearch 根据搜索请求中指定的索引名称和查询条件,确定哪些分片包含符合查询条件的文档数据,然后并行地向这些分片发送搜索请求,每个分片在本地执行相应的查询操作并返回部分结果。接着,Elasticsearch 将这些部分结果汇总起来,并根据查询要求对结果进行排序,最后将搜索结果返回给客户端。

8、在 Elasticsearch 中,如何进行索引数据的调优?

答案:可以从设计阶段、写入阶段、查询阶段等方面进行调优。设计阶段,根据业务增量需求,采取基于日期模板创建索引,使用别名进行索引管理,合理设置分词器,充分考虑字段属性等;写入阶段,写入前可将副本数设置为 0,关闭 refresh_interval,写入过程中采用 bulk 批量写入,写入后恢复副本数和刷新间隔,尽量使用自动生成的 id;查询阶段,禁用 wildcard 和批量 terms,充分利用倒排索引机制,能使用 keyword 类型尽量使用 keyword,数据量大时先基于时间敲定索引再检索,设置合理的路由机制等。

9、什么是 Elasticsearch 中的 Mapping?它有什么作用?

答案:Mapping 定义了文档的结构,包括字段的数据类型、索引方式、分析器等信息。它的作用是告诉 Elasticsearch 如何解析和存储文档中的数据,以及如何对字段进行索引和搜索,确保数据能够被正确地处理和查询。

10、Elasticsearch 支持哪些数据类型?

答案:常见的数据类型有文本类型(text)、关键字类型(keyword)、日期类型(date)、数值类型(如 integer、long、float、double 等)、布尔类型(boolean),还有二进制类型(binary)、地理空间类型(geo - point、geo - shape)等。

http://www.xdnf.cn/news/5454.html

相关文章:

  • MySQL的索引分类
  • 软件体系结构(Software Architecture)
  • IDEA:如何设置最上面菜单栏一直显示出来
  • 图片转ICO图标工具
  • 一个网球新手的学习心得
  • 单链表设计与实现
  • 锁相放大技术:从噪声中提取微弱信号的利器
  • C PRIMER PLUS——第9节:动态内存分配、存储类别、链接和内存管理
  • 程序中的内存从哪里来?
  • arctan x 导数推理
  • Java 1.8(也称为Java 8)
  • 4.4 os模块
  • MySql事务索引
  • 图灵奖获得者经典论文系列(1969):迈向人工智能的步伐(马文·明斯基)
  • 2023 河南ccpc
  • Python与矢量网络分析仪3671E:通道插损自动化校准(Vscode)
  • AI(学习笔记第三课) 使用langchain进行AI开发(2)
  • VSCode1.101.0便携版|中英文|编辑器|安装教程
  • 大模型项目:普通蓝牙音响接入DeepSeek,解锁语音交互新玩法
  • 【React中useRef钩子详解】
  • 《AI大模型应知应会100篇》第56篇:LangChain快速入门与应用示例
  • 【Leetcode 每日一题】1550. 存在连续三个奇数的数组
  • 【心海资源】【最新话费盗u】【未测】提币对方官方波场+没有任何加密+无后门+前端VUE
  • 元数据分类
  • 硬件中断请求号和lspci命令查看到的device id有关系吗?
  • 欧拉路与欧拉回路(模板)
  • LVGL简易计算器实战
  • TGV之LTX:《LTX-Video: Realtime Video Latent Diffusion》翻译与解读
  • RagFlow 完全指南(一):从零搭建开源大模型应用平台(Ollama、VLLM本地模型接入实战)
  • Flutter基础()