Meilisearch v1.14 发布啦 ✨ 在我们的博客上阅读更多内容

Go to homeMeilisearch's logo
返回文章
2022 年 12 月 19 日

如何将您的应用程序更新到最新版本的 Meilisearch

更新部署在云平台上的 Meilisearch 实例可能会让人感到畏惧。 让我们引导您完成整个过程。

Carolina Ferreira
Carolina FerreiraMeilisearch 开发者布道师@CarolainFG
How to update your app to the latest Meilisearch version

以下指南将引导您完成在使用 Meilisearch 官方镜像时在 DigitalOcean、AWS 或 GCP 上更新 Meilisearch 实例所需的步骤。

在开始之前,请注意以下事项

  • 本指南不适用于 v0.15 以下的版本。 由于转储是在 v0.15 中引入的,因此如果您使用的是 v0.14 或更低版本,则需要手动重新索引所有文档和设置
  • 如果您要更新到 v0.28 或更高版本,从旧版本导入的密钥将重新生成其 keyuid 字段
  • 您需要通过 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 设置回其先前的值。 您可以使用update displayed attributes 端点来执行此操作。

🎉 恭喜! 您已成功将 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 服务器上设有专门的支持频道!

‌‌‌‌‌‌‌‌‌‌

Meilisearch indexes embeddings 7x faster with binary quantization

Meilisearch 使用二进制量化将嵌入向量的索引速度提高 7 倍

通过使用向量存储 Arroy 实现二进制量化,在保持搜索相关性和效率的同时,大幅减少了大型嵌入向量的磁盘空间使用量和索引时间。

Tamo
Tamo2024 年 11 月 29 日
How to add AI-powered search to a React app

如何将 AI 驱动的搜索添加到 React 应用程序

使用 Meilisearch 的 AI 驱动的搜索构建一个 React 电影搜索和推荐应用程序。

Carolina Ferreira
Carolina Ferreira2024 年 9 月 24 日
Meilisearch is too slow

Meilisearch 速度太慢

在这篇博文中,我们将探讨 Meilisearch 文档索引器所需的增强功能。 我们将讨论当前的索引引擎、其缺点以及优化性能的新技术。

Clément Renault
Clément Renault2024 年 8 月 20 日