解析导入错误 API编辑

[预览] 此功能处于技术预览阶段,可能会在将来的版本中更改或删除。Elastic 将努力解决任何问题,但技术预览中的功能不受官方 GA 功能的支持 SLA 的约束。 解析来自 导入对象 API 的错误。

要解析错误,您可以

  • 重试某些已保存对象
  • 覆盖特定已保存对象
  • 更改对不同已保存对象的引用

有关最新 API 详细信息,请参阅 开放式 API 规范

请求编辑

POST <kibana 主机>:<端口>/api/saved_objects/_resolve_import_errors

POST <kibana 主机>:<端口>/s/<空间 ID>/api/saved_objects/_resolve_import_errors

路径参数编辑

space_id
(可选,字符串) 空间 的标识符。当 URL 中未指定 space_id 时,将使用默认空间。

查询参数编辑

createNewCopies
(可选,布尔值) 创建已保存对象的副本,重新生成每个对象 ID,并重置来源。如果在初始导入期间启用,则在解析导入错误时也启用。
compatibilityMode

(可选,布尔值) 对正在导入的已保存对象应用各种调整,以保持不同 Kibana 版本之间的兼容性。如果在初始导入期间启用,则在解析导入错误时也启用。

此选项不能与 createNewCopies 选项一起使用。

请求正文编辑

请求正文必须包含 multipart/form-data 类型。

file
与导入 API 相同的文件。
retries

(必需,数组) 重试操作,可以指定如何解析不同类型的错误。

<retries> 的属性
type
(必需,字符串) 已保存对象的类型。
id
(必需,字符串) 已保存对象的 ID。
overwrite
(可选,布尔值) 当设置为 true 时,源对象将覆盖冲突的目标对象。当设置为 false 时,不执行任何操作。
destinationId
(可选,字符串) 指定导入对象应具有的目标 ID(如果与当前 ID 不同)。
replaceReferences
(可选,数组) 用于更改对象引用的 typefromto 的列表。
ignoreMissingReferences
(可选,布尔值) 当设置为 true 时,忽略缺少引用错误。当设置为 false 时,不执行任何操作。

响应正文编辑

success
(布尔值) 指示导入成功。当设置为 false 时,某些对象可能未创建。有关更多信息,请参阅 errorssuccessResults 属性。
successCount
(数字) 指示成功解析的记录数量。
errors

(可选,数组) 指定未能解析的对象。

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

successResults

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

只有在解决所有可解析的错误(包括冲突和缺少引用)后才会创建对象。要解析错误,请参阅 示例

响应代码编辑

200
指示调用成功。

示例编辑

解析冲突错误编辑

此示例基于 带有冲突错误的导入对象 API 示例

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

$ curl -X POST api/saved_objects/_resolve_import_errors -H "kbn-xsrf: true" --form [email protected] --form retries='[{"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"}]'

file.ndjson 文件包含以下内容

{"type":"index-pattern","id":"my-pattern","attributes":{"title":"my-pattern-*"}}
{"type":"visualization","id":"my-vis","attributes":{"title":"Look at my visualization"}}
{"type":"canvas-workpad","id":"my-canvas","attributes":{"name":"Look at my canvas"}}
{"type":"dashboard","id":"my-dashboard","attributes":{"title":"Look at my dashboard"}}

API 返回以下内容

{
  "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/saved_objects/_resolve_import_errors -H "kbn-xsrf: true" --form [email protected] --form retries='[{"type":"visualization","id":"my-vis","replaceReferences":[{"type":"index-pattern","from":"my-pattern-*","to":"existing-pattern"}]},{"type":"search","id":"my-search","ignoreMissingReferences":true},{"type":"dashboard","id":"my-dashboard"}]'

file.ndjson 文件包含以下内容

{"type":"visualization","id":"my-vis","attributes":{"title":"Look at my visualization"},"references":[{"name":"ref_0","type":"index-pattern","id":"my-pattern-*"}]}
{"type":"search","id":"my-search","attributes":{"title":"Look at my search"},"references":[{"name":"ref_0","type":"index-pattern","id":"another-pattern-*"}]}
{"type":"dashboard","id":"my-dashboard","attributes":{"title":"Look at my dashboard"},"references":[{"name":"ref_0","type":"visualization","id":"my-vis"}]}

API 返回以下内容

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

结果指示导入成功,并且所有三个对象都已创建。

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