Elasticsearch实战(第2版)
上QQ阅读APP看书,第一时间看更新

1.3 现代搜索引擎

为了满足不断增长的业务需求,现代搜索引擎每天都在积极拥抱令人兴奋的新功能。廉价的硬件加上数据的爆炸性增长,促成了这些现代搜索巨兽的出现。让我们考虑一下当今的搜索引擎及它们提供的功能和特性,我们可以总结出一个好的现代搜索引擎应该提供以下功能:

对全文(非结构化)和结构化数据提供一流的支持;

提供输入建议、自动更正和“你是不是想找”推荐;

容忍用户的拼写错误;

提供对地理位置的搜索能力;

可以根据动态的需求轻松扩展,无论是扩容还是缩容;

提供闪电般的性能,即快速的索引和搜索能力;

提供高可用和容错的分布式系统架构;

支持机器学习功能。

在本节中,我们先简要讨论现代搜索引擎的主要功能,然后看一下市场上存在的一些搜索引擎,包括Elasticsearch。

1.3.1 功能

现代搜索引擎是为了满足全文搜索的需求而开发的,同时也支持其他高级功能。它们旨在通过索引和搜索大量文本数据,为用户提供快速且相关的搜索结果(本书后续提及搜索引擎时会省略“现代”这个词)。

搜索引擎可以快速索引大量文本数据并使其可搜索。这个过程通常包括将文本数据拆分为词元,并建立一个倒排索引,从而将每个词元与包含它的文档关联起来。

搜索引擎还需要能进行高级文本分析和处理,如同义词、词干提取、停用词和其他自然语言处理,以便从文本中抽取含义,从而提高搜索结果的质量。它们可以处理各种用户查询,并根据相关性和流行度等各种因素对搜索结果进行排序,还可以处理高查询负载和大量数据,并通过向集群添加更多节点来实现水平扩展。

搜索引擎还应提供高级分析的能力,对数据进行分析,为企业提供总结、归纳和商业智能。它们还需要支持丰富的可视化、近实时搜索、性能监控和基于机器学习的洞察等。

1.3.2 流行的搜索引擎

尽管市面上有很多搜索引擎可供选择,但本书只提及其中 3 种,即 Elasticsearch、Solr 和OpenSearch,它们都是基于Apache Lucene构建的。

1. Elasticsearch

Elastic的创始人Shay Banon在2000年年初开发了一款名为Compass的搜索产品。它是基于Apache Lucene的开源搜索引擎库。Lucene是Doug Cutting用Java编写的全文搜索库。因为Lucene只是一个库,所以我们必须通过它的API将其导入和集成到应用中。Compass和其他搜索引擎一样,使用Lucene来提供通用的搜索引擎服务,这样我们就不必从头开始将Lucene与应用进行集成。Shay最终决定放弃Compass,转而专注于Elasticsearch,因为Elasticsearch潜力更大。

2. Apache Solr

Apache Solr是一款基于Apache Lucene构建的开源搜索引擎,诞生于2004年。Solr是Elasticsearch的有力竞争对手,拥有一个蓬勃发展的用户社区,并且它比Elasticsearch更接近开源——Elastic在2021年年初从Apache许可证切换到Elastic许可证和服务器端公共许可证(Server Side Public License,SSPL)。尽管Solr和Elasticsearch在全文搜索方面都表现得很出色,但在数据分析方面,Elasticsearch可能更胜一筹。

虽然这两款产品在几乎所有功能上都在竞争,但Solr在处理大型静态数据集的大数据生态系统中更受青睐。显然,在选择产品之前,需要进行原型设计和分析,普遍的趋势是,首次与搜索引擎集成的项目倾向于考虑Elasticsearch,因为它拥有一流的文档、社区和几乎无门槛的部署方式。在采纳并使用一个搜索引擎之前,必须对预期使用场景进行详细的对比。

3. Amazon OpenSearch

Elastic在2021年更改了其许可政策。改后的许可适用于Elasticsearch 7.11及以上版本,从开源转变为Elastic许可证和SSPL的双重许可。这种许可允许社区免费使用该产品,但托管服务提供商不能再将这些产品作为服务提供。亚马逊网络服务(Amazon Web Servies,AWS)曾创建了Elasticsearch的一个分支版本——Open Distro for Elasticsearch,并将其作为托管服务提供,Elastic和AWS之间因此发生了争执。这场争执导致了Elasticsearch的许可证变更,最终导致了OpenSearch的诞生。

随着Elastic从开源许可模式转向SSPL模式,一个名为OpenSearch的新产品被开发出来,填补了新许可协议留下的巨大空白。OpenSearch的基础代码是基于开源的Elasticsearch和Kibana 7.10.2版本创建的。该产品的第一个正式发布版本1.0于2021年7月发布。OpenSearch有望成为Elasticsearch在搜索引擎领域的竞争对手。

现在,我们已经对现代搜索引擎和搜索领域的格局有了基本的了解,下面就看一下Elasticsearch概述。