我正在尝试将索引模式、可视化和仪表板从一个 Kibana 移动到另一个 Kibana。它们在不同的 docker 中运行,监听不同的端口。在saved_objects API中有导入和导出。天真地假设 export
生成的内容可以被 import
使用,我尝试了下面的代码:
import requests as req
header = {'Content-Type': 'application/json', 'kbn-xsrf': 'true'}
request_json_index_pattern = '''
{
"type": "index-pattern"
}
'''
index_patterns = req.post(kibana_host+':5601/api/saved_objects/_export',
data=request_json_index_pattern,
headers = header,
auth = (elastic_user, elastic_password))
res = req.post(kibana_host+':5602/api/saved_objects/_import',
data=index_patterns.content,
headers = header,
auth = (elastic_user, elastic_password))
print(res.content)
但我得到的只是
{'statusCode': 415, 'error': 'Unsupported Media Type', 'message': 'Unsupported Media Type'}
尽管 index_patterns.content
是格式良好的 ndjson,但我可以使用 ndjson.loads
解析它。
我错过了什么?
(顺便说一句,我的源 Kibana 实例是 7.3.1,而目标实例是 7.4.0。这可能是问题所在吗?)
最佳答案
我自己也遇到过这个。 _import
API 需要换行符分隔的 json (ndjson),而不是 json。
https://www.elastic.co/guide/en/kibana/current/saved-objects-api-import.html#_examples_3
我发现的一个稍微有点棘手的解决方法是使用仪表板导入 api:/api/kibana/dashboards/import
。它似乎导入所有保存的对象类型(不仅仅是仪表板)。
关于python - 通过 save_objects api 导出导入 Kibana [7.4] 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58824243/