了解弹性搜索
01.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是一个比较好的选择。
02.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以及网络传输性能下降的问题。
4.粉丝福利
我是被编程耽误的文艺Tom,关注我,面试不再难!
最近很多同学问我有没有java学习资料,我根据我从小白到架构师多年的工作经验整理出来了一份50W字面试解析文档、简历模板、学习路线图、java必看学习书籍、需要的小伙伴
可以点击下方名片扫描二维码
↓↓↓↓↓↓↓↓↓↓↓↓↓↓
推荐阅读
-
2021 苹果电脑选购建议,资深用户带你了解 MacBook Air MacBook Pro(带 M1)
-
探索和构建 LLaMA 3 架构:深入了解组件、编码和推理技术 (IX) 变压器架构
-
Linux 内存管理:了解正常波动背后的机制
-
了解 margin collapse 和 margin merging 及其解决方案
-
路径规划 - 搜索算法详解 (III):用 MATLAB 代码解释 RRT 算法
-
数字化背后的秘密:20 个系统,让你一次了解个够!
-
深入了解 C++ lambda 表达式:用法、特性和最佳实践
-
每个人都需要了解一些心理学知识--阅读 "普通心理学"(上)的简短说明
-
机密段落搜索程序
-
一篇 10,000 字的文章,让您快速了解 Testcontainers。