Elasticsearch的简史(2014)

2020-12-28 02:44:44

Elasticsearch的创始人与Lucene分享了他的经验,并告诉我们Elasticsearch都是如何从为妻子创建一个简单的烹饪应用程序开始的。

从GitHub到The Guardian,许多主要企业都转向Elasticsearch来帮助理解用户交互数据并改善其搜索结果。 JAX小组的Diana Kupfer跟上了搜索引擎的创始人Shay Banon。

贾克森特(JAXenter):您于2004年创立了首个基于Lucene的技术Compass。

Shay Banon:回忆起Compass的诞生总是使我满脸微笑。指南针以及我参与Lucene的机会都是偶然的。当时,我是新婚夫妇,刚搬到伦敦,以实现成为一名厨师的梦想来支持我的妻子。我失业了,迫切需要一份工作,所以我决定尝试使用``新时代''技术,以使自己的技能得到更新。仅在您实际尝试构建某种东西时才能使用新技术,因此我决定构建一个应用程序,让我的妻子可以用来捕获她在厨师课程中收集的所有烹饪知识。

我为该烹饪应用程序选择了许多不同的技术,但在我看来,它的核心是一个单一的搜索框,其中烹饪知识的经验将开始于一个框,其中键入概念,思想或配料将开始探索可能的方法

这很快使我想到了Lucene,这是当时可用于Java的事实上的搜索库。我沉迷于其中,Compass诞生于试图简化在典型Java应用程序中使用Lucene的努力(从概念上讲,它只是从Lucene的“ Hibernate”(Java ORM库)开始)。

我完全迷上了这个项目,并且正在做更多的工作而不是烹饪应用程序本身,直到花了我大部分时间。我决定在几个月后将其开源,然后立即开始起飞。 Compass基本上允许用户轻松地将其领域模型(在典型程序中将应用程序/业务概念映射的代码)映射到Lucene,轻松对其进行索引,然后轻松对其进行搜索。这种自由导致人们在出乎意料的情况下开始使用Compass和Lucene。想象一下您的金融应用程序中已经有交易模型,可以使用Compass轻松将交易索引到Lucene中,然后进行搜索。跨交易任何方面的搜索自由度使用户可以将这种自由传达给他们的用户,事实证明这是一个非常强大的概念。

实际上,这使我能够与正在发现的实际用户进行交谈和合作,就像我一样,当发现向用户提供业务价值时,搜索所具有的惊人能力。哦,顺便说一句,我的妻子仍在等待该烹饪应用程序。

我将首先从与Apache Lucene项目相关的人员开始。虽然我大概比目前的大多数Apache Lucene开发人员早,但是我已经看到人们过来投资Lucene使其达到我从未想过的水平。在Compass和Elasticsearch初期,我花了无数小时与Mike McCandless和Simon Willnauer之类的人谈论Lucene的许多不同方面。

当我们开始Elasticsearch时,我想确保我们建立了一家能够维持Apache Lucene的快速发展速度和卓越水平的公司。从一开始就让我兴奋的是,我们已经与Lucene的专家(例如Simon,Uri Boness和Martijn Van Groningen)组成了团队。

即使这样,如果您当时再问我,我绝对不会想到今天我们能够吸引到一支专注于Apache Lucene的强大团队。看到迈克,罗伯特·缪尔,马克·哈伍德,阿德里安·格兰德这样的人以及诸如阿里克·齐勒尔和瑞安·恩斯特这样的新露西恩贡献者加入我们公司真是令人感到羞耻,并帮助推动露西恩迈向比今天更好,更强大的状态。

如果您查看Elasticsearch,很高兴看到Elasticsearch可以``扩展''Apache Lucene的领域。例如,需要提高Apache Lucene的弹性,从索引(从Lucene的角度来看)出乎意料的强调索引速度,或者在工具方面对Lucene的可见性。

没有一天,我没有听到任何Lucene开发人员说“我从没想过将Lucene用于解决此用例”或以这种方式使用。对我来说,这很了不起,因为我们正在使用Elasticsearch中的一个平台创建一个环境,在这个环境中个体之间发生了创造性的联系,这会导致Apache Lucene向前发展,同时作为一家公司,我们有能力给我曾经合作过的最有才华的开发人员之一,以实现这一目标。

至于技术本身,我认为Apache Lucene一直是并将继续是那里最好的技术创新之一。足以说出诸如自动机,有限状态传感器,文档值,随机测试之类的东西,并且清单还在继续。这也证明了该项目的成功,我相信Apache Lucene是目前唯一能够持续发现Java或JVM中的错误的项目之一,直到Oracle从Apache寻找验证新Java版本的地步为止Lucene项目。

拥有构建分布式系统的所有经验,您说什么是需要特别注意的最佳实践和领域?

我将首先开始一个事实,即构建一个分布式系统并不容易,术语“分布式系统”涉及的范围很广,因此并非所有范围都适用于所有项目。一旦Elasticsearch不再是一个人的项目,而我们围绕它成立了一家公司,发生的一件奇妙的事情是,我们可以对Elasticsearch本身的开发投入更多的资金。

公司创始人之一西蒙·威尔瑙尔(Simon Willnauer)接手了Elasticsearch和团队,并开始将其推向一个全新的高度。他的第一个任务是为其创建一个全新的测试基础结构(顺便说一句,它受到Apache Lucene测试基础结构的启发,其中包括Randomized Testing,这是一个很棒的话题)。

在测试中投入了全新的精力之后,我要说的是,构建分布式系统最重要的方面之一就是能够测试和验证其行为。从概念上讲,当有人想到分布式系统时,这意味着在不同的机器上通过网络运行的不同进程。在进行测试时,紧随其后的想法是应该对其进行测试。这会创建一个非常复杂的测试工具,需要花费很长时间才能运行,并且在发生故障时很难进行调试。

在Elasticsearch,我们投入了大量时间来构建测试工具,以运行我们的分布式测试,作为``常规''集成测试的一部分。这意味着每运行一次测试,在单个JVM中执行一次Elasticsearch,就可以启动并运行整个集群。这包括简单的事情,例如在索引数据时滚动重新启动,还包括更有趣的测试,例如从模拟网络断开一直到模拟长时间GC暂停,所有这些对于验证分布式系统行为至关重要。

能够依靠这样的基础架构并能够非常简单,快速地运行这些测试,就可以构建一个更具弹性的系统,并更容易地暴露出“暗角”和边缘情况。

显然,构建分布式系统还有很多事情,但是正如西蒙说的:“如果没有测试,您怎么能说出它的作用呢?”这是建筑之一的最基本部分。

为了满足当今的业务需求,像Elasticsearch这样的搜索服务器必须满足的核心标准是什么?

一切都以Elasticsearch试图实现的目标为核心,这是一个非常简单但雄心勃勃的目标。当今的企业淹没了他们希望能够感知并提取可采取行动的见解的数据,他们希望以最简单的方式做到这一点,从而为他们带来最大的价值。

事实证明,搜索是实现此目的的绝妙方法。当我说搜索时,我的意思是广义的,个人就像我个人最初使用的烹饪应用程序一样,正在寻求从数据中获得见识和知识。当我们在Elasticsearch说搜索时,我们指的是自由文本搜索,结构化搜索和分析以其最纯粹的形式结合在一起的方式,无论数据量如何,都是实时的。

您还记得《少数派报告》中汤姆·克鲁斯(Tom Cruise)的角色与他探索的数据互动的场景吗?不断学习并将其塑造成他所追求的东西,实时放大和缩小而没有任何限制?这就是我们试图使我们的用户与Elasticsearch一起做的事情(尽管没有花哨的互动,至少现在还没有,但嘿,谷歌起初只是一家搜索公司)。

这是一个宏伟的目标,但我深信我们有能力执行。令人惊讶的是,我们的用户不断鼓励我们并验证我们走在正确的道路上。用户每天告诉我们,他们设法使用我们的产品实现的目标是他们从未想到过的。他们不断寻找使用Elasticsearch的创新方法,我认为这是一款出色产品的标志之一,它可以使用户达到他们最初甚至从未想过的创造力水平。

Elasticsearch被广泛的组织使用,包括Foursquare,Wikimedia,GitHub或CERN。去年,您在接受JAXenter.com的采访时说:“数据内容本身,尽管很有趣,但在一定程度上变得无关紧要”。这本质上是Elasticsearch成功的关键吗?

这绝对是它的核心方面。我使用Elasticsearch遇到的第一个障碍是试图让用户通过我以前的开源项目Compass在更狭窄的用户基础上实现我所看到的东西。那时,当对用户说“搜索”时,他们不会立即掌握一个用户可以使用的所有可能性。

十年前,我什至都不了解它的范围。但是,通过建立一种允许用户将任何领域模型映射到“搜索”(即Lucene)的技术,它使跨越这种精神障碍变得更加简单,并且突然间,使用Compass和Lucene的用例开始发生爆炸式增长。支持“不是您典型的搜索用例”。

通过Elasticsearch,通过标准化JSON和RESTful接口,我看到用户看到了它,但是哦,我是在更广泛的用户群中看到的:来自各种变体的开发人员,从不同的编程语言,不同的框架到许多不同的用例。最后,这全都归结为搜索的力量,从技术上讲,归结为Elasticsearch和Apache Lucene的力量。从实现的角度来看,无论数据是您的典型网页/ Word文档,还是在一定程度上是Foursquare上的位置,银行的交易,Web服务器日志或各种指标,都没关系。所有这些都有效地结合了人们想要浏览,搜索的结构化和非结构化数据,并具有少数群体报告类型的经验,而不论数据的形状或数量如何。

今年夏天,Elasticsearch在C轮融资中筹集了7000万美元。这对公司的路线图有什么影响?

如您所见,我们作为一家公司有非常宏伟的目标。我首先要提到的是,作为一家公司,我们的最高价值之一就是尽快为用户提供有形价值。为此,我们并没有仅止于“ Elasticsearch”。成立公司时,我们要做的第一件事就是确保那里有所有流行语言和框架的正式客户驱动程序。如今,我们拥有与Ruby,Python,PHP,Perl,.NET和Java的客户和集成,并且还有更多。我们想确保用户对Elasticsearch的丰富经验以最简单的形式一直到他们选择的开发平台。

我们并没有止步于此,我们也非常幸运,拉希德·汗(Rashid Khan)加入我们投入时间建设Kibana,这是人们轻松可视化Elasticsearch中数据的一种绝妙方式,可以揭示其所有强大方面实时。 Logstash及其创建者Jordan Sissel也发生了同样的事情。我们看到人们经常使用Logstash将数据吸收到Elasticsearch(以及其他系统)中,并希望确保我们为Jordan提供了专注于Logstash的平台并围绕它建立一个强大的团队。

我们还看到人们将Elasticsearch与Hadoop结合使用,从而为Hadoop带来了非常缺失的超实时提升。 Costin Leau加入了我们,并通过Elasticsearch帮助建立了最好的Hadoop集成模块之一,支持所有Hadoop发行版,包括香草Apache Hadoop,MapR,Cloudera和Hortonworks。可以想象,这是个大项目,开发我们拥有的所有不同产品需要大量投资。

这是我们明智的主要目标产品,以确保我们建立强大的产品基础,并继续传递以Elasticsearch开头的核心价值。不过,公司不止于此。即使公司中的大多数人都是开发人员,我们仍然看到客户如此惊人的需求,因此我们需要确保我们建立的业务能够满足客户的需求。

通过进行投资,我们可以确保我们的公司不仅可以执行短期目标,还可以制定雄心勃勃的长期计划并尽快开始执行它们。 这让我感到非常兴奋,因为我们试图实现的目标是既谦虚又以某种方式成为可能。