python - 通过 save_objects api 导出导入 Kibana [7.4] 对象

标签 python kibana kibana-7

我正在尝试将索引模式、可视化和仪表板从一个 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/

相关文章:

python - 从覆盖报告中排除抽象属性

python - 用 self 调用类变量

elasticsearch - ES查询以匹配数组中的所有元素

docker - 无法从 Elasticsearch 节点检索版本信息。请求超时

elasticsearch - 如何使用ElasticSearch和Kibana获取DAU/WAU/MAU图表?

elasticsearch - 如何在开发工具查询中使用 “OR”

python - fetchone() 正在将 int 变量设置为元组

python - 向mysql中插入数据

elasticsearch - 服务器上的 Kibana 部署问题。 . .客户端无法访问 GUI

date - ElasticSearch字段类型 “date”插入日期('Y-m-d H:i:s')