MeiliSearch

在 Ubuntu 系统中部署和使用 MeiliSearch 是一个高效的选择,MeiliSearch 是轻量级、高性能的开源搜索引擎,支持全文检索、实时索引、中文分词(需额外配置)等特性。以下是完整的部署、配置和使用指南:
一、环境准备
确保 Ubuntu 系统已更新并安装依赖:
# 更新系统包
sudo apt update && sudo apt upgrade -y
# 安装必要依赖(如 curl、unzip)
sudo apt install -y curl unzip wget
二、安装 MeiliSearch
方式 1:快速安装(推荐)
通过官方脚本一键安装(自动适配系统架构):
curl -L https://install.meilisearch.com | sh
方式 2:手动下载(可选,指定版本)
# 下载最新版本(替换版本号为需要的,如 v1.7.0)
MEILI_VERSION="v1.29.0"
curl -O -L "https://github.com/meilisearch/meilisearch/releases/download/${MEILI_VERSION}/meilisearch-linux-amd64"
# 解压并赋予执行权限
chmod +x meilisearch-linux-amd64
# 移动到系统可执行目录(方便全局调用)
sudo mv meilisearch-linux-amd64 /usr/local/bin/meilisearch
验证安装
meilisearch --version
# 输出类似:meilisearch 1.29.0
三、启动 MeiliSearch
1. 临时启动(测试用)
# 直接启动(默认端口 7700,无密钥,仅本地访问)
meilisearch
- 访问地址:
http://localhost:7700 - 注意:临时启动无密钥,重启后数据丢失,仅用于测试。
2. 生产环境启动(推荐)
生产环境需配置主密钥、数据持久化、允许外部访问:
# 设置主密钥(自定义,用于鉴权)
export MEILI_MASTER_KEY="你的安全密钥(如:MyStrongMasterKey123!)"
# 启动(指定数据存储目录、允许外部访问、后台运行)
meilisearch \
--db-path /var/lib/meilisearch \ # 数据持久化目录
--http-addr 0.0.0.0:7700 \ # 允许外部访问(所有IP)
--env production \ # 生产环境模式
> /var/log/meilisearch.log 2>&1 & # 日志输出到文件,后台运行
3. 配置系统服务(开机自启)
为了保证 MeiliSearch 稳定运行并开机自启,创建 systemd 服务:
# 创建数据目录和日志目录
sudo mkdir -p /var/lib/meilisearch /var/log/meilisearch
sudo chown $USER:$USER /var/lib/meilisearch /var/log/meilisearch
# 创建服务文件
sudo vim /etc/systemd/system/meilisearch.service
粘贴以下内容(替换 MEILI_MASTER_KEY 为你的密钥):
[Unit]
Description=MeiliSearch
After=network.target
[Service]
Type=simple
User=root
Group=root
Environment="MEILI_MASTER_KEY=MyStrongMasterKey123!"
ExecStart=/usr/local/bin/meilisearch \
--db-path /var/lib/meilisearch \
--http-addr 0.0.0.0:7700 \
--env production
Restart=on-failure
RestartSec=5s
StandardOutput=append:/var/log/meilisearch.log
StandardError=append:/var/log/meilisearch.log
[Install]
WantedBy=multi-user.target
保存并退出,然后启动服务:
# 重新加载 systemd
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start meilisearch
# 设置开机自启
sudo systemctl enable meilisearch
# 查看状态
sudo systemctl status meilisearch
四、基本使用(API/控制台)
1. 访问 Web 控制台
启动后,访问 http://你的服务器IP:7700,输入主密钥即可进入可视化控制台,支持索引管理、数据导入、搜索测试等。
2. API 操作示例(curl)
(1)创建索引
curl \
-X POST 'http://localhost:7700/indexes' \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer 你的主密钥" \
-d '{
"uid": "books",
"primaryKey": "id"
}'
(2)添加文档
curl \
-X POST 'http://localhost:7700/indexes/books/documents' \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer 你的主密钥" \
-d '[
{
"id": 1,
"title": "Ubuntu 实战指南",
"author": "张三",
"content": "Ubuntu 系统管理、部署、优化全攻略"
},
{
"id": 2,
"title": "MeiliSearch 中文使用教程",
"author": "李四",
"content": "轻量级搜索引擎 MeiliSearch 快速上手"
}
]'
(3)搜索文档
curl \
-X GET 'http://localhost:7700/indexes/books/search?q=Ubuntu' \
-H "Authorization: Bearer 你的主密钥"
五、中文分词支持
MeiliSearch 默认对中文分词支持有限,需安装中文分词插件(基于 jieba):
1. 安装插件依赖
# 安装 Python 和 pip
sudo apt install -y python3 python3-pip
# 安装 jieba 分词库
pip3 install jieba meilisearch-python
2. 使用 Python 脚本处理中文索引
示例脚本(meili_cn_tokenizer.py):
import jieba
from meilisearch import Client
# 初始化客户端
client = Client('http://localhost:7700', '你的主密钥')
# 获取索引
index = client.index('books')
# 配置中文分词(自定义分词器)
index.update_settings({
"tokenizer": {
"locale": "zh",
"custom": {
"zh": lambda text: list(jieba.cut(text))
}
}
})
# 重新添加文档(让分词生效)
documents = [
{"id": 1, "title": "Ubuntu 实战指南", "author": "张三", "content": "Ubuntu 系统管理、部署、优化全攻略"},
{"id": 2, "title": "MeiliSearch 中文使用教程", "author": "李四", "content": "轻量级搜索引擎 MeiliSearch 快速上手"}
]
index.add_documents(documents)
运行脚本:
python3 meili_cn_tokenizer.py
六、常见问题排查
- 端口无法访问:检查防火墙/安全组是否开放 7700 端口:
# Ubuntu 防火墙开放 7700 端口 sudo ufw allow 7700/tcp sudo ufw reload - 数据丢失:确认启动时指定了
--db-path,且目录权限正确。 - 权限错误:确保运行 MeiliSearch 的用户对数据目录有读写权限。
七、停止/卸载 MeiliSearch
1. 停止服务
sudo systemctl stop meilisearch
2. 卸载
# 移除二进制文件
sudo rm /usr/local/bin/meilisearch
# 移除服务文件
sudo rm /etc/systemd/system/meilisearch.service
sudo systemctl daemon-reload
# 移除数据和日志(可选)
sudo rm -rf /var/lib/meilisearch /var/log/meilisearch.log
以上就是 Ubuntu 系统中 MeiliSearch 的完整部署和使用指南,如需更复杂的配置(如集群、HTTPS、自定义分词),可参考 MeiliSearch 官方文档。
980

被折叠的 条评论
为什么被折叠?



