Meilisearch vs Elasticsearch

为什么我应该考虑Meilisearch而不是Elasticsearch?

如果你正在寻找一个搜索引擎,试图做一切从应用程序搜索到日志分析,你不介意花费必要的时间和精力,使它为您的搜索需求工作,那么Elasticsearch可能适合你。

但是,如果易用性,性能和相关性对您来说很重要,那么Meilisearch就是为您设计的。为了提供一个不错的搜索体验,您是否已经筋疲力尽地搜索文档页面,配置大量参数?我们理解你的沮丧。

老实说,即使您拥有世界上最灵活和最强大的工具,如果使用和理解起来很痛苦,它也没有多大意义。这就是我们创建Meilisearch的原因:为开发人员提供所需的工具,让他们毫不费力地创建卓越的搜索体验。

在做出决定之前,您需要了解这两种引擎之间的差异以及您计划使用它们的目的。

理解主要差异及其重要性

自2010年创建以来,Elasticsearch已迅速成为搜索引擎市场的热门选择,在各种应用程序和数据集中找到了用途。然而,虽然它无疑是一个强大的工具,用于繁重的全文搜索,但在使用前需要进行大量的配置,这意味着所有这些功能都需要很高的资源成本。

Elasticsearch的开源性质在其流行和采用方面发挥了重要作用。而且,由于历史上没有太多的开源替代方案,开发人员继续将Elasticsearch作为默认解决方案,并最终在设置和培训上损失了不成比例的时间。

这就是Meilisearch进来的地方。它是一个开源、易于使用、快速、相关的搜索引擎,可以轻松融入任何应用程序、网站和工作流程。它具有开箱即用的默认设置,可满足大多数项目的需求,同时还可高度自定义以满足个性化需求。

Elasticsearch是用来做什么的?

Shay Bannon创建了Elasticsearch,这是一个基于Apache Lucene库的分布式搜索和分析引擎。Elasticsearch现在与其他用于数据收集、分析和可视化的工具一起开发。这些产品被设计成一个集成的解决方案,称为“弹性堆栈”。

主要优势

Elasticsearch的主要优势在于它的灵活性和可扩展性,以及它的聚合和分析能力。

灵活性Elasticsearch为所有类型的数据提供搜索和分析。它具有广泛的用例,涵盖从简单的站点搜索,日志数据的管理和分析到端点安全的所有内容。扩展性Elasticsearch的分布式架构通过在集群中添加或删除节点来实现可扩展性,使其成为管理大量数据的合适选择。汇总和分析Elasticsearch提供高级聚合和分析功能,使用户能够从数据中提取见解并执行复杂的分析操作。

挑战

Elasticsearch是一个非常强大的工具,但它也是一个非常复杂的工具。它的设置和维护可能很困难。由于没有实现基本网站或应用搜索的默认值,因此需要对其进行配置。虽然Elasticsearch有大量的文档,但在开始实现之前还有很多东西需要学习,这可能会让人生畏,特别是对于新用户来说。

在执行第一次搜索之前,您需要设置几个参数,包括相关性或错别字容忍度,这是现代应用程序或网站搜索中的必备条件。可能需要一些时间来熟悉这个过程。

让我们看一个例子。给定一个新闻标题的数据集,下面的请求要求在标题中包含“Khandy Kardashian Kendall詹纳”的结果:

代码语言:javascript
复制
GET news_headlines/_search
{
 "query": {
   "match": {
   "headline": {
       "query": "Khloe Kardashian Kendall Jenner"
   }
   }
 }
}

以下是Elasticsearch的默认响应

代码语言:javascript
复制
{
   "_index": "news_headlines",
   "_type": "_doc",
   "_id": "E9CoJ3cBwsjPafpAr39g",
   "_score": 17.15928,
   "_source": {
       "_date": "2015-05-16",
       "short_description": "",
       "@timestamp": "2015-05-16T00:00:00.000-06:00",
       "link": "https://www.huffingtonpost.com/entry/kendall-jenner-kourtney-kardashian-height-difference_n_7297968.html",
       "category": "ENTERTAINMENT",
       "headline": "Kendall Jenner And Kourtney Kardashian Are Not Quite Twins In Hilarious Instagram Photo",
       "authors": "Lily Karlin"
   }
}

与人们的预期相反,Elasticsearch返回的第一个结果并不是最相关的;它只包含一些搜索词。正如你在“headline”字段中看到的:它包含“Kendall詹纳”,这是预期的,但是我们找到的是“Kourtney Kardashian”,而不是“Khandy Kardashian”。

当查询包含多个术语时,用户通常期望搜索引擎优先考虑包含所有术语的结果,而不仅仅是其中的一些。换句话说,当搜索多个术语时,用户通常期望“AND”操作而不是“OR”。

Elasticsearch的match查询默认使用“OR”逻辑。如果一个文档包含其中一个搜索词,Elasticsearch会将该文档视为命中。如果我们希望所有的查询词都出现,我们必须在查询中添加“AND”运算符,但是我们得到的结果要少得多。

Elasticsearch提供的另一个调整相关性的选项是使用minimum_should_match参数指定文档应该包含在搜索结果中的最小术语数量。

对于一个应该快速无痛的手术来说你付出了太多的努力。我们只是在谈论搜索的基础。

此外,查询“Kardasian”(不带“h”)不会返回任何结果。这是因为Elasticsearch不允许任何打字错误,除非我们设置一个名为fueling的额外参数。

我们向Meilisearch发送了同样的查询(有一个错别字):

代码语言:javascript
复制
POST /indexes/news_headlines/search
{ 
   "q": "Khloe Kardasian Kendall Jenner" 
}

在零配置的情况下,Meilisearch返回的第一个结果是:

代码语言:javascript
复制
{
   "link": "https://www.huffingtonpost.com/entry/khloe-kardashian-licks-kendall-jenner-abs_us_559d7e27e4b05b1d028f98cf",
   "headline": "Khloe Kardashian Licks Kendall Jenner's 'Irresistible' Abs In New Instagram Photo",
   "category": "ENTERTAINMENT",
   "short_description": "Khloe and Kendall shared quite the intimate moment at the gym!",
   "authors": "Julia Brucculieri",
   "date": "2015-07-08",
   "id": 94869
}

正如我们前面看到的,使用Elastic实现这种级别的相关性需要调整几个搜索参数。所以,仅仅因为你可以用Elasticsearch做任何事情,并不意味着你应该这样做。在许多情况下,Elasticsearch可能只是矫枉过正。

Meilisearch是用来做什么的?

Meilisearch是一个用Rust编写的开源、以用户为中心的搜索引擎。它创建于2018年,旨在提供一种可访问的搜索解决方案,旨在满足绝大多数需求,无需配置和高度定制。

Meilisearch提供即时搜索体验,包括强大的内置功能,如随输入搜索,错别字容忍,分面搜索,地理搜索和多租户。它的第一个主要版本于2023年初发布,使其完全稳定,向前兼容和企业就绪。

主要优势

Meilisearch专注于简单性,相关性和性能。

简单Meilisearch旨在为开发人员提供简单直观的体验。它开箱即用,无需配置。但是您可以在几分钟内轻松地根据您的需求定制它,因此您不必成为搜索专家即可充分利用Meilisearch。

相关性Meilisearch提供了一套预配置的排名规则,提供了高相关性的权利开箱即用。这些默认设置是通过直接与社区合作迭代开发的,适用于大多数用例。这些规则可以定制,以满足个人的要求。性能Meilisearch的目标是提供一种随你输入的搜索体验,最多在50毫秒内返回结果。

挑战

虽然它可以处理大量的数据,但开源版本的Meilisearch(自托管)可能不适合需要分布式架构来处理跨多个节点或集群的大量数据的应用程序。

另一方面,Meilisearch Cloud已经通过其Pro和Enterprise计划提供了可扩展性和高可用性。

Meilisearch主要旨在为最终用户提供高性能的即时搜索体验,并不提供全面的数据分析功能。虽然Meilisearch可以帮助您搜索数据并立即检索相关结果,但它尚未提供高级数据分析功能,例如数据可视化或统计分析。Meilisearch Cloud计划提供类似的功能,正如您可以在其路线图中看到的那样。

Meilisearch还是Elasticsearch?

希望,现在很清楚,一个搜索引擎并不比另一个更好。最重要的因素在于你使用它的目的。这两种搜索引擎都有各自的优势和劣势,了解它们对于为您的特定用例做出正确的选择至关重要。

Meilisearch不是用来搜索数十亿个大型文本文件或解析复杂查询的。这种搜索能力需要更高的复杂度,并导致更慢的搜索体验,这与我们的即时搜索理念背道而驰。出于这些目的,Elasticsearch是最好的选择;对于拥有必要资源的公司来说,它是一个很好的解决方案,无论是聘请顾问的财务手段还是自己实施所需的时间和金钱。

Meilisearch是一个完美的选择,如果你需要一个开发人员友好的工具来轻松地部署一个容忍打字的搜索,直观的用户,并立即返回结果与优秀的相关性开箱即用。它非常适合现场和应用内搜索,包括电子商务、文档和内容搜索。