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詹納”的結果:
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詹納”,這是預期的,但是我們找到的是“Kourtney Kardashian”,而不是“Khandy Kardashian”。
當查詢包含多個術語時,用戶通常期望搜索引擎優先考慮包含所有術語的結果,而不僅僅是其中的一些。換句話說,當搜索多個術語時,用戶通常期望“AND”操作而不是“OR”。
Elasticsearch的match查詢默認使用“OR”邏輯。如果一個文檔包含其中一個搜索詞,Elasticsearch會將該文檔視為命中。如果我們希望所有的查詢詞都出現,我們必須在查詢中添加“AND”運算符,但是我們得到的結果要少得多。
Elasticsearch提供的另一個調整相關性的選項是使用minimum_should_match參數指定文檔應該包含在搜索結果中的最小術語數量。
對于一個應該快速無痛的手術來說你付出了太多的努力。我們只是在談論搜索的基礎。
此外,查詢“Kardasian”(不帶“h”)不會返回任何結果。這是因為Elasticsearch不允許任何打字錯誤,除非我們設置一個名為fueling的額外參數。
我們向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已經通過其Pro和Enterprise計劃提供了可擴展性和高可用性。
Meilisearch主要旨在為最終用戶提供高性能的即時搜索體驗,并不提供全面的數據分析功能。雖然Meilisearch可以幫助您搜索數據并立即檢索相關結果,但它尚未提供高級數據分析功能,例如數據可視化或統計分析。Meilisearch Cloud計劃提供類似的功能,正如您可以在其路線圖中看到的那樣。
Meilisearch還是Elasticsearch?
希望,現在很清楚,一個搜索引擎并不比另一個更好。最重要的因素在于你使用它的目的。這兩種搜索引擎都有各自的優勢和劣勢,了解它們對于為您的特定用例做出正確的選擇至關重要。
Meilisearch不是用來搜索數十億個大型文本文件或解析復雜查詢的。這種搜索能力需要更高的復雜度,并導致更慢的搜索體驗,這與我們的即時搜索理念背道而馳。出于這些目的,Elasticsearch是最好的選擇;對于擁有必要資源的公司來說,它是一個很好的解決方案,無論是聘請顧問的財務手段還是自己實施所需的時間和金錢。
Meilisearch是一個完美的選擇,如果你需要一個開發人員友好的工具來輕松地部署一個容忍打字的搜索,直觀的用戶,并立即返回結果與優秀的相關性開箱即用。它非常適合現場和應用內搜索,包括電子商務、文檔和內容搜索。