处理任务
许多 Meilisearch 操作都在任务中<0xE4><0xB8><0xB4><0xE6><0xAD><0xA5><0xE5><0xA4><0x84><0xE5><0xA4><0x95>处理。异步任务允许您对 Meilisearch 项目进行资源密集型更改,而不会给用户造成任何停机时间。
在本教程中,您将使用 Meilisearch API 将文档添加到索引,然后监控其状态。
要求
- 一个正在运行的 Meilisearch 项目
- 一个命令行控制台
向任务队列添加任务
需要索引的操作,例如添加和更新文档或更改索引的设置,将始终生成一个任务。
首先创建一个索引,然后向此索引添加大量文档
curl \
-X POST 'MEILISEARCH_URL/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 帐户并导航到您的项目。单击项目菜单中的“任务”链接
这将引导您进入任务概述。在“Uid”列中查找您的请求的 taskUid
当任务 status
更改为 succeeded
时,Meilisearch 已完成处理您的请求。
如果任务 status
更改为 failed
,则 Meilisearch 无法完成您的请求。检查任务对象的 error
字段以获取更多信息。
使用 Meilisearch API 监控任务状态
使用来自您的请求响应的 taskUid
来检查任务的状态
curl \
-X GET 'MEILISEARCH_URL/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 参考 和 异步操作说明。