AI 驅動的混合搜尋功能正在封閉測試中。 加入候補名單 以搶先體驗!

前往首頁Meilisearch 的標誌
返回文章
2022 年 12 月 19 日

如何將您的應用程式更新至最新版 Meilisearch

更新部署在雲端平台的 Meilisearch 實例可能會讓人感到卻步。讓我們引導您完成整個流程。

Carolina Ferreira
Carolina Ferreira開發者推廣專員 @ Meilisearch@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 還原為先前的值。您可以使用更新顯示的屬性端點來執行此操作。

🎉 恭喜!您已成功將 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 伺服器上設有專門的支援頻道!

‌‌‌‌‌‌‌‌‌‌

How to add AI-powered search to a React app

如何將 AI 驅動的搜尋新增至 React 應用程式

使用 Meilisearch 的 AI 驅動搜尋功能,建構一個 React 電影搜尋和推薦應用程式。

Carolina Ferreira
Carolina Ferreira2024 年 9 月 24 日
Build your Next.js Shopify storefront with Blazity

使用 Blazity 建構您的 Next.js Shopify 店面

了解如何使用 Next.js 和 Blazity commerce starter 建構 Shopify 店面。

Laurent Cazanove
Laurent Cazanove2024 年 8 月 19 日
Meilisearch 1.8

Meilisearch 1.8

Meilisearch 1.8 帶來了負關鍵字搜尋、搜尋穩定性和 AI 搜尋方面的改進,包括新的嵌入器。

Carolina Ferreira
Carolina Ferreira2024 年 5 月 7 日