Hello!
ECE does support user plugins. Although there is no UI for that, you can use API (see API Reference - Create Elasticsearch Cluster and ElasticsearchConfiguration 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:
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':
{
"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
{
"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:
{
"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"
}
]
}
}
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