使用任务 Webhook
本指南教你如何使用 Webhook 在 Meilisearch 完成任务时通知 URL。
要求
- 一个命令行控制台
- 一个自托管的 Meilisearch 实例
- 一个配置为接收带有 ndjson 负载的 POST 请求的服务器
配置 Webhook URL
重启你的 Meilisearch 实例,并将 Webhook URL 提供给 --task-webhook-URL
meilisearch --task-webhook-url http://localhost:8000
你也可以使用环境变量或在配置文件中使用 MEILI_TASK_WEBHOOK_URL
定义 Webhook URL。
可选:配置授权标头
根据你的设置,你可能需要提供授权标头。将其提供给 task-webhook-authorization-header
meilisearch --task-webhook-url http://localhost:8000 --task-webhook-authorization-header Bearer aSampleMasterKey
测试 Webhook
常见的异步操作是向索引添加或更新文档。以下示例向我们的 books
索引添加一个测试文档
curl \
-X POST 'MEILISEARCH_URL/indexes/books/documents' \
-H 'Content-Type: application/json' \
--data-binary '[
{
"id": 1,
"title": "Nuestra parte de noche",
"author": "Mariana Enríquez"
}
]'
当 Meilisearch 完成此文档的索引后,它将向你使用 --task-webhook-url
配置的 URL 发送一个 POST
请求。请求正文将是一个或多个 ndjson 格式的任务对象 ndjson 格式
{"uid":4,"indexUid":"books","status":"succeeded","type":"documentAdditionOrUpdate","canceledBy":null,"details.receivedDocuments":1,"details.indexedDocuments":1,"duration":"PT0.001192S","enqueuedAt":"2022-08-04T12:28:15.159167Z","startedAt":"2022-08-04T12:28:15.161996Z","finishedAt":"2022-08-04T12:28:15.163188Z"}
如果 Meilisearch 已经批量处理了多个任务,它只会在一个批次中的所有任务完成后才触发 Webhook。在这种情况下,响应负载将包含所有任务,每个任务用一个新行分隔
{"uid":4,"indexUid":"books","status":"succeeded","type":"documentAdditionOrUpdate","canceledBy":null,"details.receivedDocuments":1,"details.indexedDocuments":1,"duration":"PT0.001192S","enqueuedAt":"2022-08-04T12:28:15.159167Z","startedAt":"2022-08-04T12:28:15.161996Z","finishedAt":"2022-08-04T12:28:15.163188Z"}
{"uid":5,"indexUid":"books","status":"succeeded","type":"documentAdditionOrUpdate","canceledBy":null,"details.receivedDocuments":1,"details.indexedDocuments":1,"duration":"PT0.001192S","enqueuedAt":"2022-08-04T12:28:15.159167Z","startedAt":"2022-08-04T12:28:15.161996Z","finishedAt":"2022-08-04T12:28:15.163188Z"}
{"uid":6,"indexUid":"books","status":"succeeded","type":"documentAdditionOrUpdate","canceledBy":null,"details.receivedDocuments":1,"details.indexedDocuments":1,"duration":"PT0.001192S","enqueuedAt":"2022-08-04T12:28:15.159167Z","startedAt":"2022-08-04T12:28:15.161996Z","finishedAt":"2022-08-04T12:28:15.163188Z"}