/tasks 路由提供有关异步操作进度的信息。

任务对象

{
  "uid": 4,
  "batchUids": 0,
  "indexUid": "movie",
  "status": "failed",
  "type": "indexDeletion",
  "canceledBy": null,
  "details": {
    "deletedDocuments": 0
  },
  "error": {
    "message": "Index `movie` not found.",
    "code": "index_not_found",
    "type": "invalid_request",
    "link": "https://docs.meilisearch.com/errors#index_not_found"
  },
  "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

类型: 整数
描述: 任务的唯一顺序标识符。

在实例中的所有索引上,任务的 uid 都会递增。

batchUid

类型: 整数
描述: 此任务所属批次的唯一顺序标识符。

在实例中的所有索引上,批次的 uid 都会递增。

indexUid

类型: 字符串
描述: 目标索引的唯一标识符

对于全局任务,此值始终为null

status

类型: 字符串
描述: 任务状态。可能的值包括enqueued(已排队)、processing(处理中)、succeeded(成功)、failed(失败)和canceled(已取消)

type

类型: 字符串
描述: 任务执行的操作类型。可能的值包括indexCreation(索引创建)、indexUpdate(索引更新)、indexDeletion(索引删除)、indexSwap(索引交换)、documentAdditionOrUpdate(文档添加或更新)、documentDeletion(文档删除)、settingsUpdate(设置更新)、dumpCreation(数据转储创建)、taskCancelation(任务取消)、taskDeletion(任务删除)、databaseUpgrade(数据库升级)、documentEdition(文档编辑)和snapshotCreation(快照创建)

canceledBy

类型: 整数
描述: 如果任务被取消,canceledBy 包含taskCancelation 任务的 uid。如果任务未被取消,canceledBy 始终为 null

details

类型: 对象
描述: 任务负载的详细信息。此对象的内容取决于任务的 type

documentAdditionOrUpdate(文档添加或更新)

名称描述
receivedDocuments接收到的文档数量
indexedDocuments已索引的文档数量。当任务状态为enqueued(已排队)或processing(处理中)时,此值为null

documentDeletion(文档删除)

名称描述
providedIds已排队等待删除的文档数量
originalFilter用于删除文档的过滤器。如果未指定,则为null
deletedDocuments已删除的文档数量。当任务状态为enqueued(已排队)或processing(处理中)时,此值为null

indexCreation(索引创建)

名称描述
primaryKey索引创建期间提供的 primaryKey 字段值。如果未指定,则为null

indexUpdate(索引更新)

名称描述
primaryKey索引更新期间提供的 primaryKey 字段值。如果未指定,则为null

indexDeletion(索引删除)

名称描述
deletedDocuments已删除的文档数量。此值应等于已删除索引中的文档总数。当任务状态为enqueued(已排队)或processing(处理中)时,此值为null

indexSwap(索引交换)

名称描述
swaps包含indexSwap任务负载的对象

settingsUpdate(设置更新)

名称描述
rankingRules排名规则列表
filterableAttributes可过滤属性列表
distinctAttribute去重属性
searchableAttributes可搜索属性列表
displayedAttributes可显示属性列表
sortableAttributes可排序属性列表
stopWords停用词列表
synonyms同义词列表
typoTolerancetypoTolerance 对象
paginationpagination 对象
facetingfaceting 对象

dumpCreation(数据转储创建)

名称描述
dumpUid生成的数据转储的 uid。这也是生成的数据转储文件的名称。当任务状态为enqueued(已排队)、processing(处理中)、canceled(已取消)或failed(失败)时,此值为null

taskCancelation(任务取消)

名称描述
matchedTasks匹配到的任务数量。如果请求使用的 API 密钥无权访问某个索引,则与该索引相关的任务将不会包含在matchedTasks
canceledTasks成功取消的任务数量。如果任务取消失败,此值将为0。当任务状态为enqueued(已排队)或processing(处理中)时,此值为null
originalFilter取消任务请求中使用的过滤器

任务取消可能成功,但canceledTasks仍为0。这发生在matchedTasks匹配到已完成的任务(succeeded(成功)、failed(失败)或canceled(已取消))时。

taskDeletion(任务删除)

名称描述
matchedTasks匹配到的任务数量。如果请求使用的 API 密钥无权访问某个索引,则与该索引相关的任务将不会包含在matchedTasks
deletedTasks成功删除的任务数量。如果任务删除失败,此值将为0。当任务状态为enqueued(已排队)或processing(处理中)时,此值为null
originalFilter删除任务请求中使用的过滤器

任务删除可能成功,但deletedTasks仍为0。这发生在matchedTasks匹配到enqueued(已排队)或processing(处理中)任务时。

snapshotCreation(快照创建)

对于snapshotCreation任务,details 对象被设置为null

error

类型: 对象
描述: 如果任务的状态为failed(失败),则此对象包含错误定义。否则,设置为null

名称描述
message易于理解的错误描述
code错误代码
type错误类型
link文档相关部分的链接

duration

类型: 字符串
描述: 任务在processing(处理中)状态下花费的总时间,采用ISO 8601格式

enqueuedAt

类型: 字符串
描述: 任务首次enqueued(已排队)的日期和时间,采用RFC 3339格式

startedAt

类型: 字符串
描述: 任务开始processing(处理中)的日期和时间,采用RFC 3339格式

finishedAt

类型: 字符串
描述: 任务完成processing(处理中),无论是failed(失败)、succeeded(成功)还是canceled(已取消)的日期和时间,采用RFC 3339格式

摘要任务对象

当 API 请求触发异步进程时,Meilisearch 返回一个摘要任务对象。此对象包含以下字段

字段类型描述
taskUid整数唯一顺序标识符
indexUid字符串唯一索引标识符(对于全局任务始终为null
status字符串任务状态。值为enqueued(已排队)
type字符串任务类型
enqueuedAt字符串表示任务在RFC 3339格式下enqueued(已排队)的日期和时间

您可以使用此taskUid获取任务状态的更多详细信息。

获取任务

GET
/tasks

全局列出所有任务,无论索引。task对象包含在results数组中。

任务始终按uid降序返回。这意味着默认情况下,**最近创建的task对象会首先出现**。

任务结果是分页的,并且可以过滤

查询参数

查询参数默认值描述
uids* (所有 uid)根据任务的uid过滤任务。使用逗号 (,) 分隔多个任务uid
batchUids* (所有批次 uid)根据任务的batchUid过滤任务。使用逗号 (,) 分隔多个batchUid
statuses* (所有状态)根据任务的status过滤任务。使用逗号 (,) 分隔多个任务status
types* (所有类型)根据任务的type过滤任务。使用逗号 (,) 分隔多个任务type
indexUids* (所有索引)根据任务的indexUid过滤任务。使用逗号 (,) 分隔多个任务indexUid。区分大小写
limit20要返回的任务数量
from最后创建任务的uid返回的第一个任务的uid
reversefalse如果为true,则按倒序返回结果,从最早到最近
canceledBy不适用根据任务的canceledBy字段过滤任务。使用逗号 (,) 分隔多个任务uid
beforeEnqueuedAt* (所有任务)根据任务的enqueuedAt字段过滤任务
beforeStartedAt* (所有任务)根据任务的startedAt字段过滤任务
beforeFinishedAt* (所有任务)根据任务的finishedAt字段过滤任务
afterEnqueuedAt* (所有任务)根据任务的enqueuedAt字段过滤任务
afterStartedAt* (所有任务)根据任务的startedAt字段过滤任务
afterFinishedAt* (所有任务)根据任务的finishedAt字段过滤任务

响应

名称类型描述
results数组任务对象数组
total整数匹配过滤器或查询的任务总数
limit整数返回的任务数量
from整数返回的第一个任务的uid
next整数传递给from的值,用于查看结果的下一“页”。当next的值为null时,表示没有更多任务可供查看

示例

curl \
  -X GET 'MEILISEARCH_URL/tasks'

响应:200 Ok

{
  "results": [
    {
      "uid": 1,
      "indexUid": "movies_reviews",
      "status": "failed",
      "type": "documentAdditionOrUpdate",
      "canceledBy": null,
      "details": {
        "receivedDocuments": 100,
        "indexedDocuments": 0
      },
      "error": null,
      "duration": null,
      "enqueuedAt": "2021-08-12T10:00:00.000000Z",
      "startedAt": null,
      "finishedAt": null
    },
    {
      "uid": 0,
      "indexUid": "movies",
      "status": "succeeded",
      "type": "documentAdditionOrUpdate",
      "canceledBy": null,
      "details": {
        "receivedDocuments": 100,
        "indexedDocuments": 100
      },
      "error": null,
      "duration": "PT16S",
      "enqueuedAt": "2021-08-11T09:25:53.000000Z",
      "startedAt": "2021-08-11T10:03:00.000000Z",
      "finishedAt": "2021-08-11T10:03:16.000000Z"
    }
  ],
  "total": 50,
  "limit": 20,
  "from": 1,
  "next": null
}

获取单个任务

GET
/tasks/{task_uid}

获取单个任务。

如果您尝试检索已删除的任务,Meilisearch 将返回task_not_found错误。

路径参数

名称类型描述
task_uid *字符串请求任务的uid

示例

curl \
  -X GET 'MEILISEARCH_URL/tasks/1'

响应:200 Ok

{
  "uid": 1,
  "indexUid": "movies",
  "status": "succeeded",
  "type": "settingsUpdate",
  "canceledBy": null,
  "details": {
    "rankingRules": [
      "typo",
      "ranking:desc",
      "words",
      "proximity",
      "attribute",
      "exactness"
    ]
  },
  "error": null,
  "duration": "PT1S",
  "enqueuedAt": "2021-08-10T14:29:17.000000Z",
  "startedAt": "2021-08-10T14:29:18.000000Z",
  "finishedAt": "2021-08-10T14:29:19.000000Z"
}

取消任务

POST
/tasks/cancel?{query_parameter}

根据任务的uidstatus(状态)、type(类型)、indexUid(索引uid),或它们排队(enqueuedAt)或处理(startedAt)的日期,取消任意数量的enqueued(已排队)或processing(处理中)任务。

任务取消是一个原子事务:**要么所有任务都成功取消,要么一个也没有**。

为防止用户意外取消所有已排队和处理中的任务,如果此路由未带任何过滤器使用(POST /tasks/cancel),Meilisearch 将抛出missing_task_filters错误。

只要taskCancelation类型的任务处于enqueued(已排队)或processing(处理中)状态,您也可以取消它们。这是因为taskCancelation类型的任务按倒序处理,因此您最后排队的任务将首先被处理。

查询参数

需要有效的uidsstatusestypesindexUids或日期(beforeXAtafterXAt)参数。

查询参数描述
uids根据uid取消任务。使用逗号 (,) 分隔多个uid。使用uids=*表示所有uid
statuses根据status取消任务。使用逗号 (,) 分隔多个status。使用statuses=*表示所有status
types根据type取消任务。使用逗号 (,) 分隔多个type。使用types=*表示所有type
indexUids根据indexUid取消任务。使用逗号 (,) 分隔多个uid。使用indexUids=*表示所有indexUid。区分大小写
beforeEnqueuedAt取消指定enqueuedAt日期**之前**的任务。使用beforeEnqueuedAt=*取消所有任务
beforeStartedAt取消指定startedAt日期**之前**的任务。使用beforeStartedAt=*取消所有任务
afterEnqueuedAt取消指定enqueuedAt日期**之后**的任务。使用afterEnqueuedAt=*取消所有任务
afterStartedAt取消指定startedAt日期**之后**的任务。使用afterStartedAt=*取消所有任务

日期过滤器等同于<>操作。目前,无法使用日期过滤器执行操作。

要了解有关过滤任务的更多信息,请参阅我们的专用指南。

示例

curl \
  -X POST 'MEILISEARCH_URL/tasks/cancel?uids=1,2'

响应:200 Ok

{
  "taskUid": 3,
  "indexUid": null,
  "status": "enqueued",
  "type": "taskCancelation",
  "enqueuedAt": "2021-08-12T10:00:00.000000Z"
}

由于taskCancelation全局任务,其indexUid始终为null

您可以使用此taskUid获取任务状态的更多详细信息。

取消所有任务

您可以使用以下过滤器取消所有processing(处理中)和enqueued(已排队)任务

POST
/tasks/cancel?statuses=processing,enqueued

使用的 API 密钥必须有权访问所有索引("indexes": [*])和task.cancel操作。

删除任务

DELETE
/tasks?{query_parameter}

根据uidstatus(状态)、type(类型)、indexUid(索引uid)、canceledBy或日期,删除已完成(succeeded(成功)、failed(失败)或canceled(已取消))的任务。任务删除是一个原子事务:**要么所有任务都成功删除,要么一个也没有**。

为防止用户意外删除所有任务历史记录,如果此路由未带任何过滤器使用(DELETE /tasks),Meilisearch 将抛出missing_task_filters错误。

查询参数

需要有效的uidsstatusestypesindexUidscanceledBy或日期(beforeXAtafterXAt)参数。

查询参数描述
uids根据uid删除任务。使用逗号 (,) 分隔多个uid。使用uids=*表示所有uid
statuses根据status删除任务。使用逗号 (,) 分隔多个status。使用statuses=*表示所有status
types根据type删除任务。使用逗号 (,) 分隔多个type。使用types=*表示所有type
indexUids根据indexUid删除任务。使用逗号 (,) 分隔多个uid。使用indexUids=*表示所有indexUid。区分大小写
canceledBy根据canceledBy字段删除任务
beforeEnqueuedAt删除指定enqueuedAt日期**之前**的任务。使用beforeEnqueuedAt=*删除所有任务
beforeStartedAt删除指定startedAt日期**之前**的任务。使用beforeStartedAt=*删除所有任务
beforeFinishedAt删除指定finishedAt日期**之前**的任务。使用beforeFinishedAt=*删除所有任务
afterEnqueuedAt删除指定enqueuedAt日期**之后**的任务。使用afterEnqueuedAt=*删除所有任务
afterStartedAt删除指定startedAt日期**之后**的任务。使用afterStartedAt=*删除所有任务
afterFinishedAt删除指定finishedAt日期**之后**的任务。使用afterFinishedAt=*删除所有任务

日期过滤器等同于<>操作。目前,无法使用日期过滤器执行操作。

要了解有关过滤任务的更多信息,请参阅我们的专用指南。

示例

curl \
  -X DELETE 'MEILISEARCH_URL/tasks?uids=1,2'

响应:200 Ok

{
  "taskUid": 3,
  "indexUid": null,
  "status": "enqueued",
  "type": "taskDeletion",
  "enqueuedAt": "2021-08-12T10:00:00.000000Z"
}

由于taskDeletion全局任务,其indexUid始终为null

您可以使用此taskUid获取任务状态的更多详细信息。

删除所有任务

您可以使用以下过滤器删除所有已完成的任务

DELETE
/tasks?statuses=failed,canceled,succeeded

使用的 API 密钥必须有权访问所有索引("indexes": [*])和task.delete操作。