42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
|
from elasticsearch import Elasticsearch
|
||
|
import argparse
|
||
|
import os
|
||
|
import json
|
||
|
|
||
|
|
||
|
def dump_objects(es, output_directory, doc_type):
|
||
|
res = es.search(
|
||
|
index='.kibana',
|
||
|
doc_type=doc_type,
|
||
|
size=1000)
|
||
|
|
||
|
dir = os.path.join(output_directory, doc_type)
|
||
|
if not os.path.exists(dir):
|
||
|
os.makedirs(dir)
|
||
|
|
||
|
for doc in res['hits']['hits']:
|
||
|
filepath = os.path.join(dir, doc['_id'] + '.json')
|
||
|
with open(filepath, 'w') as f:
|
||
|
json.dump(doc['_source'], f, indent=2)
|
||
|
print("Written {}".format(filepath))
|
||
|
|
||
|
|
||
|
def main():
|
||
|
parser = argparse.ArgumentParser(
|
||
|
description="Dumps Kibana dashboards, vizualization and " +
|
||
|
"searches in json files")
|
||
|
parser.add_argument("--url", help="Elasticsearch URL. E.g. " +
|
||
|
"http://localhost:9200.", required=True)
|
||
|
parser.add_argument("--dir", help="Output directory", default="saved")
|
||
|
|
||
|
args = parser.parse_args()
|
||
|
|
||
|
es = Elasticsearch(args.url)
|
||
|
dump_objects(es, args.dir, "dashboard")
|
||
|
dump_objects(es, args.dir, "visualization")
|
||
|
dump_objects(es, args.dir, "search")
|
||
|
dump_objects(es, args.dir, "index-pattern")
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
main()
|