# Using elasticsearch-py client to import dashboards

**URL:** <https://discuss.elastic.co/t/using-elasticsearch-py-client-to-import-dashboards/117477>\
**Category:** Elasticsearch\
**Created:** [January 29, 2018, 2:33pm UTC](https://discuss.elastic.co/t/using-elasticsearch-py-client-to-import-dashboards/117477 "2018-01-29T14:33:52Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![mksavic](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/mksavic/32/32920_2.png) [@mksavic](https://discuss.elastic.co/u/mksavic)\
**Post date:** [January 29, 2018, 2:33pm UTC](https://discuss.elastic.co/t/using-elasticsearch-py-client-to-import-dashboards/117477/1 "2018-01-29T14:33:52Z")

</div>

Hello,

I am trying to import a dashboard via the elasticsearch api with elastic search-py.

I have a sample dashboard from [https://demo.elastic.co/](https://demo.elastic.co/) (the http one). I have exported it and it looks like this:

```
[
  {
    "_id": "HTTP",
    "_type": "dashboard",
    "_source": {
      "title": "HTTP",
      "hits": 0,
      "description": "",
      "panelsJSON": "[{\"col\":3,\"id\":\"Web-transactions\",\"row\":1,\"size_x\":10,\"size_y\":3,\"type\":\"visualization\"},{\"col\":1,\"id\":\"HTTP-error-codes\",\"row\":7,\"size_x\":6,\"size_y\":3,\"type\":\"visualization\"},{\"col\":7,\"id\":\"HTTP-error-codes-evolution\",\"row\":7,\"size_x\":6,\"size_y\":3,\"type\":\"visualization\"},{\"col\":1,\"id\":\"Navigation\",\"row\":1,\"size_x\":2,\"size_y\":3,\"type\":\"visualization\"},{\"col\":1,\"id\":\"Total-number-of-HTTP-transactions\",\"row\":4,\"size_x\":3,\"size_y\":3,\"type\":\"visualization\"},{\"col\":4,\"id\":\"HTTP-codes-for-the-top-queries\",\"row\":4,\"size_x\":9,\"size_y\":3,\"type\":\"visualization\"},{\"id\":\"Top-10-HTTP-requests\",\"type\":\"visualization\",\"size_x\":12,\"size_y\":5,\"col\":1,\"row\":10}]",
      "optionsJSON": "{\"darkTheme\":false}",
      "uiStateJSON": "{}",
      "version": 1,
      "timeRestore": false,
      "kibanaSavedObjectMeta": {
        "searchSourceJSON": "{\"filter\":[{\"query\":{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"*\"}}}]}"
      }
    }
  }
]

```

I believe I should be using the create() member function in elastic-py. This was my function call that I was attempting.

```
with open('http.json') as data_file:
    data = json.load(data_file)
es.create(index='.kibana', id='http_dashboard', body=data)

```

however, I am getting http transport errors that were telling me that i could not have "hits" or "version", etc. how exactly can i import this dashboard via elasticsearch-py?

thanks in advance

---

<div class="post-metadata">

**Author:** ![mksavic](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/mksavic/32/32920_2.png) [@mksavic](https://discuss.elastic.co/u/mksavic)\
**Post date:** [January 29, 2018, 2:51pm UTC](https://discuss.elastic.co/t/using-elasticsearch-py-client-to-import-dashboards/117477/2 "2018-01-29T14:51:21Z")

</div>

ok so i have managed to successfully call create by modifying http.json as:

```
  {
    "type": "dashboard",
    "dashboard": {
      "title": "HTTP",
      "hits": 0,
      "description": "",
      "panelsJSON": "[{\"col\":3,\"id\":\"Web-transactions\",\"row\":1,\"size_x\":10,\"size_y\":3,\"type\":\"visualization\"},{\"col\":1,\"id\":\"HTTP-error-codes\",\"row\":7,\"size_x\":6,\"size_y\":3,\"type\":\"visualization\"},{\"col\":7,\"id\":\"HTTP-error-codes-evolution\",\"row\":7,\"size_x\":6,\"size_y\":3,\"type\":\"visualization\"},{\"col\":1,\"id\":\"Navigation\",\"row\":1,\"size_x\":2,\"size_y\":3,\"type\":\"visualization\"},{\"col\":1,\"id\":\"Total-number-of-HTTP-transactions\",\"row\":4,\"size_x\":3,\"size_y\":3,\"type\":\"visualization\"},{\"col\":4,\"id\":\"HTTP-codes-for-the-top-queries\",\"row\":4,\"size_x\":9,\"size_y\":3,\"type\":\"visualization\"},{\"id\":\"Top-10-HTTP-requests\",\"type\":\"visualization\",\"size_x\":12,\"size_y\":5,\"col\":1,\"row\":10}]",
      "optionsJSON": "{\"darkTheme\":false}",
      "uiStateJSON": "{}",
      "version": 1,
      "timeRestore": false,
      "kibanaSavedObjectMeta": {
        "searchSourceJSON": "{\"filter\":[{\"query\":{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"*\"}}}]}"
      }
    }
  }

```

i see that the dashboard populates within the kibana gui, but when i click on it, i get an error that says "Could not locate that dashboard (id:http\_dashboard)"

any ideas? is it because i did not import the visualizations that came along with this dashboard?

thank you

---

<div class="post-metadata">

**Author:** ![jpcarey](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/jpcarey/32/46668_2.png) [@jpcarey](https://discuss.elastic.co/u/jpcarey)\
**Post date:** [January 30, 2018, 2:57pm UTC](https://discuss.elastic.co/t/using-elasticsearch-py-client-to-import-dashboards/117477/3 "2018-01-30T14:57:57Z")

</div>

Directly posting to elasticsearch could be problematic (version, format, etc). Kibana has an API for import / export. I would recommend using this instead.

> [@Kibana import/export dashboard api](https://discuss.elastic.co/t/kibana-import-export-dashboard-api/108180):
>
> Is there any documentation on how to use the new import/export dashboard api for kibana?

---

<div class="post-metadata">

**Author:** ![mksavic](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/mksavic/32/32920_2.png) [@mksavic](https://discuss.elastic.co/u/mksavic)\
**Post date:** [January 30, 2018, 3:54pm UTC](https://discuss.elastic.co/t/using-elasticsearch-py-client-to-import-dashboards/117477/4 "2018-01-30T15:54:06Z")

</div>

Thank you, this is helpful for getting all the required visualizations from a dashboard.

For demo purposes, i'm still using the http dashboard from [https://demo.elastic.co/app/kibana](https://demo.elastic.co/app/kibana).

I used the export api you mentioned: [https://demo.elastic.co/api/kibana/dashboards/export?dashboard=HTTP](https://demo.elastic.co/api/kibana/dashboards/export?dashboard=HTTP)

Although, it looks like this json still isn't compatible with the elasticsearch-py create() method. I'm getting the following error:

 ![33%20AM](https://us1.discourse-cdn.com/elastic/original/3X/b/2/b268033630f03399f704d5ccc8dfffceacbf5738.png)

is there any way to inject multiple json objects with elasticsearch-py? otherwise i will still need to do some parsing by hand.

---

<div class="post-metadata">

**Author:** ![jpcarey](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/jpcarey/32/46668_2.png) [@jpcarey](https://discuss.elastic.co/u/jpcarey)\
**Post date:** [January 30, 2018, 4:22pm UTC](https://discuss.elastic.co/t/using-elasticsearch-py-client-to-import-dashboards/117477/5 "2018-01-30T16:22:05Z")

</div>

You would need to use a lower level library to do a direct request  
(`requests` or `urllib3`) to kibana. The elasticsearch-py lib is for  
interacting with elasticsearch, not kibana (although, not unreasonable for  
you to make an enhancement request in that repo for interacting with kibana  
as well).

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [February 27, 2018, 4:22pm UTC](https://discuss.elastic.co/t/using-elasticsearch-py-client-to-import-dashboards/117477/6 "2018-02-27T16:22:12Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
