# Adding non-elastic plugins to Elasticsearch & Kibana

**URL:** <https://discuss.elastic.co/t/adding-non-elastic-plugins-to-elasticsearch-kibana/99142>\
**Category:** Elastic Cloud Enterprise (ECE)\
**Created:** [September 1, 2017, 2:30pm UTC](https://discuss.elastic.co/t/adding-non-elastic-plugins-to-elasticsearch-kibana/99142 "2017-09-01T14:30:46Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Wes\_F](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/wes_f/32/25424_2.png) [@Wes\_F](https://discuss.elastic.co/u/Wes_F)\
**Post date:** [September 1, 2017, 2:30pm UTC](https://discuss.elastic.co/t/adding-non-elastic-plugins-to-elasticsearch-kibana/99142/1 "2017-09-01T14:30:46Z")

</div>

I was trying to figure out the best way to add a plugin that is not in the list of pre-loaded plugins. And I saw that in Elastic Cloud you can upload plugins but not in Elastic Cloud Enterprise.

Is there a way to add plugins that I am just not seeing: [https://www.elastic.co/guide/en/elasticsearch/plugins/5.5/api.html](https://www.elastic.co/guide/en/elasticsearch/plugins/5.5/api.html)  
For example, we are looking for the SQL and the Taste plugins for Elasticsearch.

---

<div class="post-metadata">

**Author:** ![Yuri](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/yuri/32/52458_2.png) [@Yuri](https://discuss.elastic.co/u/Yuri)\
**Post date:** [September 1, 2017, 4:38pm UTC](https://discuss.elastic.co/t/adding-non-elastic-plugins-to-elasticsearch-kibana/99142/2 "2017-09-01T16:38:42Z")

</div>

Hello!  
ECE does support user plugins. Although there is no UI for that, you can use API (see [API Reference - Create Elasticsearch Cluster](https://www.elastic.co/guide/en/cloud-enterprise/current/create-es-cluster.html) and [ElasticsearchConfiguration](https://www.elastic.co/guide/en/cloud-enterprise/current/ElasticsearchConfiguration.html) that is part of the payload for the "create cluster" API endpoint).

For example, to add SQL plugin to an existing cluster (v 5.4.1) you need to

- get cluster Id. Go to cluster "Overview" page. Url (`/region/ece-region/cluster/{{es_cluster_id}}`) will contain cluster Id.
- get the current plan. API request:

```auto
curl -u root:{root_password} -X GET http://{{coordinator_host}}/api/v1/clusters/elasticsearch/{{es_cluster_id}}/plan

```

The request should return a JSON object that we call 'plan':

```auto
{
  "zone_count": 1,
  "cluster_topology": [{
    "memory_per_node": 1024,
    "node_count_per_zone": 1,
    "node_configuration": "default"
  }],
  "elasticsearch": {
    "version": "5.4.1"
  }
}

```

- Modify the plan. Add an array field `elasticsearch.user_plugins` with a JSON object as element

```auto
{
    "name" : "sql-plugin",
    "url": "https://github.com/NLPchina/elasticsearch-sql/releases/download/5.4.1.0/elasticsearch-sql-5.4.1.0.zip",
    "elasticsearch_version": "5.4.1"
}

```

So the plan above should look like:

```auto
{
    "zone_count": 1,
    "cluster_topology": [
        {
            "memory_per_node": 1024,
            "node_count_per_zone": 1,
            "node_configuration": "default"
        }
    ],
    "elasticsearch": {
        "version": "5.4.1",
        "user_plugins": [
            {
                "name": "sql-plugin",
                "url": "https://github.com/NLPchina/elasticsearch-sql/releases/download/5.4.1.0/elasticsearch-sql-5.4.1.0.zip",
                "elasticsearch_version": "5.4.1"
            }
        ]
    }
}

```

- Submit the plan.

```auto
curl -u root:{root_password} -X POST http://{{coordinator_host}}/api/v1/clusters/elasticsearch/{{es_cluster_id}}/plan \
  -H 'content-type: application/json' \
  -d ' {
    "zone_count": 1,
    "cluster_topology": [
        {
            "memory_per_node": 1024,
            "node_count_per_zone": 1,
            "node_configuration": "default"
        }
    ],
    "elasticsearch": {
        "version": "5.4.1",
        "user_plugins": [
            {
                "name": "sql-plugin",
                "url": "https://github.com/NLPchina/elasticsearch-sql/releases/download/5.4.1.0/elasticsearch-sql-5.4.1.0.zip",
                "elasticsearch_version": "5.4.1"
            }
        ]
    }
}'

```

The server should return cluster's ID in the response. It means that the plan was accepted. You can see progress on the cluster "Overview" page.

To create a cluster with the plugin you need to submit the same plan to `/api/v1/clusters/elasticsearch`

---

<div class="post-metadata">

**Author:** ![Yuri](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/yuri/32/52458_2.png) [@Yuri](https://discuss.elastic.co/u/Yuri)\
**Post date:** [September 1, 2017, 4:45pm UTC](https://discuss.elastic.co/t/adding-non-elastic-plugins-to-elasticsearch-kibana/99142/3 "2017-09-01T16:45:46Z")

</div>

Actually, there is much simpler way to do the same via UI. Go to "Manage" tab on the cluster details page and click on "advanced cluster configuration" link. You will see field "Plan" that contains pretty big JSON object because it shows all default values. Find `user_plugins` and modify plan the same way as above and then just click "Save" button.

---

<div class="post-metadata">

**Author:** ![Wes\_F](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/wes_f/32/25424_2.png) [@Wes\_F](https://discuss.elastic.co/u/Wes_F)\
**Post date:** [September 1, 2017, 6:52pm UTC](https://discuss.elastic.co/t/adding-non-elastic-plugins-to-elasticsearch-kibana/99142/4 "2017-09-01T18:52:01Z")

</div>

Thank you, That worked magically!

---

<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:** [September 15, 2017, 6:52pm UTC](https://discuss.elastic.co/t/adding-non-elastic-plugins-to-elasticsearch-kibana/99142/5 "2017-09-15T18:52:02Z")

</div>

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