ElasticSearch底层Lucene的执行流程与细节

ElasticSearch基于Lucene实现全文搜索,利用倒排索引提供高效检索。文章探讨了如何在保持不变性下动态增加索引,以及ES与Lucene的关系。Lucene通过追加写入段、实时更新搜索、删除与更新操作、实时可搜索性和段合并等机制,确保数据持久化和搜索性能。
摘要由CSDN通过智能技术生成

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

ElasticSearch的底层是Lucene,Lucene通过倒排索引的方式来实现全文搜索功能。

想要实现全文索引,数据库需要在一个字段索引多个值。而传统的关系型数据库,只能是每个字段对应单个值的形式。不能够满足单字段索引单个值的需求。而倒排索引则能满足,倒排索引的每一个字段所对应的值——包含的文档,都是等同于该字段的或者包含该字段的。

倒排索引在这个包含的基础上做了拓展,它包含了,包含了该字段的文档数、字段在文档中所出现的次数、每个文档中出现的字段顺序、文档的长度、所有的文档的平均长度。这些统计数据,可以让ElasticSearch确定哪些文档与字段的关联性较大。哪些字段更加有“价值”。

不变性:

  • 安全,不需要锁。在从未需要更新索引的情况,不必担心多个线程试图同时进行更改。
  • 一旦索引被读取到内存中,就会一直存在。如果设备的内存足够大,大多数读取将来自内存,而不是磁盘,将极大地提高性能。
  • 其他的缓存在索引的生命周期内,依然存在,不必重新生成。
  • 通过编写单个的大型索引可以压缩数据,减少磁盘IO和缓存所需要的RAM(内存)量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值