Elasticsearch 第0期:ES的前世今生

前言

看ES的介绍时,肯定会有一句话,ES是基于Lucene进行开发的。但Lucene的其他小知识可能不会再进行叙述。当需要了解一个事物的时候,不能只了解该事物本身,还需要了解该事物的历史和发展。因此就找了相关的资料

整理了一下ES的发展史。

下面这幅图展示了从Lucene出发两个不同的发展方向。上面那条线的发展方向是大数据存储和分析,即发展到现在的Hbase。下面那条线则是ES的发展方向--全文搜索。详情见下。

巨人的肩膀

 在讲ES发展时,不得不提一下Lucene。在介绍Lucene时,也不得不介绍一下他的发明者,一个大佬--- Doug Cutting 。

Lucene的故事还得从Google 成立的时候说起,1998年Google靠搜索引擎发家。其中一个叫做Doug Cutting 的工程师也对搜索引擎感兴趣,于是下班的时候自己开发了一套函数库Lucene,Lucene小且轻便,可以让中小型应用具备全文搜索功能。正如上面时间轴所示,2000年发布第一版,广受好评,2001年就被收入Apache软件基金会了。

与其说是这是一个项目,不如说这只是一个jar包。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。

好了,Lucene和Doug的故事就到这里了。后面就讲讲Doug这个大牛了。

在2001年Lucene被Apache收入三年后,即2004年,Doug Cutting 在 Lucene 的基础上,加了网络爬虫和一些网页相关的功能,使Lucene的功能从简单的站内搜索拓展到全球的网络搜索,命名为Nutch

随着网络的发展,网上的内容也在成指数级增长,现在我们称之为大数据。为此,2003年 Google 公布了为了存储海量搜索数据而开发的专业文件系统 GFS(Google File System)。2004年,Doug Cutting 基于 Google 的 GFS 论文,实现了分布式文件存储系统,命名为 NDFS(Nutch Distributed File System)。

大数据既然能存储了,那么需要进行分析才可以发挥大数据的价值。于是也是在2004年,Google 又发表了一篇技术学术论文,介绍了 MapReduce 编程模型用于大数据的分析和计算。次年2005年,Doug Cutting 又在搜索引擎 Nutch 实现了该功能 。

2006年,Yahoo(雅虎)公司挖走 Doug Cutting来自研搜索引擎。后来,Doug Cutting 将 NDFS 和 MapReduce 进行了改造升级,并重新命名为 Hadoop。同时,NDFS 也改名为 HDFS(Hadoop Distributed File System)。

2006年同年,Google 又介绍了自己的 分布式数据存储系统 BigTable,可能这个名字大家不是很熟悉。如果说Hbase,对大数据有一定了解的肯定听过这个名字。Doug Cutting 又在 Hadoop 系统里面引入了 BigTable,然后命名为 HBase

2008年1月,Hadoop 也正式成为 Apache 基金会的顶级项目。

扯得有点远。虽然Lucene难以使用,但它确引申出了很多伟大的产品。从Lucene发展也可以看出,老美的工程师文化在一定程度了促进了互联网的发展。

出生

许多年前,一个刚结婚的名叫 Shay Banon 的失业开发者,跟着他的妻子去了伦敦,他的妻子在那里学习厨师。 在寻找一个赚钱的工作的时候,为了给他的妻子做一个食谱搜索引擎,他开始使用 Lucene 的一个早期版本。

直接使用 Lucene 是很难的,因此 Shay 开始做一个抽象层,Java 开发者使用它可以很简单的给他们的程序添加搜索功能。 他发布了他的第一个开源项目 Compass

后来 Shay 获得了一份工作,主要是高性能,分布式环境下的内存数据网格。这个对于高性能,实时,分布式搜索引擎的需求尤为突出, 他决定重写 Compass,把它变为一个独立的服务并取名 Elasticsearch。

第一个公开版本在2010年2月发布,从此以后,Elasticsearch 已经成为了 Github 上最活跃的项目之一,他拥有超过300名 contributors(目前736名 contributors )。 一家公司已经开始围绕 Elasticsearch 提供商业服务,并开发新的特性,但是,Elasticsearch 将永远开源并对所有人可用。

据说,Shay 的妻子还在等着她的食谱搜索引擎…

如今ES(2024年4月)在数据存储排名第7,在搜索引擎排名排名第1

数据存储排名

搜索引擎排名

发展

ES从一开始就将自己定位为搜索引擎,而不是数据存储。这样一个定位,让ES后面有了更广阔的应用场景,从搜索场景延伸到运维场景,也就是现在成熟的ELK(Elasticsearch、Logstash 和  Kibana)

2009年,一位著名的工程师发布了Logstash作为采集管道来进行系统日志抓取。大家发现将日志发送到 ES 之后,不仅能够存储大量的数据,而且利用ES全文搜索的特性,可以很方便地把数据找出来。妥妥吊打关系型数据库和普通的文件存储,于是 Logstash 搭配 Elasticsearch 变得很受欢迎。

2013年,Logstash 被Elasticsearch 公司收购。

 但是Logstash 自带的 UI 查询日志的界面比较简陋,程序员一般都是有洁癖的,于是一个有洁癖的工程师用 PHP ,Ruby,AngularJS三种语言为Logstash写了前端界面-- Kibana ,不仅有日志的搜索和查看,还加上了一些统计展示功能。

同样在2013年,Kibana 被 Elasticsearch 公司收购。

于是乎,ELK 出世(Elasticsearch、Logstash 和 Kibana ),风靡了整个运维界。可是一个系统的运维不能只看系统打的日志啊,还需要有网络监控,服务器监控等等。于是后面又引入了 Beats 家族。这是一系列非常轻量级的数据收集端,,比如:

  1. Packetbeat 可以实时监听网卡流量,并实时解析网络协议数据,可用来做 NPM 网络数据分析;

  2. Metricbeat 可以用来收集服务器,以及服务器上部署的应用服务的各项监控指标数据,这样就可以替代 Zabbix等传统的监控软件,来做服务器的性能指标分析;

  3. Auditbeat可以实时收集服务器的行为事件,用于安全方面的入侵检测和安全日志审计分析;

  4. Winlogbeat用于 Windows 平台的事件日志收集;

Elasticsearch、Logstash、Kibana、Beats ,这几个放在一起,就叫作 Elastic Stack。其结构如下

未来

当前互联网最火的一个话题,当属大模型LLM。作为与时俱进的产品,ES肯定也不能错过这个风口啊。

高度相关的搜索结果可以增加搜索应用程序上的用户参与度和用户粘度。在新的 LLM 和生成式 AI 世界中,优秀的搜索引擎可以更好理解用户意图,提供前所未有的响应特定性。

ES开发的Elasticsearch Relevance Engine(ESRE)结合了 AI 的最佳实践和 Elastic 的文本搜索。ESRE 为开发人员提供了一整套将复杂的检索算法和与大型语言模型(LLM)集成的能力。 为生成式 AI 世界带来了新的能力。

虽然研究了两年的深度学习,但对于LLM知之甚少,就不多说了。不过现在可以预计的将来,ES一定可以在LLM领域发挥更大的作用。毕竟大模型首先做的就是搜索嘛。

总结

虽然在之前的工作中,多多少少用过ES,有在开发用的,也有在运维过程中接触的。但没有系统看到ES的相关知识和发展。通过这次的学习和整理,明白ES不是凭空出现的,也不是独立发展的。

  • 22
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值