Meilisearch vs Elasticsearch
为项目选择合适的搜索解决方案至关重要但也很困难。理解它们的区别是做出选择的关键。

您是否在考虑 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 的匹配查询默认使用“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 服务器与我们交流!