如何將您的應用程式更新至最新版 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 伺服器上設有專門的支援頻道!