任务管理

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

注册任务以进行任务管理

任务跟踪和管理是一项选择加入功能:必须在每个单独的任务中明确启用跟踪。对于查询(当前支持的唯一“任务”类型),可以通过将 canCancel 布尔标志指定为查询参数来完成此操作。true 的值启用任务管理;false(默认值)使其禁用。

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

任务管理操作

任务管理界面支持以下类型的操作

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

  2. 取消特定任务。

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

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

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

V1 API

curl -X GET "http://localhost:8983/solr/collectionName/tasks/list"

V2 API

curl -X GET "http://localhost: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

curl -X GET "http://localhost:8983/solr/collectionName/tasks/cancel?queryUUID=5"

V2 API

curl -X GET "http://localhost: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

curl -X GET "http://localhost:8983/solr/collectionName/tasks/list?taskUUID=5"

V2 API

curl -X GET "http://localhost:8983/v2/collections/collectionName/tasks/list?taskUUID=5"

taskUUID 参数

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

示例响应

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