更新至最新的 Meilisearch 版本

    目前,Meilisearch 資料庫僅與用於建立它們的 Meilisearch 版本相容。以下指南將逐步引導您使用傾印,將現有的資料庫從較舊的 Meilisearch 版本遷移到最新的版本。

    如果您在 DigitalOcean、AWS 或 GCP 等雲端平台上更新 Meilisearch 實例,請確保您可以透過 SSH 連接到您的雲端實例。根據您連接的使用者(root、admin 等),您可能需要在某些命令前加上 sudo

    如果遷移到最新版本的 Meilisearch 會導致您跳過多個版本,則這可能需要更改您的程式碼。請參閱我們的版本特定更新警告以取得更多詳細資訊

    提示

    如果您使用 v0.22 或更高版本以 systemctl 服務的形式執行 Meilisearch,請嘗試我們的遷移腳本

    更新 Meilisearch Cloud

    登入您的 Meilisearch Cloud 帳戶並導覽至您想要更新的專案。

    點擊您想要更新的專案。在頁面頂部尋找「一般設定」區段。

    每當有新版本的 Meilisearch 可用時,您會在「Meilisearch 版本」欄位旁邊看到一個更新按鈕。

    Button to update Meilisearch version to 1.0.2

    若要更新至最新的 Meilisearch 版本,請點擊「更新至 v.X.Y.Z」按鈕。

    這將開啟一個彈出視窗,其中包含有關更新過程的更多資訊。閱讀它,然後點擊「更新」。您專案的「狀態」將從「執行中」變更為「更新中」。

    Project update in progress

    專案更新成功後,您會收到一封確認更新的電子郵件,「狀態」將變回「執行中」。

    更新自託管的 Meilisearch 執行個體

    警告

    本指南僅適用於 v0.15 及以上版本。如果您使用的是較舊的 Meilisearch 版本,請聯絡支援以取得更多資訊。

    步驟 1:匯出資料

    驗證您的資料庫版本

    首先,使用取得版本端點驗證與您的資料庫相容的 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 標頭

    curl \
      -X GET 'http://<your-domain-name>/version' \
      -H 'X-Meili-API-Key: API_KEY'

    如果您的pkgVersion為 0.21 或更高版本,您可以跳到建立傾印。如果不是,請繼續執行下一步。

    將所有欄位設定為顯示屬性

    注意

    如果您的傾印是在 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': '["*"]'},您可以移至下一步

    如果回應是其他任何內容,請將目前的顯示屬性清單儲存到文字檔中,然後將顯示屬性清單重設為其預設值 (["*"])

    curl \
      -X DELETE 'http://<your-domain-name>/indexes/{index_uid}/settings/displayed-attributes' \
      -H 'X-Meili-API-Key: API_KEY'

    此命令會傳回 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,您就可以繼續。針對所有索引重複此過程,然後繼續建立您的傾印。

    建立傾印

    在建立傾印之前,請確定您的傾印目錄位於可存取的位置。預設情況下,傾印會建立在 Meilisearch 目錄根目錄中名為 dumps 的資料夾中。

    DigitalOcean、AWS 和 GCP 等雲端平台已設定為將傾印儲存在 /var/opt/meilisearch/dumps 目錄中。

    如果您不確定 Meilisearch 目錄位於何處,請嘗試以下操作

    which meilisearch
    

    它應該會傳回類似如下的內容

    /absolute/path/to/your/meilisearch/directory
    
    v0.27、v0.28 和 v0.29 中的 _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追蹤您的傾印的狀態。請記住,此過程可能需要一些時間才能完成。

    Meilisearch v0.27 及以下版本

    對於 v0.27 及以下版本,對您請求的回應會傳回傾印 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",您就可以繼續。

    步驟 2:準備遷移

    停止 Meilisearch 執行個體

    停止您的 Meilisearch 執行個體。

    如果您在本機執行 Meilisearch,可以使用 Ctrl + c 停止程式。

    建立備份

    我們建議您建立備份,以防萬一發生錯誤,而不是刪除 data.ms。除非您選擇了其他位置,否則 data.ms 應該位於 Meilisearch 二進位檔的根目錄。

    雲端平台上,您會在 /var/lib/meilisearch/data.ms 找到 data.ms 資料夾。

    將目前 Meilisearch 安裝的二進位檔和資料庫移至 /tmp 資料夾

    mv /path/to/your/meilisearch/directory/meilisearch/data.ms /tmp/
    mv /path/to/your/meilisearch/directory/meilisearch /tmp/
    

    安裝所需版本的 Meilisearch

    使用以下方式安裝最新版本的 Meilisearch

    curl -L https://install.meilisearch.com | sh
    

    授與 Meilisearch 二進位檔執行權限

    chmod +x meilisearch
    

    對於雲端平台,請將新的 Meilisearch 二進位檔移至 /usr/bin 目錄

    mv meilisearch /usr/bin/meilisearch
    

    步驟 3:匯入資料

    啟動 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
    

    匯入傾印需要為其中包含的所有文件編製索引。根據您的資料集大小,此過程可能需要很長時間,並導致記憶體使用量激增。

    重新啟動 Meilisearch 作為服務

    如果您正在執行雲端執行個體,請按下 Ctrl+C 以在正確匯入傾印後停止 Meilisearch。接下來,執行以下命令以執行指令碼來設定 Meilisearch 並將其重新啟動為服務

    meilisearch-setup
    

    如果需要,請使用更新顯示屬性端點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 目錄的根目錄中執行設定指令碼

    meilisearch-setup
    

    如果一切順利,您可以使用以下方式刪除備份檔案

    rm -r /tmp/meilisearch
    rm -r /tmp/data.ms
    

    如果需要,您也可以刪除傾印檔案

    rm /path/to/your/meilisearch/directory/meilisearch/dumps/{dump_uid.dump}
    

    特定版本警告

    遷移到最新版本的 Meilisearch 後,您的程式碼庫可能需要進行一些變更。本節包含一些最具影響力的特定版本變更的警告。如需完整的變更日誌,請參閱 GitHub 上的發行版本索引標籤