Elasticsearch is available on Github but is not available in the default apt repository for Ubuntu or Debian. However, Elastic, the company behind Elasticsearch, hosts a public repository that you can add to your system to install Elasticsearch via apt.
It is developed using Java; thus, you'll need to install Java Runtime Environment before installing Elasticsearch. Both Java Runtime Environment and Elasticsearch can be installed from the terminal using apt.
$ wget --quiet --output-document=- https://artifacts.elastic.co/GPG-KEY-elasticsearch | gpg --dearmor | sudo tee /usr/share/keyrings/elasticsearch-archive-keyring.gpg [sudo] password for user:
$ echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list deb https://artifacts.elastic.co/packages/7.x/apt stable main [sudo] password for user: deb https://artifacts.elastic.co/packages/7.x/apt stable main
$ sudo apt update Hit:1 https://artifacts.elastic.co/packages/7.x/apt stable InRelease Hit:2 http://archive.ubuntu.com/ubuntu hirsute InRelease Get:3 http://security.ubuntu.com/ubuntu hirsute-security InRelease [101 kB] Get:4 http://archive.ubuntu.com/ubuntu hirsute-updates InRelease [109 kB] Hit:5 http://archive.ubuntu.com/ubuntu hirsute-backports InRelease Fetched 209 kB in 1s (157 kB/s) Reading package lists... Done Building dependency tree... Done Reading state information... Done All packages are up to date.
$ sudo apt install --assume-yes default-jre Reading package lists... Done Building dependency tree... Done Reading state information... Done The following additional packages will be installed: ca-certificates-java default-jre-headless fonts-dejavu-extra java-common libatk-wrapper-java libatk-wrapper-java-jni openjdk-11-jre openjdk-11-jre-headless Suggested packages: fonts-ipafont-gothic fonts-ipafont-mincho fonts-wqy-microhei | fonts-wqy-zenhei The following NEW packages will be installed: ca-certificates-java default-jre default-jre-headless fonts-dejavu-extra java-common libatk-wrapper-java libatk-wrapper-java-jni openjdk-11-jre openjdk-11-jre-headless 0 upgraded, 9 newly installed, 0 to remove and 0 not upgraded. Need to get 39.6 MB of archives. After this operation, 179 MB of additional disk space will be used. ##### snipped
$ sudo apt install --assume-yes elasticsearch Reading package lists... Done Building dependency tree... Done Reading state information... Done The following NEW packages will be installed: elasticsearch 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 326 MB of archives. ##### snipped
$ sudo ufw allow 9200 Rules updated Rules updated (v6) $ sudo ufw allow 9300 Rules updated Rules updated (v6)
$ sudo vi /etc/elasticsearch/elasticsearch.yml
Listen to host's IP address to enable connection from remote host or use 0.0.0.0 to listen on all available IP addresses in your system.
network.host: 0.0.0.0
$ sudo systemctl enable elasticsearch Synchronizing state of elasticsearch.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable elasticsearch Created symlink /etc/systemd/system/multi-user.target.wants/elasticsearch.service → /lib/systemd/system/elasticsearch.service.
$ sudo systemctl start elasticsearch
$ curl 127.0.0.1:9200 { "name" : "host", "cluster_name" : "elasticsearch", "cluster_uuid" : "NqCDFByvRKWPcjO1z09hmg", "version" : { "number" : "7.12.1", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "3186837139b9c6b6d23c3200870651f10d3343b7", "build_date" : "2021-04-20T20:56:39.040728659Z", "build_snapshot" : false, "lucene_version" : "8.8.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
You will get the following error if you immediately test the service after starting it up because Elasticsearch takes a while to start.
curl 127.0.0.1:9200 curl: (7) Failed to connect to 127.0.0.1 port 9200: Connection refused
Comment anonymously. Login not required.