Meilisearch vs Elasticsearch,誰更高一籌?
為什么我應(yīng)該考慮Meilisearch而不是Elasticsearch?
如果你正在尋找一個(gè)搜索引擎,試圖做一切從應(yīng)用程序搜索到日志分析,你不介意花費(fèi)必要的時(shí)間和精力,使它為您的搜索需求工作,那么Elasticsearch可能適合你。
但是,如果易用性,性能和相關(guān)性對(duì)您來說很重要,那么Meilisearch就是為您設(shè)計(jì)的。為了提供一個(gè)不錯(cuò)的搜索體驗(yàn),您是否已經(jīng)筋疲力盡地搜索文檔頁面,配置大量參數(shù)?我們理解你的沮喪。
老實(shí)說,即使您擁有世界上最靈活和最強(qiáng)大的工具,如果使用和理解起來很痛苦,它也沒有多大意義。這就是我們創(chuàng)建Meilisearch的原因:為開發(fā)人員提供所需的工具,讓他們毫不費(fèi)力地創(chuàng)建卓越的搜索體驗(yàn)。
在做出決定之前,您需要了解這兩種引擎之間的差異以及您計(jì)劃使用它們的目的。
理解主要差異及其重要性
自2010年創(chuàng)建以來,Elasticsearch已迅速成為搜索引擎市場的熱門選擇,在各種應(yīng)用程序和數(shù)據(jù)集中找到了用途。然而,雖然它無疑是一個(gè)強(qiáng)大的工具,用于繁重的全文搜索,但在使用前需要進(jìn)行大量的配置,這意味著所有這些功能都需要很高的資源成本。
Elasticsearch的開源性質(zhì)在其流行和采用方面發(fā)揮了重要作用。而且,由于歷史上沒有太多的開源替代方案,開發(fā)人員繼續(xù)將Elasticsearch作為默認(rèn)解決方案,并最終在設(shè)置和培訓(xùn)上損失了不成比例的時(shí)間。
這就是Meilisearch進(jìn)來的地方。它是一個(gè)開源、易于使用、快速、相關(guān)的搜索引擎,可以輕松融入任何應(yīng)用程序、網(wǎng)站和工作流程。它具有開箱即用的默認(rèn)設(shè)置,可滿足大多數(shù)項(xiàng)目的需求,同時(shí)還可高度自定義以滿足個(gè)性化需求。
Elasticsearch是用來做什么的?
Shay Bannon創(chuàng)建了Elasticsearch,這是一個(gè)基于Apache Lucene庫的分布式搜索和分析引擎。Elasticsearch現(xiàn)在與其他用于數(shù)據(jù)收集、分析和可視化的工具一起開發(fā)。這些產(chǎn)品被設(shè)計(jì)成一個(gè)集成的解決方案,稱為“彈性堆?!?。
主要優(yōu)勢
Elasticsearch的主要優(yōu)勢在于它的靈活性和可擴(kuò)展性,以及它的聚合和分析能力。
靈活性Elasticsearch為所有類型的數(shù)據(jù)提供搜索和分析。它具有廣泛的用例,涵蓋從簡單的站點(diǎn)搜索,日志數(shù)據(jù)的管理和分析到端點(diǎn)安全的所有內(nèi)容。擴(kuò)展性Elasticsearch的分布式架構(gòu)通過在集群中添加或刪除節(jié)點(diǎn)來實(shí)現(xiàn)可擴(kuò)展性,使其成為管理大量數(shù)據(jù)的合適選擇。匯總和分析Elasticsearch提供高級(jí)聚合和分析功能,使用戶能夠從數(shù)據(jù)中提取見解并執(zhí)行復(fù)雜的分析操作。
挑戰(zhàn)
Elasticsearch是一個(gè)非常強(qiáng)大的工具,但它也是一個(gè)非常復(fù)雜的工具。它的設(shè)置和維護(hù)可能很困難。由于沒有實(shí)現(xiàn)基本網(wǎng)站或應(yīng)用搜索的默認(rèn)值,因此需要對(duì)其進(jìn)行配置。雖然Elasticsearch有大量的文檔,但在開始實(shí)現(xiàn)之前還有很多東西需要學(xué)習(xí),這可能會(huì)讓人生畏,特別是對(duì)于新用戶來說。
在執(zhí)行第一次搜索之前,您需要設(shè)置幾個(gè)參數(shù),包括相關(guān)性或錯(cuò)別字容忍度,這是現(xiàn)代應(yīng)用程序或網(wǎng)站搜索中的必備條件。可能需要一些時(shí)間來熟悉這個(gè)過程。
讓我們看一個(gè)例子。給定一個(gè)新聞標(biāo)題的數(shù)據(jù)集,下面的請(qǐng)求要求在標(biāo)題中包含“Khandy Kardashian Kendall詹納”的結(jié)果:
GET news_headlines/_search
{
"query": {
"match": {
"headline": {
"query": "Khloe Kardashian Kendall Jenner"
}
}
}
}
以下是Elasticsearch的默認(rèn)響應(yīng)
{
"_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"
}
}
與人們的預(yù)期相反,Elasticsearch返回的第一個(gè)結(jié)果并不是最相關(guān)的;它只包含一些搜索詞。正如你在“headline”字段中看到的:它包含“Kendall詹納”,這是預(yù)期的,但是我們找到的是“Kourtney Kardashian”,而不是“Khandy Kardashian”。
當(dāng)查詢包含多個(gè)術(shù)語時(shí),用戶通常期望搜索引擎優(yōu)先考慮包含所有術(shù)語的結(jié)果,而不僅僅是其中的一些。換句話說,當(dāng)搜索多個(gè)術(shù)語時(shí),用戶通常期望“AND”操作而不是“OR”。
Elasticsearch的match查詢默認(rèn)使用“OR”邏輯。如果一個(gè)文檔包含其中一個(gè)搜索詞,Elasticsearch會(huì)將該文檔視為命中。如果我們希望所有的查詢?cè)~都出現(xiàn),我們必須在查詢中添加“AND”運(yùn)算符,但是我們得到的結(jié)果要少得多。
Elasticsearch提供的另一個(gè)調(diào)整相關(guān)性的選項(xiàng)是使用minimum_should_match參數(shù)指定文檔應(yīng)該包含在搜索結(jié)果中的最小術(shù)語數(shù)量。
對(duì)于一個(gè)應(yīng)該快速無痛的手術(shù)來說你付出了太多的努力。我們只是在談?wù)撍阉鞯幕A(chǔ)。
此外,查詢“Kardasian”(不帶“h”)不會(huì)返回任何結(jié)果。這是因?yàn)镋lasticsearch不允許任何打字錯(cuò)誤,除非我們?cè)O(shè)置一個(gè)名為fueling的額外參數(shù)。
我們向Meilisearch發(fā)送了同樣的查詢(有一個(gè)錯(cuò)別字):
POST /indexes/news_headlines/search
{
"q": "Khloe Kardasian Kendall Jenner"
}
在零配置的情況下,Meilisearch返回的第一個(gè)結(jié)果是:
{
"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實(shí)現(xiàn)這種級(jí)別的相關(guān)性需要調(diào)整幾個(gè)搜索參數(shù)。所以,僅僅因?yàn)槟憧梢杂肊lasticsearch做任何事情,并不意味著你應(yīng)該這樣做。在許多情況下,Elasticsearch可能只是矯枉過正。
Meilisearch是用來做什么的?
Meilisearch是一個(gè)用Rust編寫的開源、以用戶為中心的搜索引擎。它創(chuàng)建于2018年,旨在提供一種可訪問的搜索解決方案,旨在滿足絕大多數(shù)需求,無需配置和高度定制。
Meilisearch提供即時(shí)搜索體驗(yàn),包括強(qiáng)大的內(nèi)置功能,如隨輸入搜索,錯(cuò)別字容忍,分面搜索,地理搜索和多租戶。它的第一個(gè)主要版本于2023年初發(fā)布,使其完全穩(wěn)定,向前兼容和企業(yè)就緒。
主要優(yōu)勢
Meilisearch專注于簡單性,相關(guān)性和性能。
簡單Meilisearch旨在為開發(fā)人員提供簡單直觀的體驗(yàn)。它開箱即用,無需配置。但是您可以在幾分鐘內(nèi)輕松地根據(jù)您的需求定制它,因此您不必成為搜索專家即可充分利用Meilisearch。
相關(guān)性Meilisearch提供了一套預(yù)配置的排名規(guī)則,提供了高相關(guān)性的權(quán)利開箱即用。這些默認(rèn)設(shè)置是通過直接與社區(qū)合作迭代開發(fā)的,適用于大多數(shù)用例。這些規(guī)則可以定制,以滿足個(gè)人的要求。性能Meilisearch的目標(biāo)是提供一種隨你輸入的搜索體驗(yàn),最多在50毫秒內(nèi)返回結(jié)果。
挑戰(zhàn)
雖然它可以處理大量的數(shù)據(jù),但開源版本的Meilisearch(自托管)可能不適合需要分布式架構(gòu)來處理跨多個(gè)節(jié)點(diǎn)或集群的大量數(shù)據(jù)的應(yīng)用程序。
另一方面,Meilisearch Cloud已經(jīng)通過其Pro和Enterprise計(jì)劃提供了可擴(kuò)展性和高可用性。
Meilisearch主要旨在為最終用戶提供高性能的即時(shí)搜索體驗(yàn),并不提供全面的數(shù)據(jù)分析功能。雖然Meilisearch可以幫助您搜索數(shù)據(jù)并立即檢索相關(guān)結(jié)果,但它尚未提供高級(jí)數(shù)據(jù)分析功能,例如數(shù)據(jù)可視化或統(tǒng)計(jì)分析。Meilisearch Cloud計(jì)劃提供類似的功能,正如您可以在其路線圖中看到的那樣。
Meilisearch還是Elasticsearch?
希望,現(xiàn)在很清楚,一個(gè)搜索引擎并不比另一個(gè)更好。最重要的因素在于你使用它的目的。這兩種搜索引擎都有各自的優(yōu)勢和劣勢,了解它們對(duì)于為您的特定用例做出正確的選擇至關(guān)重要。
Meilisearch不是用來搜索數(shù)十億個(gè)大型文本文件或解析復(fù)雜查詢的。這種搜索能力需要更高的復(fù)雜度,并導(dǎo)致更慢的搜索體驗(yàn),這與我們的即時(shí)搜索理念背道而馳。出于這些目的,Elasticsearch是最好的選擇;對(duì)于擁有必要資源的公司來說,它是一個(gè)很好的解決方案,無論是聘請(qǐng)顧問的財(cái)務(wù)手段還是自己實(shí)施所需的時(shí)間和金錢。
Meilisearch是一個(gè)完美的選擇,如果你需要一個(gè)開發(fā)人員友好的工具來輕松地部署一個(gè)容忍打字的搜索,直觀的用戶,并立即返回結(jié)果與優(yōu)秀的相關(guān)性開箱即用。它非常適合現(xiàn)場和應(yīng)用內(nèi)搜索,包括電子商務(wù)、文檔和內(nèi)容搜索。