# Plugin versions

**URL:** <https://discuss.elastic.co/t/plugin-versions/273787>\
**Category:** Elasticsearch\
**Created:** [May 24, 2021, 6:59am UTC](https://discuss.elastic.co/t/plugin-versions/273787 "2021-05-24T06:59:04Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![nmalocic](https://avatars.discourse-cdn.com/v4/letter/n/e9a140/32.png) [@nmalocic](https://discuss.elastic.co/u/nmalocic)\
**Post date:** [May 24, 2021, 6:59am UTC](https://discuss.elastic.co/t/plugin-versions/273787/1 "2021-05-24T06:59:05Z")

</div>

Hi everyone,

What is the best way of versioning plugins.  
If we plan to have multiple versions of our plugin, and support multiple versions of ElasticSearch how would we do that?

Is there anyway that we say that our plugin should support multiple versions in gradle os something else?

Thanks,  
Nemanja

---

<div class="post-metadata">

**Author:** ![spinscale](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/spinscale/32/25011_2.png) [@spinscale](https://discuss.elastic.co/u/spinscale)\
**Post date:** [May 25, 2021, 10:28am UTC](https://discuss.elastic.co/t/plugin-versions/273787/2 "2021-05-25T10:28:30Z")

</div>

Hey,

as you need to specify the version in your plugin descriptors file, you need to have a custom build for each Elasticsearch you want to support at the moment. See [Help for plugin authors | Elasticsearch Plugins and Integrations [7.12] | Elastic](https://www.elastic.co/guide/en/elasticsearch/plugins/7.12/plugin-authors.html)

For my plugins I use a non semantic versioning scheme that includes the elasticsearch version and a patch version for my plugin like `7.12.0.1`, see [GitHub - spinscale/elasticsearch-ingest-langdetect: Ingest processor doing language detection for fields](https://github.com/spinscale/elasticsearch-ingest-langdetect)

hope that helps!

---

<div class="post-metadata">

**Author:** ![nmalocic](https://avatars.discourse-cdn.com/v4/letter/n/e9a140/32.png) [@nmalocic](https://discuss.elastic.co/u/nmalocic)\
**Post date:** [May 25, 2021, 10:43am UTC](https://discuss.elastic.co/t/plugin-versions/273787/3 "2021-05-25T10:43:03Z")

</div>

Hi @spinscale ,

I was looking at your repo as example.  
I am not sure how complex version system there will be for "plugin" itself so I was wondering what was the best way to support something like that.

If we need to have `1.0.0` of the plugin for multiple ES versions and then do steady releases lik: `1.1.0` and `1.2.0` for the plugin again across multiple versions of ES.

I'll take a look at the custom build and try to resolve it.

Thanks a lot!

---

<div class="post-metadata">

**Author:** ![spinscale](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/spinscale/32/25011_2.png) [@spinscale](https://discuss.elastic.co/u/spinscale)\
**Post date:** [May 25, 2021, 10:47am UTC](https://discuss.elastic.co/t/plugin-versions/273787/4 "2021-05-25T10:47:38Z")

</div>

My approach was from the Elasticsearch perspective. You basically need two release branches (6.8 and 7.13) as those are the only active ES versions. But indeed, as you mentioned, things get messy when you move your plugin forward for older versions as well, basically creating a m\*n compatibility matrix...

In the far future there might be ways to simplify this with a stable API, but for now, you will have to have releases across all the versions you want to support (probably makes sense to support the latest minor version for each ES release, like 7.x).

---

<div class="post-metadata">

**Author:** ![nmalocic](https://avatars.discourse-cdn.com/v4/letter/n/e9a140/32.png) [@nmalocic](https://discuss.elastic.co/u/nmalocic)\
**Post date:** [May 26, 2021, 7:18am UTC](https://discuss.elastic.co/t/plugin-versions/273787/5 "2021-05-26T07:18:56Z")

</div>

This plugin is not yet released but and my guess is that "users" will dictate what they expect, and what versions of ES they are using, and we need to support.

Until then we can just support latest version of ES.

Thanks for your help.

---

<div class="post-metadata">

**Author:** ![spinscale](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/spinscale/32/25011_2.png) [@spinscale](https://discuss.elastic.co/u/spinscale)\
**Post date:** [May 26, 2021, 9:55am UTC](https://discuss.elastic.co/t/plugin-versions/273787/6 "2021-05-26T09:55:11Z")

</div>

Hey,

out of curiosity: care to share the plugin you are working on? 🙂

--Alex

---

<div class="post-metadata">

**Author:** ![nmalocic](https://avatars.discourse-cdn.com/v4/letter/n/e9a140/32.png) [@nmalocic](https://discuss.elastic.co/u/nmalocic)\
**Post date:** [May 26, 2021, 10:12am UTC](https://discuss.elastic.co/t/plugin-versions/273787/7 "2021-05-26T10:12:01Z")

</div>

I would love to, but currently it's on private repo, but plan is to release it as open source when we think it is ready.

Plugin is connection between NLAPI and ElasticSearch.  
Idea is (and we know it's bad one) that when users hit pipeline, we will call APi, or process document locally and get bunch of NLP information to add to the original document.

Nemanja

---

<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:** [June 23, 2021, 10:12am UTC](https://discuss.elastic.co/t/plugin-versions/273787/8 "2021-06-23T10:12:38Z")

</div>

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