任务管理

Solr 提供了一个任务管理框架,允许用户监控(甚至取消)某些类型的长时间运行的任务。目前仅支持查询作为一种“任务”类型,但未来可能会添加其他类型。

注册任务以进行任务管理

任务跟踪和管理是一项选择加入的功能:必须在每个单独的任务上显式启用跟踪。对于查询(目前唯一支持的“任务”类型),可以通过将 canCancel 布尔标志指定为查询参数来实现。值为 true 表示启用任务管理;false(默认值)表示禁用。

Solr 将为每个任务分配一个 UUID 以进行跟踪。如果需要,用户可以使用 queryUUID 查询参数以任意字符串覆盖此 UUID。(用户有责任确保他们提供的任何 queryUUID 值都是唯一的,并且不会与其他正在运行的任务冲突。)无论是由用户生成还是提供,此 UUID 随后可用于跟踪或取消任务。

任务管理操作

任务管理接口支持以下类型的操作

  1. 列出所有当前正在运行的可取消任务。

  2. 取消特定任务。

  3. 查询特定任务的状态。

列出所有活动的、可取消的任务

要列出所有当前正在运行的活动可取消任务,请使用以下语法

  • V1 API

  • V2 API

curl -X GET "https://127.0.0.1:8983/solr/collectionName/tasks/list"
curl -X GET "https://127.0.0.1:8983/v2/collections/collectionName/tasks/list"

示例响应

{
  "responseHeader":{
    "status":0,
    "QTime":16},
  "taskList":[
    "0,"q=weight_i:[0+TO+200]&canCancel=true&queryUUID=0",
    "5","q=weight_i:[0+TO+200]&canCancel=true&queryUUID=5",
    "4bcd27bb-0792-4512-a699-532fa7878bd3","q=weight_i:[0+TO+200]&canCancel=true"]}

取消活动的、可取消的任务

要取消活动任务,请使用以下语法

  • V1 API

  • V2 API

curl -X GET "https://127.0.0.1:8983/solr/collectionName/tasks/cancel?queryUUID=5"
curl -X GET "https://127.0.0.1:8983/v2/collections/collectionName/tasks/cancel?queryUUID=5"

示例响应

如果找到任务 UUID 并成功取消

{
  "responseHeader":{
    "status":0,
    "QTime":26},
  "status":"Query with queryID 5 cancelled successfully",
  "responseCode":200}

如果未找到任务 UUID

{
  "responseHeader":{
    "status":0,
    "QTime":24},
  "status":"Query with queryID 5 not found",
  "responseCode":404}

检查特定任务的状态

要检查特定任务的状态,请使用以下语法

  • V1 API

  • V2 API

curl -X GET "https://127.0.0.1:8983/solr/collectionName/tasks/list?taskUUID=5"
curl -X GET "https://127.0.0.1:8983/v2/collections/collectionName/tasks/list?taskUUID=5"

taskUUID 参数

taskUUID 参数可用于指定要检查其状态的任务 UUID。

示例响应

{
  "responseHeader":{
    "status":0,
    "QTime":16},
  "taskStatus":"id:5, status: active"}