Elasticsearch is a search and analytics engine, commonly used as a substitute for Solr or for collecting log and metrics data.
Not officially supported!
While we allow users to specify patch versions for this service they are not officially supported so if you use one YMMV.
To use a patch version you can do something like this:
services: my-service: type: elasticsearch:5.6.15
But make sure you use one of the available patch tags for the underlying image we are using.
Elasticsearch requires you set the kernal property
vm.max_map_count to at least
262144 in order to run correctly. Lando will attempt to set this on install if you use any of our official package installers for Windows, macOS, Debian, RPM or Pacman.
However, if you are installing from source or via another pathway you will need to set this manually. Generally this can be accomplished with the following:
sysctl -w vm.max_map_count=262144
But we recommend you check out the following issue for more information: https://github.com/lando/lando/issues/1967
Here are the configuration options, set to the default values, for this service. If you are unsure about where this goes or what this means we highly recommend scanning the services documentation to get a good handle on how the magicks work.
services: my-service: type: elasticsearch:6 portforward: false mem: 1025m plugins:  config: server: SEE BELOW
portforward will allow you to access this service externally by given you a port directly on your host's
localhost. Note that
portforward can be set to either
true or a specific
port but we highly recommend you set it to
true unless you have pretty good knowledge of how port assignment works or you have a very compelling reason for needing a locked down port.
portforward: true will prevent inevitable port collisions and provide greater reliability and stability across Lando apps. That said, one downside of
portforward: true is that Docker will assign a different port every time you restart your application. You can read more about accessing services externally over here.
services: my-service: type: elasticsearch portforward: true
services: my-service: type: elasticsearch portforward: 9200
Using a custom elasticsearch.yml
You may need to override the default config with your own elasticsearch config file. Note that according to the underlying upstream image this will completely replace the default config. Further note that by default our elasticsearch services start as
data nodes. If you want to activate your node to also be an
ingest node then check out this example.
If you do this you must use a file that exists inside your applicaton and express it relative to your project root as below.
A hypothetical project
Note that you can put your configuration files anywhere inside your application directory. We use a
config directory in the below example but you can call it whatever you want such as
./ |-- config |-- elasticsearch.yml |-- .lando.yml
Landofile's elastic config
services: my-service: type: elasticsearch config: server: config/elasticsearch.yml