如何将您的应用更新到最新的 Meilisearch 版本
更新部署在云平台上的 Meilisearch 实例可能会让人感到畏惧。 让我们引导您完成此过程。
以下指南将引导您完成在使用 Meilisearch 官方镜像时,在 DigitalOcean、AWS 或 GCP 上更新 Meilisearch 实例所需的步骤。
在开始之前,请注意以下几点
- 本指南不适用于 v0.15 以下的版本。 由于 v0.15 中引入了转储功能,如果您使用的是 v0.14 或更低版本,则需要手动重新索引所有文档和设置
- 如果要更新到 v0.28 或更高版本,从旧版本导入的密钥的
key
和uid
字段将被重新生成 - 您需要通过 SSH 连接到您的云实例,并且根据您连接的用户(root、admin 等),您可能需要在某些命令前加上
sudo
此外,如果您使用的是 v0.22 或更高版本,您可以使用我们的 迁移脚本,让它为您完成所有工作!
步骤 1:检查您的 Meilisearch 版本
您需要知道您的 Meilisearch 版本。 如果您不知道或不确定,可以使用 get version 端点
curl -X GET 'http://<your-domain-name>/version' -H 'Authorization: Bearer API_KEY'
如果您收到 missing_authorization_header
错误代码,则您可能使用的是 v0.24 或更低版本。 将授权标头更改为 X-MEILI-API-KEY
,如下所示
curl -X GET 'http://<your-domain-name>/version' -H 'X-Meili-API-Key: API_KEY'
检查您的 pkgVersion
,如果它为 “0.21.0” 或更高,您可以直接转到 步骤 3。 如果不是,请继续执行下一步。
步骤 2:将所有字段设置为显示属性
此步骤仅在您使用 v0.20 或更低版本时是强制性的。
当使用低于 v0.21 的 Meilisearch 版本创建转储时,所有字段都必须显示才能保存到转储中。
首先,您需要验证显示的属性列表。
# whenever you see {index_uid}, replace it with your index's unique id curl -X GET 'http://<your-domain-name>/indexes/{index_uid}/settings/displayed-attributes' -H 'X-Meili-API-Key: API_KEY'
如果响应包含 {'displayedAttributes': '["*"]'}
,您可以继续执行步骤 3。
如果是其他内容,请保存当前列表以便在迁移完成后恢复,然后将显示的属性列表重置为其默认值 ([“*”]
)
curl -X DELETE 'http://<your-domain-name>/indexes/{index_uid}/settings/displayed-attributes' -H 'X-Meili-API-Key: API_KEY'
此命令返回一个 updateId
。 您可以使用它来跟踪操作的状态。
# replace {updateId} with the updateId returned by the previous request curl -X GET 'http://<your-domain-name>/indexes/{index_uid}/updates/{updateId}' -H 'X-Meili-API-Key: API_KEY'
一旦状态为 processed
,就可以继续了。
现在所有字段都已显示,请继续执行下一步。
步骤 3:创建转储
在创建转储之前,请确保您的转储目录是可访问的。 默认情况下,转储在配置文件目录中名为 dumps 的文件夹中创建:/var/opt/meilisearch/dumps
。
然后,您可以创建 Meilisearch 数据库的转储
# replace the header with -H 'X-Meili-API-Key: API_KEY' if you are on v0.24 or below curl -X POST 'http://<your-domain-name>/dumps' -H 'Authorization: Bearer API_KEY'
如果您使用的是 v0.27 或更低版本,转储使用与任务队列分开的队列。 响应应返回一个转储 uid
。 您可以使用它通过 get dumps status 端点来跟踪转储的状态
# replace the header with -H 'X-Meili-API-Key: API_KEY' if you are on v0.24 or below curl -X GET 'http://<your-domain-name>/dumps/{uid}/status' -H 'Authorization: Bearer API_KEY'
一旦转储状态为 done
,您可以继续执行下一步。
{ "uid":"20221130-110940190", "status":"done", "startedAt":"2022-11-30T11:09:40.190772Z", "finishedAt":"2022-11-30T11:09:45.94484Z" }
如果您使用的是 v0.28 或更高版本,转储被视为任务并共享任务队列。 然后,响应应返回一个 taskUid
,您可以使用它通过 get task 端点来跟踪其状态
curl -X GET 'http://<your-domain-name>/tasks/{taskUid}' -H 'Authorization: Bearer API_KEY’
一旦 dumpCreation
任务显示 "status": "succeeded"
,您就可以继续执行下一步了。
{ "uid": 1, "indexUid": null, "status": "succeeded", "type": "dumpCreation", "canceledBy": null, "details": { "dumpUid": "20220621-161029217" }, "error": null, "duration": "PT0.025872S", "enqueuedAt": "2022-06-21T16:10:29.217688Z", "startedAt": "2022-06-21T16:10:29.218297Z", "finishedAt": "2022-06-21T16:10:29.244169Z" }
步骤 4:停止 Meilisearch 实例
如果您尚未执行此操作,请通过 SSH 连接到您的云实例并执行以下命令以停止 Meilisearch。 请记住,如果您不是以 root 用户身份连接的,则可能需要在命令前加上 sudo
。
systemctl stop meilisearch
步骤 5:保存当前的二进制文件和数据库以进行备份
将当前 Meilisearch 版本的二进制文件和数据库移动到 tmp/ 文件夹
mv /usr/bin/meilisearch /tmp mv /var/lib/meilisearch/data.ms /tmp/
步骤 6:安装所需的 Meilisearch 版本
您可以使用此命令下载 Meilisearch 二进制文件。 将 {meilisearch_version}
替换为您选择的版本,格式如下:vX.X.X
。
curl "https://github.com/meilisearch/meilisearch/releases/download/{meilisearch_version}/meilisearch-linux-amd64" --output meilisearch --location --show-error
使 meilisearch 二进制文件可执行
chmod +x meilisearch
将新的 Meilisearch 二进制文件移动到包含可执行文件的目录
mv meilisearch /usr/bin/meilisearch
步骤 7:启动 Meilisearch 并导入转储
现在您已经获得了所需的 Meilisearch 版本,请执行以下命令以在启动时导入转储。
不要忘记将 dump_uid.dump
替换为实际的转储文件名。
meilisearch --db-path /var/lib/meilisearch/data.ms --import-dump "/var/opt/meilisearch/dumps/dump_uid.dump"
导入转储需要索引其中包含的所有文档。 根据数据集的大小,此过程可能需要很长时间并导致内存使用量激增。
步骤 8:以服务形式重启 Meilisearch
正确导入转储后,按 Ctrl
+C
停止 Meilisearch。 接下来,执行以下命令来运行脚本以配置 Meilisearch 并以服务形式重启它
meilisearch-setup
如果需要,请不要忘记将 displayedAttributes
恢复为其先前的值。 您可以使用更新显示的属性端点来执行此操作。
🎉 恭喜! 您已成功将 Meilisearch 数据库迁移到最新版本!
步骤 9:清理文件或回滚
清理文件
如果您已完成所有之前的步骤并且 Meilisearch 正在运行,那么是时候进行一些清理了。 还记得我们保存用于备份的那些文件吗? 您可以使用以下命令删除它们
rm /tmp/meilisearch rm -r /tmp/data.ms
由于您不再需要它,您也可以删除转储文件
rm /var/opt/meilisearch/dumps/{dump_uid.dump}
回滚
如果由于某种原因出现问题,您可以随时回滚到以前的版本。 使用以下命令将文件移回其以前的位置
mv /tmp/meilisearch /usr/bin/meilisearch mv /tmp/data.ms /var/lib/meilisearch/data.ms
并运行配置脚本
meilisearch-setup
一切都应该恢复原样。 呼!
我希望本指南能够帮助您享受最新版 Meilisearch 的所有优点。 请不要忘记我们的支持团队随时准备为您提供帮助! 我们在全新的 Discord 服务器上设有专门的支持渠道!