目前,Meilisearch 資料庫僅與用於建立它們的 Meilisearch 版本相容。以下指南將逐步引導您使用傾印,將現有的資料庫從較舊的 Meilisearch 版本遷移到最新的版本。
如果您在 DigitalOcean、AWS 或 GCP 等雲端平台上更新 Meilisearch 實例,請確保您可以透過 SSH 連接到您的雲端實例。根據您連接的使用者(root、admin 等),您可能需要在某些命令前加上 sudo。
sudo
如果遷移到最新版本的 Meilisearch 會導致您跳過多個版本,則這可能需要更改您的程式碼。請參閱我們的版本特定更新警告以取得更多詳細資訊。
如果您使用 v0.22 或更高版本以 systemctl 服務的形式執行 Meilisearch,請嘗試我們的遷移腳本。
systemctl
登入您的 Meilisearch Cloud 帳戶並導覽至您想要更新的專案。
點擊您想要更新的專案。在頁面頂部尋找「一般設定」區段。
每當有新版本的 Meilisearch 可用時,您會在「Meilisearch 版本」欄位旁邊看到一個更新按鈕。
若要更新至最新的 Meilisearch 版本,請點擊「更新至 v.X.Y.Z」按鈕。
這將開啟一個彈出視窗,其中包含有關更新過程的更多資訊。閱讀它,然後點擊「更新」。您專案的「狀態」將從「執行中」變更為「更新中」。
專案更新成功後,您會收到一封確認更新的電子郵件,「狀態」將變回「執行中」。
本指南僅適用於 v0.15 及以上版本。如果您使用的是較舊的 Meilisearch 版本,請聯絡支援以取得更多資訊。
首先,使用取得版本端點驗證與您的資料庫相容的 Meilisearch 版本
curl \ -X GET 'http://<your-domain-name>/version' \ -H 'Authorization: Bearer API_KEY'
回應應如下所示
{ "commitSha": "stringOfLettersAndNumbers", "commitDate": "YYYY-MM-DDTimestamp", "pkgVersion": "x.y.z" }
如果您收到 missing_authorization_header 錯誤,您可能使用的是 v0.24 或更舊版本。對於每個命令,請將 Authorization: Bearer 標頭替換為 X-Meili-API-Key: API_KEY 標頭
missing_authorization_header
Authorization: Bearer
X-Meili-API-Key: API_KEY
curl \ -X GET 'http://<your-domain-name>/version' \ -H 'X-Meili-API-Key: API_KEY'
如果您的pkgVersion為 0.21 或更高版本,您可以跳到建立傾印。如果不是,請繼續執行下一步。
pkgVersion
如果您的傾印是在 Meilisearch v0.21 或更高版本中建立的,請略過此步驟。
使用低於 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': '["*"]'},您可以移至下一步。
{'displayedAttributes': '["*"]'}
如果回應是其他任何內容,請將目前的顯示屬性清單儲存到文字檔中,然後將顯示屬性清單重設為其預設值 (["*"])
(["*"])
curl \ -X DELETE 'http://<your-domain-name>/indexes/{index_uid}/settings/displayed-attributes' \ -H 'X-Meili-API-Key: API_KEY'
此命令會傳回 updateId。使用取得更新端點來追蹤操作的狀態
updateId
# replace {indexUid} with the uid of your index and {updateId} with the updateId returned by the previous request curl \ -X GET 'http://<your-domain-name>/indexes/{indexUid}/updates/{updateId}' -H 'X-Meili-API-Key: API_KEY'
一旦狀態為 processed,您就可以繼續。針對所有索引重複此過程,然後繼續建立您的傾印。
processed
在建立傾印之前,請確定您的傾印目錄位於可存取的位置。預設情況下,傾印會建立在 Meilisearch 目錄根目錄中名為 dumps 的資料夾中。
dumps
DigitalOcean、AWS 和 GCP 等雲端平台已設定為將傾印儲存在 /var/opt/meilisearch/dumps 目錄中。
/var/opt/meilisearch/dumps
如果您不確定 Meilisearch 目錄位於何處,請嘗試以下操作
which meilisearch
它應該會傳回類似如下的內容
/absolute/path/to/your/meilisearch/directory
_geo
由於 Meilisearch v0.27、v0.28 和 v0.29 中允許格式錯誤的 _geo 欄位的錯誤,您可能無法匯入您的傾印。請確保 _geo 欄位在建立傾印之前遵循正確的格式。
然後,您可以建立資料庫的傾印
curl \ -X POST 'http://<your-domain-name>/dumps' \ -H 'Authorization: Bearer API_KEY' # -H 'X-Meili-API-Key: API_KEY' for v0.24 or below
伺服器應該會傳回類似如下的回應
{ "taskUid": 1, "indexUid": null, "status": "enqueued", "type": "dumpCreation", "enqueuedAt": "2022-06-21T16:10:29.217688Z" }
使用 taskUid 來追蹤您的傾印的狀態。請記住,此過程可能需要一些時間才能完成。
taskUid
對於 v0.27 及以下版本,對您請求的回應會傳回傾印 uid。將其與 /dumps/:dump_uid/status 路徑一起使用以追蹤請求狀態
uid
/dumps/:dump_uid/status
curl \ -X GET 'http://<your-domain-name>/dumps/:dump_uid/status' -H 'Authorization: Bearer API_KEY' # -H 'X-Meili-API-Key: API_KEY' for v0.24 or below
一旦 dumpCreation 工作顯示 "status": "succeeded",您就可以繼續。
dumpCreation
"status": "succeeded"
停止您的 Meilisearch 執行個體。
如果您在本機執行 Meilisearch,可以使用 Ctrl + c 停止程式。
Ctrl + c
我們建議您建立備份,以防萬一發生錯誤,而不是刪除 data.ms。除非您選擇了其他位置,否則 data.ms 應該位於 Meilisearch 二進位檔的根目錄。
data.ms
在雲端平台上,您會在 /var/lib/meilisearch/data.ms 找到 data.ms 資料夾。
/var/lib/meilisearch/data.ms
將目前 Meilisearch 安裝的二進位檔和資料庫移至 /tmp 資料夾
/tmp
mv /path/to/your/meilisearch/directory/meilisearch/data.ms /tmp/ mv /path/to/your/meilisearch/directory/meilisearch /tmp/
使用以下方式安裝最新版本的 Meilisearch
curl -L https://install.meilisearch.com | sh
授與 Meilisearch 二進位檔執行權限
chmod +x meilisearch
對於雲端平台,請將新的 Meilisearch 二進位檔移至 /usr/bin 目錄
/usr/bin
mv meilisearch /usr/bin/meilisearch
執行以下命令,在啟動時匯入傾印
# replace {dump_uid.dump} with the name of your dump file ./meilisearch --import-dump dumps/{dump_uid.dump} --master-key="MASTER_KEY" # Or, if you chose another location for data files and dumps before the update, also add the same parameters ./meilisearch --import-dump dumps/{dump_uid.dump} --master-key="MASTER_KEY" --db-path PATH_TO_DB_DIR/data.ms --dump-dir PATH_TO_DUMP_DIR/dumps
匯入傾印需要為其中包含的所有文件編製索引。根據您的資料集大小,此過程可能需要很長時間,並導致記憶體使用量激增。
如果您正在執行雲端執行個體,請按下 Ctrl+C 以在正確匯入傾印後停止 Meilisearch。接下來,執行以下命令以執行指令碼來設定 Meilisearch 並將其重新啟動為服務
Ctrl
C
meilisearch-setup
如果需要,請使用更新顯示屬性端點將 displayedAttributes 設定回其先前的值。
displayedAttributes
現在您更新後的 Meilisearch 執行個體已啟動並執行,請驗證傾印匯入是否成功且沒有資料遺失。
如果一切看起來都沒問題,那麼恭喜您!您已成功將資料庫遷移到最新版本的 Meilisearch。請務必查看變更日誌。
如果出現問題,您可以隨時還原到先前的版本。如果問題持續存在,請隨時尋求協助。如果您已成功遷移資料庫,但在程式碼庫方面遇到問題,請務必查看我們的特定版本警告。
刪除先前步驟建立的 Meilisearch 二進位檔和 data.ms 資料夾。接下來,使用以下方式將備份檔案移回其先前的位置
mv /tmp/meilisearch /path/to/your/meilisearch/directory/meilisearch mv /tmp/data.ms /path/to/your/meilisearch/directory/meilisearch/data.ms
對於雲端平台,請在 Meilisearch 目錄的根目錄中執行設定指令碼
如果一切順利,您可以使用以下方式刪除備份檔案
rm -r /tmp/meilisearch rm -r /tmp/data.ms
如果需要,您也可以刪除傾印檔案
rm /path/to/your/meilisearch/directory/meilisearch/dumps/{dump_uid.dump}
遷移到最新版本的 Meilisearch 後,您的程式碼庫可能需要進行一些變更。本節包含一些最具影響力的特定版本變更的警告。如需完整的變更日誌,請參閱 GitHub 上的發行版本索引標籤。
private
public
Default Admin API Key
Default Search API Key
updates
tasks
key
--dumps-dir
--dump-dir
/etc/systemd/system/meilisearch.service
/var/opt/meilisearch/scripts/first-login/001-setup-prod.sh
想要包含更多詳細資料嗎? 提出問題 在我們的公開文檔儲存庫中。