The Elastiknn plugin gets published as a zip file in a Github release. The lastest release can be found here.

To install it, copy the zip file URL and run elasticsearch-plugin install <THE URL> on each of your Elasticsearch nodes.


Plugin Release Plugin Release Status
Plugin Snapshot Plugin Snapshot Status

A caveat on versioning: Elasticsearch requires that the plugin’s Elasticsearch version matches the version on the node. For now I’m only releasing the plugin for a single Elasticsearch version. I’d like to eventually come back and implement releases for multiple versions.

Example Installation in a Docker Image

Make a Dockerfile like below. The image version (elasticsearch:A.B.C) must match the plugin’s version (e.g. A.B.C.x/elastiknn-A.B.C.x). A.B.C is the Elasticsearch version. .x just refers to an incremental version of Elastiknn on top of A.B.C.

RUN elasticsearch-plugin install --batch

Build and run the Dockerfile. If you have any issues please refer to the official docs.

$ docker build -t elastiknn-example .
$ sudo sysctl -w vm.max_map_count=262144 # Have to do this on Ubuntu host; not sure about others.
$ docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e "" elastiknn-example

In another terminal, use curl to check the health status and make sure the plugin is installed.

$ curl localhost:9200/_cat/health
1586481957 01:25:57 docker-cluster green 1 1 0 0 0 0 0 0 - 100.0%
$ curl localhost:9200/_cat/plugins
ccba91520728 elastiknn <version>