Meilisearch开源的搜索引擎

软件 来源:架构师修行之路 2025-06-06 08:48:21

Meilisearch是一个开源的搜索引擎,用Rust语言开发,专注于提供极致的用户搜索体验。它的设计初衷就是尽可能地降低开发者搭建高性能搜索系统的门槛。

老实说,我以前搞Elasticsearch,三分钟配置,三天调优,搞得头都大了。而Meilisearch?5分钟内就能让你的应用拥有像Netflix或Spotify那样的搜索体验

为什么它这么火?

传统搜索引擎设置复杂,调优困难,部署麻烦。Meilisearch打破了这个怪圈:

  • • 速度快得离谱:搜索结果亚毫秒级返回,完全不拖泥带水
  • • 开箱即用的模糊搜索:不用配置一大堆参数,直接支持拼写错误也能搜到
  • • 相关性排序贼准:默认算法已经超过很多商业搜索引擎
  • • 全文搜索+高级过滤:复杂查询也能轻松应对
  • • 支持40多种语言:包括中文分词,不用额外折腾

最刺激的是,它的API设计极其简洁,真的是"人道主义关怀"了。我记得第一次用它,连文档都没细看,就把一个搜索功能接入完成了,这搁以前绝对不敢想。

它跟Elasticsearch有啥区别?

很多朋友会问,ES那么成熟了,为啥还要换?

坦白讲,Elasticsearch是台坦克,而Meilisearch是辆跑车。前者功能全面但笨重,后者轻巧但速度惊人。

ES适合大型数据分析和复杂日志系统,它能处理PB级数据。而Meilisearch则专注于用户搜索体验,注重速度和相关性。

最大的差别在于上手难度:ES配置文件像天书,Meilisearch几乎零配置。我给新人安利都说:想被搜索配置折磨一周,用ES;想下午茶前把功能上线,选Meilisearch。

实战体验

我前两天把一个产品目录(约10万条数据)从ES迁到了Meilisearch,整个过程包括数据导入用了不到一小时。搜索速度提升了约3倍,而且默认的相关性排序就已经相当不错。

索引创建超简单:

curl \   -X POST 'http://localhost:7700/indexes' \   -H 'Content-Type: application/json' \   -d '{ "uid": "products" }'

文档添加也是小菜一碟:

curl \   -X POST 'http://localhost:7700/indexes/products/documents' \   -H 'Content-Type: application/json' \   -d '[     {       "id": 1,       "name": "华为 Mate60 Pro",       "description": "最新旗舰手机,性能强劲"     },     {       "id": 2,       "name": "iPhone 15",       "description": "苹果最新款手机"     }   ]'

搜索更是简单到发指:

curl \   -X POST 'http://localhost:7700/indexes/products/search' \   -H 'Content-Type: application/json' \   -d '{ "q": "新款手机" }'

不是我吹,就算输错关键词(比如"新快"而不是"新款"),照样能搜到相关结果,这就是它内置模糊搜索的威力。

性能表现咋样?

按官方测试,Meilisearch在2000万数据量下,搜索延迟仍保持在40ms以内。我自己测的10万级数据,平均响应只有11ms,这速度真不是盖的。

资源占用也相当克制,8GB内存的机器上轻松跑一千万条数据。比起ES动辄几十GB的内存占用,简直是省钱利器。

核心特性一览

  • • 即时搜索:用户输入一个字母就能看到结果,像Google那样
  • • 排序定制:可以根据用户行为定制搜索结果排序
  • • 地理位置搜索:支持按距离排序,电商和外卖应用福音
  • • 多语言支持:中英日韩法德...40多种语言自动识别
  • • 高亮显示:自动高亮匹配词,前端开发省心
  • • 同义词处理:"手机"和"电话"可以被识别为相同概念
  • • 停用词处理:自动忽略"的"、"了"等对搜索无意义的词
  • • 分面搜索:类似电商筛选功能,可按品牌、价格区间等过滤

它还内置RESTful API和各种语言的SDK,集成到现有项目超轻松。

5分钟上手指南

  1. 1. 用Docker启动(真的超简单):

docker run -p 7700:7700 getmeili/meilisearch:latest

  1. 2. 创建你的第一个索引:

curl -X POST 'http://localhost:7700/indexes' -H 'Content-Type: application/json' -d '{"uid": "movies"}'

  1. 3. 添加一些数据:

curl -X POST 'http://localhost:7700/indexes/movies/documents' -H 'Content-Type: application/json' -d '[{"id": 1, "title": "流浪地球", "genres": ["科幻"]}, {"id": 2, "title": "满江红", "genres": ["悬疑", "历史"]}]'

  1. 4. 搜索:

curl -X POST 'http://localhost:7700/indexes/movies/search' -H 'Content-Type: application/json' -d '{"q": "流浪"}'

就是这么简单,秒杀各种复杂配置。

适合什么场景?

  • • 电商网站的商品搜索
  • • 内容平台的文章/视频搜索
  • • 应用内搜索功能
  • • API目录或文档搜索
  • • 客服知识库搜索

基本上,只要有用户需要搜索的地方,Meilisearch都能让体验提升一个档次

不过它也有局限,如果你需要超大规模(TB级)的数据分析,或者复杂的日志聚合,可能还是Elasticsearch更适合。

部署选择

Meilisearch有多种部署方式:

  • • Docker(最简单)
  • • 二进制文件(性能最佳)
  • • 云服务(Meilisearch Cloud,省心但要付费)
  • • Kubernetes(企业级部署)

个人项目我推荐Docker,企业应用可以考虑二进制或K8s部署。

放到生产环境别忘了设置API密钥:

docker run -p 7700:7700 -e MEILI_MASTER_KEY="你的密钥" getmeili/meilisearch:latest

项目地址:
https://github.com/meilisearch/meilisearch

 


延伸阅读
  • Lapce 采用 Rust 语言编写的代码编辑器

    Lapce 是一款完全采用 Rust 语言编写的代码编辑器,其核心设计借鉴了 Xi-Editor 中的 Rope Science 技术,确保在处理海量文本数据时依然保持高速运算。为了追求极致性能,它利

  • Bitwarden 开源的密码管理服务

    Bitwarden 是一款开源的密码管理器,提供强大的安全性和便捷的密码管理功能。本仓库使用的是 Bitwarden 客户端 API 的替代服务器实现,使用 Rust 编写,与官方 Bitwarden

  • 国产编程语言MoonBit正式被Github收录!两年核心用户数突破3万

    来自深圳本土团队研发的编程语言项目MoonBit正式被Github收录,对于一个仅有两年发展时间的编程语言来说,可谓是一种高度认可。同时MoonBit的核心用户也在迅速增长,以VScode插件用户数为

关注公众号:拾黑(shiheibook)了解更多

赞助链接:

关注数据与安全,洞悉企业级服务市场:https://www.ijiandao.com/
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接