Meilisearch 即时搜索引擎部署教程

Meilisearch 是一款开源的即时搜索引擎,以开箱即用、极低延迟和优秀的搜索体验著称。相比 Elasticsearch,Meilisearch 更轻量、更易部署,特别适合中小型应用的搜索需求。它原生支持中文分词、拼写纠错、同义词和 faceted search,内存占用仅几十 MB。

一、安装 Meilisearch

1.1 一键安装

curl -L https://install.meilisearch.com | sh
mv ./meilisearch /usr/local/bin/
meilisearch --version

1.2 Docker 安装

docker run -d --name meilisearch   -p 7700:7700   -e MEILI_MASTER_KEY='YourMasterKey123!'   -e MEILI_ENV='production'   -v meili_data:/meili_data   --restart unless-stopped   getmeili/meilisearch:v1.7

二、配置与启动

# 创建数据目录
mkdir -p /data/meilisearch

# 生产环境启动
meilisearch --db-path /data/meilisearch --http-addr 0.0.0.0:7700 --master-key 'YourMasterKey123!' --env production

创建 systemd 服务 /etc/systemd/system/meilisearch.service

[Unit]
Description=Meilisearch
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/meilisearch --db-path /data/meilisearch --http-addr 0.0.0.0:7700 --master-key YourMasterKey123! --env production
Restart=on-failure

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable meilisearch
systemctl start meilisearch

三、索引数据

# 创建索引并添加文档
curl -X POST 'http://localhost:7700/indexes/products/documents'   -H 'Content-Type: application/json'   -H 'Authorization: Bearer YourMasterKey123!'   -d '[
    {"id": 1, "name": "ThinkPad X1 Carbon", "description": "轻薄商务笔记本", "price": 9999, "category": "笔记本"},
    {"id": 2, "name": "MacBook Air M3", "description": "苹果轻薄笔记本", "price": 8999, "category": "笔记本"},
    {"id": 3, "name": "iPhone 15 Pro", "description": "苹果旗舰手机", "price": 7999, "category": "手机"}
  ]'

# 查看索引任务状态
curl 'http://localhost:7700/tasks' -H 'Authorization: Bearer YourMasterKey123!'

四、搜索查询

# 基础搜索
curl 'http://localhost:7700/indexes/products/search'   -H 'Authorization: Bearer YourMasterKey123!'   -H 'Content-Type: application/json'   -d '{"q": "笔记本"}'

# 带过滤的搜索
curl 'http://localhost:7700/indexes/products/search'   -H 'Authorization: Bearer YourMasterKey123!'   -H 'Content-Type: application/json'   -d '{
    "q": "笔记本",
    "filter": "price > 5000 AND category = 笔记本",
    "sort": ["price:asc"],
    "limit": 10,
    "attributesToHighlight": ["name", "description"]
  }'

五、搜索设置

# 配置可搜索属性和排序
curl -X PATCH 'http://localhost:7700/indexes/products/settings'   -H 'Authorization: Bearer YourMasterKey123!'   -H 'Content-Type: application/json'   -d '{
    "searchableAttributes": ["name", "description", "category"],
    "filterableAttributes": ["category", "price"],
    "sortableAttributes": ["price", "name"],
    "rankingRules": ["words", "typo", "proximity", "attribute", "sort", "exactness"],
    "synonyms": {
      "笔记本": ["laptop", "notebook"],
      "手机": ["phone", "mobile"]
    },
    "stopWords": ["的", "了", "是"]
  }'

六、前端集成

<!-- 使用 instant-meilisearch 前端库 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@meilisearch/instant-meilisearch/templates/basic_search.css" />
<script src="https://cdn.jsdelivr.net/npm/@meilisearch/instant-meilisearch/dist/instant-meilisearch.umd.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/instantsearch.js"></script>

<div id="searchbox"></div>
<div id="hits"></div>

<script>
const search = instantsearch({
  indexName: 'products',
  searchClient: instantMeiliSearch('http://your-server:7700', 'YourSearchKey')
});
search.addWidgets([
  instantsearch.widgets.searchBox({ container: '#searchbox' }),
  instantsearch.widgets.hits({ container: '#hits',
    templates: { item: '<div><strong>{{#helpers.highlight}}{ "attribute": "name" }{{/helpers.highlight}}</strong> - ¥{{price}}</div>' }
  })
]);
search.start();
</script>

七、API 密钥管理

# 创建只读搜索密钥(给前端使用)
curl -X POST 'http://localhost:7700/keys'   -H 'Authorization: Bearer YourMasterKey123!'   -H 'Content-Type: application/json'   -d '{
    "description": "Search-only key for frontend",
    "actions": ["search"],
    "indexes": ["products"],
    "expiresAt": "2027-01-01T00:00:00Z"
  }'

八、Meilisearch vs Elasticsearch

  • 部署难度:Meilisearch 单文件部署,ES 需要 JVM 和大量配置。
  • 资源占用:Meilisearch 内存占用 50-200MB,ES 至少需要 1GB。
  • 搜索体验:Meilisearch 开箱即用的拼写纠错和高亮,ES 需要手动配置。
  • 扩展能力:ES 支持分布式集群,Meilisearch 目前仅支持单节点。
  • 聚合分析:ES 聚合功能强大,Meilisearch 仅支持基础的 faceted search。

总结

Meilisearch 是搬瓦工 VPS 上部署搜索功能的理想选择,特别适合资源有限的小型应用。开箱即用的中文搜索、拼写纠错和即时搜索体验让你无需复杂配置就能提供优秀的搜索功能。更重量级的搜索需求可参考 Elasticsearch。选购搬瓦工 VPS 请查看 全部方案,使用优惠码 NODESEEK2026 享受 6.77% 折扣,通过 bwh81.net 进入官网。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。