解析复制到空间冲突的保存对象 API

编辑

解析复制到空间冲突的保存对象 API编辑

[预览] 此功能处于技术预览阶段,可能会在将来的版本中更改或删除。Elastic 将致力于解决任何问题,但技术预览中的功能不受官方 GA 功能支持 SLA 的约束。 覆盖从 复制保存对象到空间 API 返回的错误保存对象。

请求编辑

POST <kibana 主机>:<端口>/api/spaces/_resolve_copy_saved_objects_errors

POST <kibana 主机>:<端口>/s/<空间 ID>/api/spaces/_resolve_copy_saved_objects_errors

先决条件编辑

执行 复制保存对象到空间 API,它将返回需要您解决的错误。

路径参数编辑

空间 ID
(可选,字符串) 包含要复制的保存对象的空格的 ID。当 URL 中未指定 空间 ID 时,将使用默认空间。 空间 ID 必须与失败的 复制保存对象到空间 API 操作期间使用的值相同。

请求正文编辑

对象

(必需,对象数组) 要复制的保存对象。 对象 必须与失败的 复制保存对象到空间 API 操作期间使用的值相同。

对象 的属性
类型
(必需,字符串) 保存对象的类型。
ID
(必需,字符串) 保存对象的 ID。
包含引用
(可选,布尔值) 当设置为 true 时,将所有与指定保存对象相关的保存对象复制到目标空间。 包含引用 必须与失败的 复制保存对象到空间 API 操作期间使用的值相同。默认值为 false
创建新副本
(可选,布尔值) 创建保存对象的副本,重新生成每个对象的 ID,并重置来源。如果在初始复制期间启用,则在解决复制错误时也启用。默认值为 true
重试

(必需,对象) 要尝试的重试操作,可以指定如何解决不同类型的错误。对象键表示目标空间 ID。

重试 的属性
<空间 ID>

(必需,数组) 要为指定的 <空间 ID> 解决的错误。

<空间 ID> 的属性
类型
(必需,字符串) 保存对象的类型。
ID
(必需,字符串) 保存对象的 ID。
覆盖
(必需,布尔值) 当设置为 true 时,来自源空间(由 空间 ID 路径参数 指定)的保存对象将覆盖目标空间中的冲突对象。当设置为 false 时,这将不执行任何操作。
目标 ID

(可选,字符串) 指定复制对象应具有的目标 ID,如果与当前 ID 不同。

忽略缺少引用
(可选,布尔值) 当设置为 true 时,将忽略任何缺少引用错误。当设置为 false 时,不执行任何操作。

响应正文编辑

<空间 ID>

(对象) 描述空间复制操作结果的对象。包括响应中的动态键。

<空间 ID> 的属性
成功
(布尔值) 复制操作成功。当设置为 false 时,某些对象可能已复制。有关更多信息,请参阅 successCounterrors 属性。
成功计数
(数字) 成功复制的对象数量。
错误

(可选,数组) 复制操作期间发生的错误。当报告错误时, success 标志将设置为 false

一个对象可能会导致多个错误,这需要单独的步骤来解决。例如, missing_references 错误和 conflict 错误。

errors 的属性
ID
(字符串) 无法复制的保存对象的 ID。
类型
(字符串) 无法复制的保存对象的类型。
错误

(对象) 导致复制操作失败的错误。

error 的属性
类型
(字符串) 错误类型。例如, conflictambiguous_conflictmissing_referencesunsupported_typeunknown
目标 ID
(可选,字符串) 复制尝试期间使用的目标 ID。这仅存在于 conflict 错误类型中。
目的地
(可选,数组) 包含 idtitleupdatedAt 字段的可能对象目的地的列表,用于描述每个目的地。这仅存在于 ambiguous_conflict 错误类型中。
成功结果

(可选,数组) 指示成功复制的对象,以及任何适用的元数据。

当所有可解决的错误(包括冲突和缺少引用错误)得到解决时,将创建对象。有关更多信息,请参阅 示例

示例编辑

解决冲突错误编辑

此示例基于 包含冲突错误的复制对象 API 示例

通过覆盖现有的保存对象来解决数据视图、可视化和 Canvas 工作区的冲突错误

$ curl -X POST api/spaces/_resolve_copy_saved_objects_errors
{
  "objects": [{
    "type": "dashboard",
    "id": "my-dashboard"
  }],
  "includeReferences": true,
  "createNewCopies": false,
  "retries": {
    "sales": [
      {
        "type": "index-pattern",
        "id": "my-pattern",
        "overwrite": true
      },
      {
        "type": "visualization",
        "id": "my-vis",
        "overwrite": true,
        "destinationId": "another-vis"
      },
      {
        "type": "canvas",
        "id": "my-canvas",
        "overwrite": true,
        "destinationId": "yet-another-canvas"
      },
      {
        "type": "dashboard",
        "id": "my-dashboard"
      }
    ]
  }
}

API 返回以下内容

{
  "sales": {
    "success": true,
    "successCount": 4,
    "successResults": [
      {
        "id": "my-pattern",
        "type": "index-pattern",
        "meta": {
          "icon": "indexPatternApp",
          "title": "my-pattern-*"
        }
      },
      {
        "id": "my-vis",
        "type": "visualization",
        "destinationId": "another-vis",
        "meta": {
          "icon": "visualizeApp",
          "title": "Look at my visualization"
        }
      },
      {
        "id": "my-canvas",
        "type": "canvas-workpad",
        "destinationId": "yet-another-canvas",
        "meta": {
          "icon": "canvasApp",
          "title": "Look at my canvas"
        }
      },
      {
        "id": "my-dashboard",
        "type": "dashboard",
        "meta": {
          "icon": "dashboardApp",
          "title": "Look at my dashboard"
        }
      }
    ]
  }
}

结果表明复制成功,所有四个对象都已创建。

如果先前的复制尝试导致可解决的错误,则必须为要复制的每个对象(包括在 successResults 数组中返回的任何对象)包含重试。在此示例中,我们相应地重试了复制仪表板。

解决缺少引用错误编辑

此示例基于 包含缺少引用错误的复制对象 API 示例

通过忽略错误来解决可视化的缺少引用错误

$ curl -X POST api/spaces/_resolve_copy_saved_objects_errors
{
  "objects": [{
    "type": "dashboard",
    "id": "my-dashboard"
  }],
  "includeReferences": true,
  "createNewCopies": false,
  "retries": {
    "marketing": [
      {
        "type": "visualization",
        "id": "my-vis",
        "ignoreMissingReferences": true
      },
      {
        "type": "canvas",
        "id": "my-canvas"
      },
      {
        "type": "dashboard",
        "id": "my-dashboard"
      }
    ]
  }
}

API 返回以下内容

{
  "marketing": {
    "success": true,
    "successCount": 3,
    "successResults": [
      {
        "id": "my-vis",
        "type": "visualization",
        "meta": {
          "icon": "visualizeApp",
          "title": "Look at my visualization"
        }
      },
      {
        "id": "my-canvas",
        "type": "canvas-workpad",
        "meta": {
          "icon": "canvasApp",
          "title": "Look at my canvas"
        }
      },
      {
        "id": "my-dashboard",
        "type": "dashboard",
        "meta": {
          "icon": "dashboardApp",
          "title": "Look at my dashboard"
        }
      }
    ]
  }
}

结果表明复制成功,所有三个对象都已创建。

如果先前的复制尝试导致可解决的错误,则必须为要复制的每个对象(包括在 successResults 数组中返回的任何对象)包含重试。在此示例中,我们相应地重试了复制仪表板和画布。