使用任務
許多 Meilisearch 操作會在任務中以非同步方式處理。非同步任務讓您能夠對 Meilisearch 專案進行資源密集型的變更,而不會對使用者造成任何停機時間。
在本教學課程中,您將使用 Meilisearch API 將文件新增至索引,然後監控其狀態。
需求
- 一個正在執行的 Meilisearch 專案
- 一個命令列主控台
將任務新增至任務佇列
需要建立索引的操作,例如新增和更新文件或變更索引的設定,都會產生一個任務。
首先建立索引,然後將大量文件新增至此索引
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"
}
如果任務仍然處於 enqueued
或 processing
狀態,請稍等片刻後再次查詢資料庫。如果您使用的是自架的 Meilisearch 實例,您也可以設定一個 webhook 監聽器。
當 status
變為 succeeded
時,Meilisearch 已完成處理您的請求。
如果任務的 status
變為 failed
,表示 Meilisearch 無法完成您的請求。請查看任務物件的 error
欄位以獲取更多資訊。
結論
您已了解當 API 請求將任務新增至任務佇列時會發生什麼,以及如何檢查該任務的狀態。請參閱任務 API 參考和非同步操作說明,以取得更多關於任務運作方式的資訊。