欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Java面试 "带你一次性了解面试中的必要问题,谈谈你对ES的理解。

最编程 2024-04-28 22:22:35
...

有粉丝在评论区留言说,让我拍一期关于ES的视频。今天,我给大家分享一下我对ES的理解。

1、ES是什么

ES全称是Elastic Search,它是一个建立在全文搜索引擎库Lucene基础上的开源搜索和分析引擎。ES它本身具有分布式存储、检索速度快的特性。所以,我们经常会用它来实现全文检索的功能。

Elastic官网对ES的定义已经不再是ElasticSearch这一个组件,而是指Elastic Stack生态。

而Elastic Stack主要包括ElasticSearch、Logstash、Kibana,这三个经典组合也称之为ELK。ElasticSearch主要用来做数据存储、Logstash主要用来做数据采集,Kibana主要用来做数据可视化展示。

因为ES应用更广泛的场景还是ElasticSearch,所以,下面我们给大家分享的ES还是单指ElasticSearch。比如,网站搜索,日志聚集和检索,这些都可能会涉及到TB级别的数据场景,用ES是一个比较好的选择。

2、ES为什么这么快

ES之所以这么快,我认为主要有以下几个方面的原因:

1、ES是基于Lucene开发的一个全文搜索引擎,一方面Lucene是擅长管理大量的索引数据;另外一方面,它会对数据进行分词以后再保存索引。这样,能够去提升数据的检索效率。

2、ES采用了倒排索引。所谓倒排索引就是通过属性值来确定数据记录位置的索引,从而避免全表扫描的问题。

3、ES存储数据采用了分片机制。

4、ES扩展性很好,支持通过水平扩展的方式来动态增加节点,从而提升ES的处理性能。能够支持上百台服务器节点的扩展,并且支持TB级别的结构化数据和非结构化数据。

5、ES内部提供的数据汇总和索引生命周期管理的功能,更加便于高效地存储和检索数据。

3、ES应用指南

当然,ES并不是万能,如果使用不恰当,也会带来一些性能瓶颈。不太建议使用复杂的关联查询,这对ES的性能影响非常大。

另外,还要避免深度分页查询。因为,ES的分页是通过from和size参数来实现,也就是说,在查询的时候,每个分片必须要先构造一个长度为from + size的优先队列,然后回传的网关节点。网关节点再对这些优先队列进行排序,再找到正确的size文档。而当from足够大的情况下,容易造成OOM以及网络传输性能下降的问题。

以上就是我对ES的理解。

我是被编程耽误的文艺Tom,如果我的分享对你有帮助,请动动手指分享给更多的人。关注我,面试不再难!

最后, 6/7/8月份资料文档已整理,包含如下↓(还在持续更新中!):

①100道最新大厂经典面试题解析资料文档!

②15万+字Java面试题解析和配套答案!

③从应届生到高级开发都适用的简历模板!

④从入门到精通的程序员学习路线图!

完整版面试资料和答案以及PDF文档 :


扫描下方名片领取!
↓     ↓     ↓