Exporting and Importing Kibana Dashboards with Saved Objects
Learn how to export a Kibana dashboard using Saved Objects, import it into another cluster, verify the result, and roll back if needed.
10 Aug 2026, 11:07 UTC

Desired Outcome
Move a Kibana dashboard from one cluster to another while preserving its visualizations, filters, and underlying index patterns.
Prerequisites
- Kibana version 7.10 or later on both source and target clusters.
- A role that includes the
saved_objects_allpermission (e.g., Kibana admin) on both clusters. - Network access from your workstation to the Kibana endpoints of both clusters.
- Sufficient disk space to hold the exported .ndjson file.
Export Procedure
- Log in to the source Kibana instance.
- Open the side navigation, choose Management → Saved Objects.
- Set the Object type filter to Dashboard.
- Locate the dashboard you want to move, select its checkbox.
- Click the Export button. Kibana downloads an
.ndjsonfile containing the dashboard and any referenced visualizations, searches, and index patterns. - Save the file to a known location, for example
/tmp/my-dashboard.ndjson.
Import Procedure
- Log in to the target Kibana instance.
- Navigate to Management → Saved Objects.
- Click the Import button.
- Drag‑and‑drop or browse to the
.ndjsonfile exported earlier. - Accept the default options: Create new objects and Do not overwrite existing objects.
- Confirm the import. Kibana shows an import summary with counts of created, skipped, and failed objects.
Verification Steps
- Open the Dashboard list and verify that the imported dashboard appears with the same title.
- Open the dashboard and check each visualization loads data without error messages.
- Confirm that any required index patterns are present under Management → Index Patterns.
- Optional: run a GET request via Kibana Dev Tools to list the dashboard:
The response should contain exactly one object with the expectedGET /api/saved_objects/_find?type=dashboard&search=YOUR_DASHBOARD_TITLEidandattributes.title. - Inspect the browser console (F12) for JavaScript errors or failed requests while the dashboard loads.
- Review the Kibana server log for lines containing
saved_objects_importorerroraround the import timestamp.
Recovery Options
- Missing index patterns: If the import summary warns about missing index patterns, recreate them in the target cluster (Management → Index Patterns) or re‑export the dashboard with the Include dependencies toggle enabled.
- Naming conflicts: When importing with the overwrite option disabled, Kibana skips objects that already exist. To keep the source version, either delete the conflicting object first or enable Overwrite existing objects during import.
- Import failure: If the import fails entirely, check the Kibana logs for the exact error. Common causes are version incompatibility or insufficient permissions. Address the root cause, then retry the import.
- Rollback: Because the import creates new saved objects, you can remove them via the API:
ReplaceDELETE /api/saved_objects/with the ID shown in the import summary. Alternatively, use the UI: Management → Saved Objects, select the imported objects, and click Delete.
Limitations and Practical Checks
- Large dashboards with many visualizations can produce .ndjson files exceeding tens of megabytes; ensure adequate disk space and consider compressing the file (e.g.,
gzip my-dashboard.ndjson) for transfer. - Features introduced in newer Kibana versions (e.g., Lens visualizations in 8.0+) may not be recognized by older clusters, leading to import errors. Verify that source and target versions are compatible or upgrade the target cluster.
- After import, a practical check is to compare the object counts: run the Dev Tools request above on both clusters and confirm the counts match.
Example CLI Alternative
If you prefer to script the move, you can use the Saved Objects API directly:
- Export from source (requires admin token):
curl -s -k -H "Authorization: ApiKey $SOURCE_API_KEY" \ "$SOURCE_KIBANA_URL/api/saved_objects/_export?type=dashboard" \ -o /tmp/dashboard.ndjson - Import to target:
curl -s -k -H "Authorization: ApiKey $TARGET_API_KEY" \ -H "Content-Type: application/json" \ -X POST "$TARGET_KIBANA_URL/api/saved_objects/_import" \ --data-binary @/tmp/dashboard.ndjson
Replace $SOURCE_API_KEY, $SOURCE_KIBANA_URL, $TARGET_API_KEY, and $TARGET_KIBANA_URL with appropriate values. The commands assume you have curl installed and network access to the Kibana endpoints. Verify the import by checking the HTTP response status (200 indicates success) and reviewing the returned JSON for successCount and failureCount.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.