您是否想知道 Meilisearch 是否适合您?不用担心!我们来帮助您更轻松地做出决定。在这篇文章中,我们将深入分析这两个搜索引擎的主要优缺点。

为什么我应该选择 Meilisearch 而不是 Elasticsearch?

如果您正在寻找一个可以满足从应用程序搜索到日志分析等各种需求的搜索引擎,并且您不介意花费时间和精力来满足您的搜索需求,那么 Elasticsearch 可能适合您。

但是,如果您重视易用性、性能和相关性,那么 Meilisearch 就是为您量身打造的。厌倦了翻阅文档页面来配置大量参数以提供良好的搜索体验?我们理解您的挫败感。

说实话,即使您拥有世界上最灵活、功能最强大的工具,如果它难以使用和理解,那也没什么用。这就是我们开发 Meilisearch 的原因:为开发者提供他们所需的工具,让他们轻松创建卓越的搜索体验。

在做出决定之前,您需要了解这两个引擎之间的差异以及您打算将它们用于什么。

了解关键差异及其重要性

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

Elasticsearch 的开源特性使其在普及和应用中发挥了重要作用。而且,由于历史上没有多少开源替代品,开发者继续将 Elasticsearch 作为默认解决方案,最终在设置和训练上浪费了不成比例的时间。

这就是 Meilisearch 的用武之地。它是一个开源、易于使用、快速、相关且容错的搜索引擎,可以轻松地集成到任何应用程序、网站和工作流程中。它开箱即用,具有满足大多数项目需求的默认设置,同时也可以高度定制以满足个性化需求。

Elasticsearch 是为谁而设计的?

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

主要优势

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

灵活性

Elasticsearch 为所有类型的数据提供搜索和分析。它拥有广泛的用例,涵盖从简单的网站搜索、日志数据的管理和分析到端点安全等各种方面。

可扩展性

Elasticsearch 的分布式架构通过添加或删除集群中的节点来实现可扩展性,使其成为管理海量数据的合适选择。

聚合和分析

Elasticsearch 提供高级的聚合和分析功能,使用户能够从数据中提取洞察并执行复杂的分析操作。

挑战

Elasticsearch 是一个非常强大的工具,但它也是一个非常复杂的工具。它的设置和维护可能很繁琐。由于没有实现基本网站或应用程序搜索的默认设置,因此需要进行配置。虽然 Elasticsearch 拥有丰富的文档,但要在开始实施之前需要学习很多东西,这对新手来说可能很吓人。

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

让我们看一个例子。假设您有 一个新闻标题数据集,下面的请求要求包含“Khloe Kardashian Kendall Jenner”的标题结果

GET news_headlines/_search
{
 "query": {
   "match": {
   "headline": {
       "query": "Khloe Kardashian Kendall Jenner"
   }
   }
 }
}

以下是 Elasticsearch 的默认响应

{
   "_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 Jenner”,这是预期的,但它没有包含“Khloe Kardashian”,而是包含“Kourtney Kardashian”。

当查询包含多个词语时,用户通常希望搜索引擎优先显示包含所有词语的结果,而不是只包含部分词语的结果。换句话说,用户通常希望在搜索多个词语时执行“AND”操作,而不是“OR”操作。

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

Elasticsearch 提供的另一个调整相关性的选项是指定文档应具有的最低词语数量,才能包含在搜索结果中,并使用 `minimum_should_match` 参数。

对于这样简单的事情,却要花如此大的力气。而我们只是谈论了搜索的基础知识。

此外,查询“Kardasian”(没有 `h`)没有返回任何结果。这是因为 Elasticsearch 不允许任何拼写错误,除非我们设置一个名为 `fuzziness` 的 额外参数

我们将相同的查询(带有一个拼写错误)发送给 Meilisearch

POST /indexes/news_headlines/search
{ 
   "q": "Khloe Kardasian Kendall Jenner" 
}

Meilisearch 在没有任何配置的情况下返回的第一个结果是

{
   "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 通过其 专业版和企业版计划 已经提供了可扩展性和高可用性。

然而,我们的团队目前正在 收集反馈,以便在不久的将来实现分布式开源 Meilisearch。

Meilisearch 主要设计用于提供针对最终用户的高性能即时搜索体验,不提供全面的数据分析功能。虽然 Meilisearch 可以帮助您搜索数据并立即检索相关结果,但它还没有提供高级数据分析功能,例如数据可视化或统计分析。Meilisearch Cloud 计划在未来提供类似的功能,如您在其 路线图 中所见。

Meilisearch 还是 Elasticsearch?

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

Meilisearch 不是用来搜索数十亿个大型文本文件或解析复杂查询的。这种搜索能力需要更高的复杂性,会导致更慢的搜索体验,这与我们的即时搜索理念相悖。对于这些目的,没有比 Elasticsearch 更好的选择;它对于拥有必要资源的公司来说是一个极佳的解决方案,无论这些资源是雇用顾问的经济实力,还是自行实施所需的时间和资金。

如果您需要一个开发者友好的工具来轻松部署容错搜索,对用户来说直观且能够立即返回具有出色相关性的结果,那么 Meilisearch 是完美的选择。它非常适合现场和应用内搜索,包括 电子商务文档内容搜索


详细了解 Meilisearch 可以为您的企业带来什么


结论

总而言之,我们已经介绍了这两个搜索引擎的主要优缺点,但我们只是触及了表面。这两个搜索引擎的功能远远超出了本文所述内容。如需全面比较 Meilisearch 与 Elasticsearch 和其他搜索引擎,请参阅我们文档中专门的 部分

您想看看 Meilisearch 的实际运行情况吗?试试我们的 演示。您还可以按照我们的 快速入门指南 在五分钟内运行它并开始搜索您的数据。

我们不断与开源社区合作,开发新功能并提供最佳的开发者和搜索体验。请查看我们 公开路线图 上的下一个计划!

如果您有任何反馈或建议,请加入我们的 Discord 服务器,与我们聊聊吧!