使用任务
许多 Meilisearch 操作是异步处理的,它们会以任务的形式执行。异步任务允许您对 Meilisearch 项目进行资源密集型更改,而不会导致用户出现任何停机时间。
在本教程中,您将使用 Meilisearch API 将文档添加到索引中,然后监控其状态。
需求
- 一个正在运行的 Meilisearch 项目
- 一个命令行控制台
将任务添加到任务队列
需要索引的操作,例如添加和更新文档或更改索引设置,将始终生成一个任务。
首先创建一个索引,然后向此索引添加大量文档
curl \
-X POST 'http://127.0.0.1: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 帐户并导航到您的项目。点击项目菜单中的“任务”链接。
这将引导您进入任务概览。在“Uid”列中查找您请求的 taskUid
。
当任务 status
更改为 succeeded
时,表示 Meilisearch 已完成处理您的请求。
如果任务 status
更改为 failed
,表示 Meilisearch 无法完成您的请求。检查任务对象的 error
字段以获取更多信息。
使用 Meilisearch API 监控任务状态
使用请求响应中的 taskUid
检查任务的状态。
curl \
-X GET 'http://127.0.0.1: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 参考和异步操作说明,以获取有关任务工作原理的更多信息。