使用任務

    許多 Meilisearch 操作會在任務中以非同步方式處理。非同步任務讓您能夠對 Meilisearch 專案進行資源密集型的變更,而不會對使用者造成任何停機時間。

    在本教學課程中,您將使用 Meilisearch API 將文件新增至索引,然後監控其狀態。

    需求

    將任務新增至任務佇列

    需要建立索引的操作,例如新增和更新文件或變更索引的設定,都會產生一個任務。

    首先建立索引,然後將大量文件新增至此索引

    curl \
      -X POST 'https://#:7700/indexes/movies/documents'\
      -H 'Content-Type: application/json' \
      --data-binary @movies.json

    Meilisearch 不會立即處理您的請求,而是會將其新增至佇列並傳回摘要的任務物件

    {
      "taskUid": 0,
      "indexUid": "movies",
      "status": "enqueued",
      "type": "documentAdditionOrUpdate",
      "enqueuedAt": "2021-08-11T09:25:53.000000Z"
    }
    

    摘要的任務物件確認您的請求已接受。它也提供您可以用來監控請求狀態的資訊,例如 taskUid

    注意

    您可以使用 Cloud 介面將文件新增至新的 Meilisearch Cloud 索引。若要取得此任務的 taskUid,請瀏覽「任務」概述,並尋找與您新建立的索引相關聯的「新增或更新文件」任務。

    監控任務狀態

    Meilisearch 會按照新增至佇列的順序處理任務。您可以使用 Meilisearch Cloud 介面或 Meilisearch API 來檢查任務的狀態。

    在 Meilisearch Cloud 介面中監控任務狀態

    登入您的 Meilisearch Cloud 帳戶並導覽至您的專案。點擊專案選單中的「任務 (Tasks)」連結

    這會將您導向任務概覽頁面。在「Uid」欄中尋找您的請求的 taskUid

    當任務的 status 變為 succeeded 時,Meilisearch 已完成處理您的請求。

    如果任務的 status 變為 failed,表示 Meilisearch 無法完成您的請求。請查看任務物件的 error 欄位以獲取更多資訊。

    使用 Meilisearch API 監控任務狀態

    使用您請求回覆中的 taskUid 來檢查任務的狀態。

    curl \
      -X GET 'https://#:7700/tasks/1'

    這將會返回完整的任務物件。

    {
      "uid": 4,
      "indexUid" :"movie",
      "status": "succeeded",
      "type": "documentAdditionOrUpdate",
      "canceledBy": null,
      "details": {},
      "error": null,
      "duration": "PT0.001192S",
      "enqueuedAt": "2022-08-04T12:28:15.159167Z",
      "startedAt": "2022-08-04T12:28:15.161996Z",
      "finishedAt": "2022-08-04T12:28:15.163188Z"
    }
    

    如果任務仍然處於 enqueuedprocessing 狀態,請稍等片刻後再次查詢資料庫。如果您使用的是自架的 Meilisearch 實例,您也可以設定一個 webhook 監聽器

    status 變為 succeeded 時,Meilisearch 已完成處理您的請求。

    如果任務的 status 變為 failed,表示 Meilisearch 無法完成您的請求。請查看任務物件的 error 欄位以獲取更多資訊。

    結論

    您已了解當 API 請求將任務新增至任務佇列時會發生什麼,以及如何檢查該任務的狀態。請參閱任務 API 參考非同步操作說明,以取得更多關於任務運作方式的資訊。