alexklibisz / elastiknn

Elasticsearch plugin for nearest neighbor search. Store vectors and run similarity search using exact and approximate algorithms.

Home Page:https://alexklibisz.github.io/elastiknn

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Support multiple ES versions

dav009 opened this issue · comments

I am trying to have compatibility for some older ES versions (7.8.0). However I am encountering some issues.
I wonder whats the take in this project in the future regarding keeping support to older ES versions.

Sorry this is not a very specific request, but I wanted to kick off this conversation

Hey @dav009 . Backporting will not be easy because the Elasticsearch internals change from version to version.

Quoting from issue #238

I do not plan to support multiple versions at once. I tried setting this up for several hours and couldn't figure it out. The ES folks also introduce breaking internal changes between Elasticsearch versions, so it's not as simple as just iterating over a list of dependency versions. The only way to do it would be to keep around several branches or several copy/pasted directories of the source code, and both of those are not worth the time IMO. The project is pretty stable now, so I'll stay on top of the official Elasticsearch releases as they come out.

This hasn't changed. The only working solution seems to be basically keeping a duplicate copy of the code for every Elasticsearch version. See https://github.com/sscarduzio/elasticsearch-readonlyrest-plugin for an example. They can do that, because they work full-time on a commercial/paid plugin. Unfortunately, there's no way I can do that as a solo maintainer of this project.

Is it not an option for you to upgrade to the latest version? I know it's difficult if it hasn't been done in some time, but generally I've found it's valuable for teams to build up the working knowledge to keep the systems they operate up-to-date.

So, unfortunately this is a "wontfix". At least in terms of what I can do for the project right now.

I would be happy to review a PR that makes it possible to support multiple versions without keeping parallel copies of the entire project for each version. Maybe there's some very clever way to customize Gradle to do this. I tried for a few evenings last year and came up short.

I'll go ahead and close this. Also noting that it's a duplicate of #120 and #238.