搜索百科(6):Meilisearch — Rust 打造的輕量級(jí)搜索新銳
大家好,我是 INFINI Labs 的石陽(yáng)。
歡迎關(guān)注 《搜索百科》 專(zhuān)欄!每天 5 分鐘,帶你速覽一款搜索相關(guān)的技術(shù)或產(chǎn)品,同時(shí)還會(huì)帶你探索它們背后的技術(shù)原理、發(fā)展故事及上手體驗(yàn)等。
在之前的幾期中,我們認(rèn)識(shí)了搜索技術(shù)的基石 Lucene、企業(yè)級(jí)搜索先鋒 Solr、搜索界的“流量明星” Elasticsearch 以及它的分叉兄弟 OpenSearch 和 ES 國(guó)產(chǎn)替代方案 Easysearch。它們大多基于 Lucene 構(gòu)建,形成了龐大且功能豐富的生態(tài)。
今天,我們將介紹一位“非主流”選手:一款基于 Rust 編寫(xiě)、主打“快”和“簡(jiǎn)單”的現(xiàn)代搜索引擎——Meilisearch。它以全新的姿態(tài),為開(kāi)發(fā)者帶來(lái)了不同的搜索體驗(yàn)。

Meilisearch 概述
Meilisearch 是一款開(kāi)源的、用 Rust 編寫(xiě)的即時(shí)搜索引擎。它提供了一個(gè)快速、輕量且可定制的搜索 API,旨在為用戶(hù)提供毫秒級(jí)的搜索體驗(yàn)。
它的核心優(yōu)勢(shì)在于為應(yīng)用內(nèi)搜索和電商搜索等對(duì)延遲敏感的場(chǎng)景提供了出色的用戶(hù)體驗(yàn)。
- 首次發(fā)布:2020 年
- 最新版本:1.24.0(截止 2025 年 10 月)
- 核心語(yǔ)言:Rust
- 開(kāi)源協(xié)議:MIT License
- 官方網(wǎng)址:https://www.meilisearch.com/
- GitHub 倉(cāng)庫(kù):https://github.com/meilisearch/meilisearch
誕生故事
Meilisearch 的故事始于 2018 年,當(dāng)時(shí)法國(guó)工程師 Quentin de Quelen 在開(kāi)發(fā)一個(gè)電商項(xiàng)目時(shí),發(fā)現(xiàn)現(xiàn)有的搜索引擎要么太重量級(jí),要么配置太復(fù)雜。他想要一個(gè)"開(kāi)箱即用"的搜索解決方案,能夠快速集成到應(yīng)用中,并提供優(yōu)秀的搜索體驗(yàn)。
于是,他決定用 Rust 語(yǔ)言從頭編寫(xiě)一個(gè)搜索引擎。選擇 Rust 是因?yàn)槠涑錾男阅?、?nèi)存安全性和并發(fā)能力,非常適合構(gòu)建高性能的搜索核心。
項(xiàng)目最初只是一個(gè)內(nèi)部工具,但隨著功能的完善和社區(qū)的反饋,Meilisearch 在 2019 年正式開(kāi)源,并迅速獲得了開(kāi)發(fā)者的青睞。2020 年,團(tuán)隊(duì)獲得了 150 萬(wàn)美元的種子輪融資,正式成立了 Meilisearch 公司。
核心特性
Meilisearch 在設(shè)計(jì)上做了大量的取舍,專(zhuān)注于核心的搜索功能,但做到了極致。
- 極速響應(yīng):核心目標(biāo)是實(shí)現(xiàn) 50 毫秒以下的響應(yīng)時(shí)間,即使在大型數(shù)據(jù)集中也能提供“所見(jiàn)即所得”的搜索體驗(yàn)。
- 零配置:開(kāi)箱即用,部署和索引數(shù)據(jù)都非常簡(jiǎn)單,不需要預(yù)定義 Schema 或復(fù)雜的配置文件。
- 相關(guān)的默認(rèn)值:內(nèi)置一個(gè)強(qiáng)大的 相關(guān)性排名(Relevance Ranking) 算法,結(jié)合 Typos(拼寫(xiě)錯(cuò)誤)、Word Proximity(詞語(yǔ)距離)和 Attributes(字段權(quán)重)等因素,無(wú)需額外調(diào)優(yōu)即可獲得高質(zhì)量的搜索結(jié)果。
- 語(yǔ)言無(wú)關(guān)性:支持多種語(yǔ)言的分詞與搜索,能很好地處理中文、日文等非拉丁語(yǔ)系文本。
- 無(wú)分布式架構(gòu):為了追求極致的速度和簡(jiǎn)單性,Meilisearch 被設(shè)計(jì)為單機(jī)搜索引擎,不支持開(kāi)箱即用的分布式集群,這簡(jiǎn)化了運(yùn)維,但也限制了其 PB 級(jí)數(shù)據(jù)的處理能力。
對(duì)比優(yōu)勢(shì):Meilisearch vs Lucene/ES 體系
Meilisearch 與基于 Lucene 的 Elasticsearch 體系,在設(shè)計(jì)哲學(xué)上有著本質(zhì)區(qū)別:
| 特性 | Meilisearch | Elasticsearch |
|---|---|---|
| 核心目標(biāo) | 極速的應(yīng)用內(nèi)搜索體驗(yàn) | 分布式搜索、日志分析、可觀測(cè)性 |
| 基礎(chǔ)架構(gòu) | 單機(jī)、輕量級(jí) | 分布式集群(主從節(jié)點(diǎn)、分片) |
| 核心語(yǔ)言 | Rust | Java(基于 Lucene) |
| 性能瓶頸 | 單機(jī) CPU / 內(nèi)存限制 | 分布式協(xié)調(diào)開(kāi)銷(xiāo) |
| 上手難度 | 簡(jiǎn)單,開(kāi)箱即用,REST API | 相對(duì)復(fù)雜,需要了解集群、分片等概念 |
| 數(shù)據(jù)規(guī)模 | 適合中小型數(shù)據(jù)集(GB 級(jí)別) | 適合大型和超大型數(shù)據(jù)集(TB/PB 級(jí)別) |
| 全文檢索 | 依賴(lài)內(nèi)置的強(qiáng)相關(guān)性算法 | 依賴(lài) Lucene 強(qiáng)大的分詞、查詢(xún)解析器 |
總結(jié):
- 如果你的應(yīng)用需要超低延遲、簡(jiǎn)單部署、數(shù)據(jù)量在 GB 級(jí)別,并且搜索是應(yīng)用的核心功能,Meilisearch 是一個(gè)極佳的選擇。
- 如果你的需求涉及日志分析、大規(guī)模數(shù)據(jù)存儲(chǔ)、集群高可用和復(fù)雜的聚合分析,那么 Elasticsearch 仍然是更成熟和全面的解決方案。
快速上手:5 分鐘體驗(yàn) Meilisearch
部署 Meilisearch 非常簡(jiǎn)單,你甚至不需要 Docker,只需一個(gè)命令即可運(yùn)行。
1. 運(yùn)行 Meilisearch
# 安裝 Meilisearch
curl -L https://install.meilisearch.com | sh
# 啟動(dòng) Meilisearch
meilisearch --master-key 'aStrongMasterKey'
# 或使用 Docker
docker run -it --rm -p 7700:7700 getmeili/meilisearch:latest --master-key 'aStrongMasterKey'
2. 添加索引(創(chuàng)建 Index)
Meilisearch 不需要預(yù)先定義索引結(jié)構(gòu)(Schema-less)。
curl -X POST 'http://localhost:7700/indexes' \
-H 'Authorization: Bearer aStrongMasterKey' \
-H 'Content-Type: application/json' \
--data-binary '{
"uid": "movies",
"primaryKey": "id"
}'
3. 索引文檔(添加 Documents)
curl -X POST 'http://localhost:7700/indexes/movies/documents' \
-H 'Authorization: Bearer aStrongMasterKey' \
-H 'Content-Type: application/json' \
--data-binary '[
{"id": 1, "title": "泰坦尼克號(hào)", "genres": ["劇情", "愛(ài)情"]},
{"id": 2, "title": "黑客帝國(guó)", "genres": ["科幻", "動(dòng)作"]}
]'
4. 執(zhí)行搜索
# 搜索關(guān)鍵詞 "泰坦"
curl -X GET 'http://localhost:7700/indexes/movies/search?q=泰坦'
返回結(jié)果:
{
"hits": [
{
"id": 1,
"title": "泰坦尼克號(hào)",
"genres": ["劇情", "愛(ài)情"]
}
],
"offset": 0,
"limit": 20,
"estimatedTotalHits": 1,
"processingTimeMs": 1,
"query": "泰坦"
}
注意 processingTimeMs: 1,這是 Meilisearch 速度的最好證明!
5. 場(chǎng)景演示

結(jié)語(yǔ)
Meilisearch 的出現(xiàn),代表了新一代搜索引擎對(duì)于開(kāi)發(fā)者體驗(yàn)和即時(shí)性的追求。它在應(yīng)用內(nèi)搜索領(lǐng)域展現(xiàn)了強(qiáng)大的競(jìng)爭(zhēng)力,證明了不必依賴(lài) Lucene 的龐大體系,也能打造出極致性能的搜索產(chǎn)品。
雖然它還無(wú)法完全取代 Elasticsearch 在日志分析、可觀測(cè)性等大型分布式場(chǎng)景的地位,但在許多新興應(yīng)用和對(duì)搜索速度有極高要求的場(chǎng)景中,它無(wú)疑是一個(gè)值得嘗試的開(kāi)源新星。
?? 下期預(yù)告
下一篇我們將把目光轉(zhuǎn)向搜索領(lǐng)域的云端先鋒 —— Algolia。作為搜索即服務(wù)(Search-as-a-Service)的開(kāi)創(chuàng)者,Algolia 如何以其卓越的 API 設(shè)計(jì)、驚人的搜索速度和精準(zhǔn)的相關(guān)性排序,重新定義云端搜索體驗(yàn)?
?? 三連互動(dòng)
- 你會(huì)把 ES/Solr 換成 Meilisearch 嗎?
- 在你的應(yīng)用中,搜索延遲達(dá)到多少毫秒你會(huì)覺(jué)得無(wú)法接受?
- 在什么場(chǎng)景下你會(huì)考慮使用 Meilisearch 而不是 Elasticsearch?
對(duì)搜索技術(shù)感興趣的朋友,也歡迎加我微信(ID:lsy965145175)備注“搜索百科”,拉你進(jìn) 搜索技術(shù)交流群,一起探討與學(xué)習(xí)!
? 推薦閱讀
- 搜索百科(5):Easysearch — 自主可控的國(guó)產(chǎn)分布式搜索引擎
- 搜索百科(4):OpenSearch — 開(kāi)源搜索的新選擇
- 搜索百科(3):Elasticsearch — 搜索界的"流量明星"
- 搜索百科(2):Apache Solr — 企業(yè)級(jí)搜索的開(kāi)源先鋒
- 搜索百科(1):Lucene — 打開(kāi)現(xiàn)代搜索世界的第一扇門(mén)
?? 參考資源
《搜索百科》專(zhuān)欄系列,本文主要介紹 Meilisearch,它是一個(gè)使用 Rust 語(yǔ)言編寫(xiě)的開(kāi)源、輕量級(jí)搜索引擎,以其極致的性能、簡(jiǎn)單的部署和友好的開(kāi)發(fā)者體驗(yàn)而聞名。Meilisearch 不基于 Lucene,采用全新的架構(gòu)設(shè)計(jì),特別適合中小型數(shù)據(jù)集、實(shí)時(shí)搜索和嵌入式搜索場(chǎng)景。
浙公網(wǎng)安備 33010602011771號(hào)