解析导入错误 API
编辑解析导入错误 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
查询参数编辑
-
createNewCopies
- (可选,布尔值) 创建已保存对象的副本,重新生成每个对象 ID,并重置来源。如果在初始导入期间启用,则在解析导入错误时也启用。
-
compatibilityMode
-
(可选,布尔值) 对正在导入的已保存对象应用各种调整,以保持不同 Kibana 版本之间的兼容性。如果在初始导入期间启用,则在解析导入错误时也启用。
此选项不能与
createNewCopies
选项一起使用。
请求正文编辑
请求正文必须包含 multipart/form-data 类型。
-
file
- 与导入 API 相同的文件。
-
retries
-
(必需,数组) 重试操作,可以指定如何解析不同类型的错误。
<retries>
的属性-
type
- (必需,字符串) 已保存对象的类型。
-
id
- (必需,字符串) 已保存对象的 ID。
-
overwrite
- (可选,布尔值) 当设置为
true
时,源对象将覆盖冲突的目标对象。当设置为false
时,不执行任何操作。 -
destinationId
- (可选,字符串) 指定导入对象应具有的目标 ID(如果与当前 ID 不同)。
-
replaceReferences
- (可选,数组) 用于更改对象引用的
type
、from
和to
的列表。 -
ignoreMissingReferences
- (可选,布尔值) 当设置为
true
时,忽略缺少引用错误。当设置为false
时,不执行任何操作。
-
响应正文编辑
-
success
- (布尔值) 指示导入成功。当设置为
false
时,某些对象可能未创建。有关更多信息,请参阅errors
和successResults
属性。 -
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
数组中返回的任何对象)包含重试。在此示例中,我们相应地重试了仪表板的导入。