谈谈你对ES的理解

ES是一个基于Lucene的开源搜索和分析引擎,以其分布式存储、倒排索引和优秀的扩展性实现快速检索。然而,不建议使用复杂关联查询和深度分页查询,因为这可能导致性能问题。ES适用于大规模数据场景,如网站搜索和日志分析,但需注意使用策略以优化性能。
摘要由CSDN通过智能技术生成

定义

ES是建立在全文搜索引擎库Apache Lucene基础上的一个开源的搜索和分析引擎。

特点

ES它本身具有一个分布式存储,检索速度快的一个特性。所以我们经常会用它来全文检索这一类的场景。

比如说像网站搜索,公司内部用了ELK做日志聚集和检索,来去快速查找服务器的日志记录,去定位问题,基本上涉及到TB级别的数据场景。我用ES是一个比较好的选择。

ES之所以这么快的原因

原因一

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

原因二

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

原因三

ES中存储的数据采用了分片机制。

原因四

ES的扩展性很好。我们可以通过水平扩展的方式去增加服务器来提升ES的处理性能。

能够胜任上百台服务器节点的扩展,并且支持TB级别的结构化或者非结构化数据。

原因五

ES内部提供的数据汇总和索引生命周期管理的一些功能。可以方便我们更加高效地存储和搜索数据。

存在的问题

当然ES并不是万能的,如果使用不恰当的话,也会带来一些性能的瓶颈。

不建议使用复杂关联查询

比如说ES里面,我们不建议去使用复杂关联查询。这个对性能影响很大。

避免深度分页查询

第二个避免深度分页查询,因为ES的分页是支持from和size参数。在查询的时候,每个分片必须要要去先构造一个长度为from加size的优先队列。然后回传到网关节点。

网关节点再对这些优先队列进行排序,再找到正确的size文档。

而当from足够大的时候,容易造成OOM以及网络传输性能差的一些问题。

参考资料【Java面试】谈谈你对ES的理解,看看普通人和高手的区别在哪里?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值