30道你不得不会的Elasticsearch面试题【附答案解析】

前言

随着企业对近实时搜索的迫切需求,Elasticsearch 受到越来越多的关注,无论是阿里、腾讯、京东等互联网企业,还是平安、顺丰等传统企业都对 Elasticsearch 有广泛的使用,但是在 Elasticsearch 6.8 发布以前,大部分 Elasticsearch 功能都是付费的,开源版本的 Elasticsearch 在集群管控方面能力有限,鉴于此,通用的实施方案就是给 Elasticsearch 添加一层网关,从而实现对 Elasticsearch 的管控。

全套Java面试资料白嫖:大家可以扫二维码免费领取

1、elasticsearch 了解多少,说说你们公司 es 的集群架构,索引数据大小,分片有多少,以及一些调优手段 。

  • 面试官:想了解应聘者之前公司接触的 ES 使用场景、规模,有没有做过比较大规模的索引设计、规划、调优。
  • 解答:如实结合自己的实践场景回答即可。
  • 比如:ES 集群架构 13 个节点,索引根据通道不同共 20+索引,根据日期,每日递增 20+,索引:10分片,每日递增 1 亿+数据,每个通道每天索引大小控制:150GB 之内。
  • 仅索引层面调优手段:

1.1、设计阶段调优

(1)根据业务增量需求,采取基于日期模板创建索引,通过 roll over API 滚动索引;

(2)使用别名进行索引管理;

(3)每天凌晨定时对索引做 force_merge 操作,以释放空间;

(4)采取冷热分离机制,热数据存储到 SSD,提高检索效率;冷数据定期进行 shrink操作,以缩减存储;

(5)采取 curator 进行索引的生命周期管理;

(6)仅针对需要分词的字段,合理的设置分词器;

(7)Mapping 阶段充分结合各个字段的属性,是否需要检索、是否需要存储等。

1.2、写入调优

(1)写入前副本数设置为 0;

(2)写入前关闭 refresh_interval 设置为-1,禁用刷新机制;

(3)写入过程中:采取 bulk 批量写入;

(4)写入后恢复副本数和刷新间隔;

(5)尽量使用自动生成的 id。

1.3、查询调优

(1)禁用 wildcard;

(2)禁用批量 terms(成百上千的场景);

(3)充分利用倒排索引机制,能 keyword 类型尽量 keyword;

(4)数据量大时候,可以先基于时间敲定索引再检索;

(5)设置合理的路由机制。

1.4、其他调优

  • 部署调优,业务调优等。
  • 上面的提及一部分,面试者就基本对你之前的实践或者运维经验有所评估了。

2、elasticsearch 的倒排索引是什么

lucene 从 4+版本后开始大量使用的数据结构是 FST。FST 有两个优点:

(1)空间占用小。通过对词典中单词前缀和后缀的重复利用,压缩了存储空间;

(2)查询速度快。O(len(str))的查询时间复杂度。

3、elasticsearch 索引数据多了怎么办,如何调优,部署

面试官:想了解大数据量的运维能力。

解答:索引数据的规划,应在前期做好规划,正所谓“设计先行,编码在后”,这样才能有效的避免突如其来的数据激增导致集群处理能力不足引发的线上客户检索或者其他业务受到影响。

如何调优,正如问题 1 所说,这里细化一下:

3.1 动态索引层面

基于模板+时间+rollover api 滚动创建索引,举例:设计阶段定义:blog 索引的模板格式为: blog_index_时间戳的形式,每天递增数据。这样做的好处:不至于数据量激增导致单个索引数据量非 常大,接近于上线 2 的32 次幂-1,索引存储达到了 TB+甚至更大。

一旦单个索引很大,存储等各种风险也随之而来,所以要提前考虑+及早避免。

3.

  • 13
    点赞
  • 153
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
很抱歉,我无法提供所有的Elasticsearch面试题及详细答案,因为这是一个非常广泛的主题,并且面试目因公司和职位的不同而有所变化。不过,我可以给你提供一些常见的Elasticsearch面试题以及它们的一般答案,帮助你更好地准备面试。 1. 什么是Elasticsearch?它的主要特点是什么? 答:Elasticsearch是一个开源的分布式搜索和分析引擎,用于处理大规模数据集。它具有以下主要特点: - 分布式架构:数据分片和复制,实现高可用性和可扩展性。 - 实时数据处理:支持快速的数据索引和搜索。 - 多种查询功能:支持全文搜索、过滤、聚合等多种查询方式。 - 强大的分析能力:支持实时数据分析和可视化。 - 易于使用:具有简单的RESTful API和丰富的客户端库。 2. 解释一下Elasticsearch的数据模型。 答:Elasticsearch使用文档型数据模型,其中每个文档都是一个JSON对象。文档包含了一条或多条字段,每个字段都有自己的数据类型。文档被组织在索引中,索引类似于关系数据库中的表。每个索引可以有多个分片和副本来实现数据的分布和冗余。 3. 什么是倒排索引?为什么Elasticsearch使用倒排索引? 答:倒排索引是一种常见的索引方法,它将每个词映射到包含该词的文档。相比于传统的正排索引(将文档映射到词),倒排索引更适合用于全文搜索。Elasticsearch使用倒排索引来快速定位包含特定词的文档。 4. 什么是分片和副本?它们的作用是什么? 答:分片是将索引拆分为多个部分的过程,每个分片可以存储在不同的节点上。分片可以提高搜索和存储的并发性,并支持数据的水平扩展。副本是分片的复制,用于提高数据的可用性和容错性。副本可以在不同的节点上存储,如果主分片不可用,副本可以接管服务。 5. 如何执行一个简单的查询? 答:通过使用Elasticsearch的RESTful API或客户端库,可以执行以下步骤进行简单查询: - 创建一个连接到Elasticsearch集群的客户端。 - 构造一个查询请求,指定索引、类型和查询条件。 - 发送请求到Elasticsearch,并接收返回的结果。 以上是一些常见的Elasticsearch面试题及一般答案,你可以根据这些问题进行学习和准备,同时也要根据自己的实际经验和知识来进行回答。祝你面试顺利!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值