ElasticSearch近实时搜索的实现

本文探讨了ElasticSearch如何实现近实时搜索,包括不可变数据结构的运用,从不可变到可变的处理,分布式数据存储策略,以及如何通过Translog确保数据不丢失。重点在于理解ElasticSearch的Inverted Index和Segment管理,以及其在面对磁盘I/O挑战时的优化措施。
摘要由CSDN通过智能技术生成

ElasticSearch近实时搜索的实现


1.近实时搜索

1.1 实时与近实时

实时搜索(Real-time Search)很好理解,对于一个数据库系统,执行插入以后立刻就能搜索到刚刚插入到数据。而近实时(Near Real-time),所谓“近”也就是说比实时要慢一点点。

1.2 近实时的挑战

对于一个单机系统来说,这也并不容易实现,因为还要保证数据的持久化,还要利用缓存等技术加快数据的访问(注:这里不讨论内存计算系统)。对于ElasticSearch这样一个分布式系统,保证持久化的同时,还要初始化好用于全文检索的内部数据结构,做到近实时的难度可想而知。而这就是ElasticSearch大获成功的地方,也正是本文所要学习的主题:ElasticSearch是如何解决这些实现近实时搜索的难题的。


2.ElasticSearch的实现

2.1 不可变的数据结构

有经验的程序员一定知道,在做并发编程时,控制可变数据的并发访问是个难题。古往今来,各种粗细粒度的锁,信号量,Actor模型等概念层出不穷。而另一流派函数式编程更为彻底,尤其是纯函数式比如Haskell,用不可变数据来彻底解决这个问题。

在ElasticSearch这样主要服务全文检索的系统中,Inverted Index是核心数据结构。这里简单说一句,Inverted

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值