任務管理

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"}