任务

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

    任务对象

    {
      "uid": 4,
      "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 是 **全局递增** 的。

    indexUid

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

    注意

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

    status

    类型: 字符串
    描述: 任务的状态。可能的值为 enqueuedprocessingsucceededfailedcanceled

    type

    类型: 字符串
    描述: 任务执行的操作类型。可能的值为 indexCreationindexUpdateindexDeletionindexSwapdocumentAdditionOrUpdatedocumentDeletionsettingsUpdatedumpCreationtaskCancelationtaskDeletionsnapshotCreation

    canceledBy

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

    details

    类型: 对象
    描述: 关于任务有效载荷的详细信息。此对象的內容取决于任务的 type

    documentAdditionOrUpdate

    名称描述
    receivedDocuments接收的文档数量
    indexedDocuments已索引的文档数量。在任务状态为 enqueuedprocessing 时为 null

    documentDeletion

    名称描述
    providedIds排队待删除的文档数量
    originalFilter用于删除文档的过滤器。如果未指定,则为 null
    deletedDocuments已删除的文档数量。在任务状态为 enqueuedprocessing 时为 null

    indexCreation

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

    indexUpdate

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

    indexDeletion

    名称描述
    deletedDocuments已删除的文档数量。这应该等于已删除索引中的总文档数。在任务状态为 enqueuedprocessing 时为 null

    indexSwap

    名称描述
    swaps包含 indexSwap 任务有效载荷的对象

    settingsUpdate

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

    dumpCreation

    名称描述
    dumpUid生成的转储文件 uid。这也是生成的转储文件的文件名。当任务状态为 enqueuedprocessingcanceledfailed 时为 null

    taskCancelation

    名称描述
    matchedTasks匹配的任务数量。如果用于请求的 API 密钥无权访问索引,则与该索引相关的任务将不会包含在 matchedTasks
    canceledTasks成功取消的任务数量。如果任务取消失败,则将为 0。当任务状态为 enqueuedprocessing 时为 null
    originalFilter取消任务 请求中使用的过滤器
    注意

    任务取消可以成功,但仍有 canceledTasks: 0。当 matchedTasks 匹配已完成的任务(succeededfailedcanceled)时,会发生这种情况。

    taskDeletion

    名称描述
    matchedTasks匹配的任务数量。如果用于请求的 API 密钥无权访问索引,则与该索引相关的任务将不会包含在 matchedTasks
    deletedTasks成功删除的任务数量。如果任务删除失败,则将为 0。当任务状态为 enqueuedprocessing 时为 null
    originalFilter删除任务 请求中使用的过滤器
    注意

    任务删除可以成功,但仍有 deletedTasks: 0。当 matchedTasks 匹配 enqueuedprocessing 任务时,会发生这种情况。

    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 的日期和时间,无论 failedsucceeded 还是 canceled,都以 RFC 3339 格式表示

    总结的任务对象

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

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

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

    获取任务

    GET/tasks

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

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

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

    查询参数

    查询参数默认值描述
    limit20要返回的任务数量
    from最后一个创建的任务的 uid返回的第一个任务的 uid
    uids*(所有 uid)按其 uid 过滤任务。用逗号 (,) 分隔多个任务 uids
    statuses*(所有状态)按其 status 过滤任务。用逗号 (,) 分隔多个任务 statuses
    types*(所有类型)按其 type 过滤任务。用逗号 (,) 分隔多个任务 types
    indexUids*(所有索引)按其 indexUid 过滤任务。用逗号 (,) 分隔多个任务 indexUids。区分大小写
    canceledByN/A按其 canceledBy 字段过滤任务。用逗号 (,) 分隔多个任务 uids
    beforeEnqueuedAt*(所有任务)按其 enqueuedAt 字段过滤任务
    beforeStartedAt*(所有任务)按其 startedAt 字段过滤任务
    beforeFinishedAt*(所有任务)按其 finishedAt 字段过滤任务
    afterEnqueuedAt*(所有任务)按其 enqueuedAt 字段过滤任务
    afterStartedAt*(所有任务)按其 startedAt 字段过滤任务
    afterFinishedAt*(所有任务)按其 finishedAt 字段过滤任务

    响应

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

    示例

    curl \
      -X GET 'http://localhost:7700/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 'http://localhost:7700/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}

    根据其 uidstatustypeindexUid 或排队、处理或完成的日期取消任意数量的 enqueuedprocessing 任务。

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

    警告

    为了防止用户意外取消所有排队和处理中的任务,Meilisearch 会在没有使用任何过滤器的情况下使用此路由时(POST /tasks/cancel)抛出 missing_task_filters 错误。

    你知道吗?

    只要 taskCancelation 类型任务处于 enqueuedprocessing 状态,您也可以取消它们。这是可能的,因为 taskCancelation 类型任务以相反的顺序处理,因此您最后排队的任务将被优先处理。

    查询参数

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

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

    日期过滤器等效于<>操作。目前,无法对日期过滤器执行操作。

    要详细了解任务过滤,请参阅我们的专用指南。

    示例

    curl \
      -X POST 'http://localhost:7700/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获取有关任务状态的更多详细信息。

    取消所有任务

    您可以使用以下过滤器取消所有processingenqueued任务

    POST/tasks/cancel?statuses=processing,enqueued

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

    删除任务

    DELETE/tasks?{query_parameter}

    根据uidstatustypeindexUidcanceledBy或日期删除已完成 (succeededfailedcanceled) 任务。任务删除是一个原子操作:要么所有任务都成功删除,要么一个都不删除

    警告

    为了防止用户意外删除整个任务历史记录,如果在没有任何过滤器的情况下使用此路由 (DELETE /tasks),Meilisearch 会抛出missing_task_filters错误。

    查询参数

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

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

    日期过滤器等效于<>操作。目前,无法对日期过滤器执行操作。

    要详细了解任务过滤,请参阅我们的专用指南。

    示例

    curl \
      -X DELETE 'http://localhost:7700/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操作的权限。