ElasticSearch面试题

1.介绍下es的架构?

es采用的是分布式的架构,es集群中会有多个结点,而结点的角色主要有下面几种。

协调结点:

请求路由能力,将请求内容将请求转发给对应的结点进行处理。

master结点:
结点管理:处理结点的加入和离开

索引管理:负责索引的创建,删除,修改。以及索引分片的分配任务。

数据结点:

数据的存储和管理。管理包括处理数据的新增,修改,查询等请求。

2. 介绍下es的查询过程的相关知识? 

es的查询过程分两段,先query,再fetch。

在query阶段,有协调结点向数据结点发出查询指令,数据结点会返回匹配的id和排序权重

在fetch阶段,协调结点会根据排序权重重新排序,确定当前查询需要返回的数据范围。再去数据结点fetch具体的数据。

es内部如何使用缓存来优化查询数据?

解答这个问题,需要先了解es中索引的结构。首先,es的索引类似于mysql中的表,是用来存储文档数据的。基于分布式的特点,es将一个索引划分成多个分片,来提高索引的读写性能。然后,分片中的数据又是由一个个的segment构成的。

那基于索引,分片,segment这样的结构,es中存在segment级别的缓存和分片级别的缓存,来提高查询的检索速度。

其中作为数据存放的基本单元,segment在生成之后,除了合并和删除的场景,其它情况是不会变更的。对索引中文档的修改操作,都是会存在新的segment中。查询的时候,对与不同segment中包含同样id的文档的情况,也是会优先展示更新的版本号的记录。segment上的数据比较稳定,也是适合使用缓存的。

es中的索引结构?

es中使用的是倒排序的索引结构,这种结构的玩法就是存放关键词和包含了关键词的文档的对应关系。可以想象成是一个map结构,key是关键词,value是一个列表,列表中存放了关键词出现的文档id。检索的复杂度是O(1),速度很快。当然,为了减少存储key所占有的空间。实际的存储结构会使用到前缀索引,可以减少重复字符占用的空间。

相关推荐

  1. Elasticsearch面试

    2023-12-18 08:04:05       36 阅读
  2. ElasticSearch面试

    2023-12-18 08:04:05       55 阅读
  3. Elasticsearch 面试指南

    2023-12-18 08:04:05       24 阅读
  4. 面试分享——Elasticsearch面试

    2023-12-18 08:04:05       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-18 08:04:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-18 08:04:05       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-18 08:04:05       82 阅读
  4. Python语言-面向对象

    2023-12-18 08:04:05       91 阅读

热门阅读

  1. vue打包后el-image图片不出来

    2023-12-18 08:04:05       70 阅读
  2. 【Linux基础命令使用】

    2023-12-18 08:04:05       58 阅读
  3. 10 在Vue3中使用SCSS编写样式

    2023-12-18 08:04:05       47 阅读
  4. 微信小程序中wxss和css的差异

    2023-12-18 08:04:05       63 阅读
  5. uniapp上传文件api如何使用

    2023-12-18 08:04:05       61 阅读
  6. 【Vue原理解析】之虚拟DOM

    2023-12-18 08:04:05       55 阅读
  7. RabbitMQ

    2023-12-18 08:04:05       60 阅读
  8. 重温经典struts1之八种页面跳转或请求转发的方式

    2023-12-18 08:04:05       53 阅读