导入对象 API
编辑导入对象 API编辑
[预览] 此功能处于技术预览阶段,可能会在将来的版本中更改或删除。Elastic 将努力解决任何问题,但技术预览中的功能不受官方 GA 功能的支撑 SLA 的约束。 从导出 API 创建的文件中创建一组 Kibana 保存对象。
有关最新 API 详细信息,请参阅 开放 API 规范。
跨版本兼容性编辑
保存对象只能导入到相同版本、同一主版本上的较新次要版本或下一个主版本。导出的保存对象不向后兼容,无法导入到较旧版本的 Kibana 中。有关兼容性示例,请参见下表
导出版本 |
导入版本 |
兼容? |
6.7.x |
6.8.x |
是 |
6.x.x |
7.x.x |
是 |
7.x.x |
8.x.x |
是 |
7.1.x |
7.15.x |
是 |
7.x.x |
6.x.x |
否 |
7.15.x |
7.1.x |
否 |
6.x.x |
8.x.x |
否 |
请求编辑
POST <kibana 主机>:<端口>/api/saved_objects/_import
POST <kibana 主机>:<端口>/s/<空间 ID>/api/saved_objects/_import
查询参数编辑
-
createNewCopies
-
(可选,布尔值) 创建保存对象的副本,重新生成每个对象 ID 并重置来源。使用此选项时,可以避免潜在的冲突错误。
此选项不能与
overwrite
和compatibilityMode
选项一起使用。 -
overwrite
-
(可选,布尔值) 当保存对象已存在时覆盖它们。使用此选项时,潜在的冲突错误会通过覆盖目标对象自动解决。
此选项不能与
createNewCopies
选项一起使用。 -
compatibilityMode
-
(可选,布尔值) 对要导入的保存对象应用各种调整,以保持不同 Kibana 版本之间的兼容性。仅当您遇到导入保存对象的问题时才使用此选项。
此选项不能与
createNewCopies
选项一起使用。
请求正文编辑
请求正文必须包含 multipart/form-data 类型。
-
文件
-
使用导出 API 导出的文件。
savedObjects.maxImportExportSize
配置设置限制了此文件中可能包含的保存对象数量。类似地,savedObjects.maxImportPayloadBytes
设置限制了可以导入的文件的总大小。
响应正文编辑
-
成功
- (布尔值) 指示导入是否成功完成。当设置为
false
时,某些对象可能未创建。有关更多信息,请参阅errors
和successResults
属性。 -
成功计数
- (数字) 指示成功导入的记录数量。
-
错误
-
(可选,数组) 指示导入不成功,并指定未成功导入的对象。
一个对象可能会导致多个错误,这需要单独的步骤来解决。例如,
missing_references
错误和conflict
错误。 -
successResults
-
(可选,数组) 指示成功导入的对象,以及任何元数据(如果适用)。
只有在解决所有可解决的错误(包括冲突和缺少引用)后才会创建对象。有关如何解决错误的信息,请参阅 示例。
响应代码编辑
-
200
- 指示成功调用。
示例编辑
成功导入,启用 createNewCopies
编辑
导入数据视图和仪表盘
$ curl -X POST api/saved_objects/_import?createNewCopies=true -H "kbn-xsrf: true" --form [email protected]
file.ndjson
文件包含以下内容
{"type":"index-pattern","id":"my-pattern","attributes":{"title":"my-pattern-*"}} {"type":"dashboard","id":"my-dashboard","attributes":{"title":"Look at my dashboard"}}
API 返回以下内容
{ "success": true, "successCount": 2, "successResults": [ { "id": "my-pattern", "type": "index-pattern", "destinationId": "4aba3770-0d04-45e1-9e34-4cf0fd2165ae", "meta": { "icon": "indexPatternApp", "title": "my-pattern-*" } }, { "id": "my-dashboard", "type": "dashboard", "destinationId": "c31d1eca-9bc0-4a81-b5f9-30c442824c48", "meta": { "icon": "dashboardApp", "title": "Look at my dashboard" } } ] }
结果指示导入成功,并且创建了两个对象。由于这些对象是作为新副本创建的,因此 successResults
数组中的每个条目都包含一个 destinationId
属性。
成功导入,禁用 createNewCopies
编辑
导入数据视图和仪表盘
$ curl -X POST api/saved_objects/_import -H "kbn-xsrf: true" --form [email protected]
file.ndjson
文件包含以下内容
{"type":"index-pattern","id":"my-pattern","attributes":{"title":"my-pattern-*"}} {"type":"dashboard","id":"my-dashboard","attributes":{"title":"Look at my dashboard"}}
API 返回以下内容
{ "success": true, "successCount": 2, "successResults": [ { "id": "my-pattern", "type": "index-pattern", "meta": { "icon": "indexPatternApp", "title": "my-pattern-*" } }, { "id": "my-dashboard", "type": "dashboard", "meta": { "icon": "dashboardApp", "title": "Look at my dashboard" } } ] }
结果指示导入成功,并且创建了两个对象。
导入失败,出现冲突错误编辑
导入数据视图、可视化、Canvas 工作区和仪表盘,这些仪表盘包含保存的对象
$ curl -X POST api/saved_objects/_import -H "kbn-xsrf: true" --form [email protected]
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": false, "successCount": 1, "errors": [ { "id": "my-pattern", "type": "index-pattern", "title": "my-pattern-*", "error": { "type": "conflict" }, "meta": { "icon": "indexPatternApp", "title": "my-pattern-*" } }, { "id": "my-visualization", "type": "my-vis", "title": "Look at my visualization", "error": { "type": "conflict", "destinationId": "another-vis" }, "meta": { "icon": "visualizeApp", "title": "Look at my visualization" } }, { "id": "my-canvas", "type": "canvas-workpad", "title": "Look at my canvas", "error": { "type": "ambiguous_conflict", "destinations": [ { "id": "another-canvas", "title": "Look at another canvas", "updatedAt": "2020-07-08T16:36:32.377Z" }, { "id": "yet-another-canvas", "title": "Look at yet another canvas", "updatedAt": "2020-07-05T12:29:54.849Z" } ] }, "meta": { "icon": "canvasApp", "title": "Look at my canvas" } } ], "successResults": [ { "id": "my-dashboard", "type": "dashboard", "meta": { "icon": "dashboardApp", "title": "Look at my dashboard" } } ] }
结果指示导入不成功,因为数据视图、可视化、Canvas 工作区和仪表盘导致冲突错误
- 具有相同 ID 的数据视图已存在,这导致冲突错误。要解决此错误,请覆盖现有对象或跳过该对象。
- 具有不同 ID 但具有相同来源的可视化已存在,这导致冲突错误。
destinationId
字段包含导致冲突的另一个可视化的id
。添加此行为是为了确保可以在 空间 之间共享的新对象的行为与传统的不可共享对象类似。当可共享对象被导出然后导入到新的空间时,它会保留其来源,以便按预期遇到冲突。要解决此问题,请覆盖指定的目标对象或跳过该对象。 - 两个具有不同 ID 但具有相同来源的 Canvas 工作区已存在,这导致冲突错误。
destinations
数组描述了导致冲突的其他工作区。当可共享对象被导出、导入到新的空间,然后共享到另一个存在相同来源对象的空間时,就会发生冲突错误。要解决此问题,请选择要覆盖的目标对象或跳过该对象。
使用 解决导入错误 API 解决错误后,将创建对象。
导入失败,出现缺少引用错误编辑
当可视化数据视图不存在时,导入可视化和仪表盘
$ curl -X POST api/saved_objects/_import -H "kbn-xsrf: true" --form [email protected]
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"},{"name":"ref_1","type":"search","id":"my-search"}]}
API 返回以下内容
{ "success": false, "successCount": 1, "errors": [ { "id": "my-vis", "type": "visualization", "title": "Look at my visualization", "error": { "type": "missing_references", "references": [ { "type": "index-pattern", "id": "my-pattern-*" } ] }, "meta": { "icon": "visualizeApp", "title": "Look at my visualization" } }, { "id": "my-search", "type": "search", "title": "Look at my search", "error": { "type": "missing_references", "references": [ { "type": "index-pattern", "id": "another-pattern-*" } ] }, "meta": { "icon": "searchApp", "title": "Look at my search" } } ], "successResults": [ { "id": "my-dashboard", "type": "dashboard", "meta": { "icon": "dashboardApp", "title": "Look at my dashboard" } } ] }
结果指示导入不成功,因为可视化和搜索导致缺少引用错误。
使用 解决导入错误 API 解决错误后,将创建对象。