Elasticsearch is a flexible and powerful open-source, distributed real-time search and analytics engine. Using a simple set of APIs, it provides the ability for full-text search. Elastic search is freely available under the Apache 2 license, which provides the most flexibility.

Advertisement

This tutorial will help you to install Elasticsearch on Ubuntu 18.04 & 16.04 LTS system.

Step 1 – Prerequsities

Login to your Ubuntu system using sudo privileges. For the remote Ubuntu server using ssh to access it. Windows users can use putty or alternatives to log in to Ubuntu system.

Elasticsearch required Java to run on any system. Make sure your system has Java installed by running following command. This command will show you the current Java version.

java -version

java version "11.0.2" 2019-01-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)

Also, make sure your JAVA_HOME environment variable is configured:

echo $JAVA_HOME

/usr/lib/jvm/java-11-oracle

Step 2 – Install Elasticsearch on Ubuntu

The Elasticsearch official team provides an apt repository to install Elasticsearch on Ubuntu Linux system. After install below package and import GPG key for Elasticsearch packages.

sudo apt-get install apt-transport-https
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Then configure the apt repository on your Debian system. The below command will add a repository to install latest Elasticsearch 6.X on your Ubuntu system.

add-apt-repository "deb https://artifacts.elastic.co/packages/7.x/apt stable main"

After adding the repository to your system. Run the following commands to update cache and then install Elasticsearch packages on your system.

sudo apt-get update
sudo apt-get install elasticsearch

Step 3 – Configure Elasticsearch

The Elasticsearch has been installed on your system. You can customize this by editing the Elasticsearch configuration file. Edit configuration file in your favorite text editor and update it:

sudo nano /etc/elasticsearch/elasticsearch.yml

Change the following values:

/etc/elasticsearch/elasticsearch.yml
 network.host: 0.0.0.0
 cluster.name: myCluster1
 node.name: "myNode1"
  • network.host – Set the network host to 0.0.0.0 to listen on all interfaces and make it publically available. You can use your LAN address for LAN access only.
  • cluster.name – Name of the cluster. For the multi-node cluster, all the nodes must use the same cluster name.
  • node.name – Set the unique name of the node to identify in a cluster.

Step 4 – Launch Elasticsearch

To configure Elasticsearch to start automatically when the system boots up, run the following commands:

sudo /bin/systemctl enable elasticsearch.service

Elasticsearch can be started and stopped as follows:

sudo systemctl start elasticsearch.service
sudo systemctl stop elasticsearch.service

Step 5 – Test Setup

The Elasticsearch service is ready to use. You can test it using curl command-line utility. Run the simple GET command using curl to verify the setup. You will see the Elasticsearch cluster details with the version on your screen.

curl -X GET "http://localhost:9200/?pretty"
Console Output
{
  "name" : "myNode1",
  "cluster_name" : "myCluster1",
  "cluster_uuid" : "YLBEZHdqQ2W_gMiDUJXJyw",
  "version" : {
    "number" : "7.3.0",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "de777fa",
    "build_date" : "2019-07-24T18:30:11.767338Z",
    "build_snapshot" : false,
    "lucene_version" : "8.1.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}
Share.

13 Comments

  1. One big oversight that I encountered was the need to bootstrap the ElasticSearch implementation for the first usage as referenced here: https://www.elastic.co/guide/en/elasticsearch/reference/7.x/modules-discovery-bootstrap-cluster.html

    In /etc/elasticsearch/elasticsearch.yml, uncomment, add , or adjust the settings under discovery as follows:

    # ——————————— Discovery ———————————-
    discovery.zen.minimum_master_nodes: 1

    #
    # Pass an initial list of hosts to perform discovery when this node is started:
    # The default list of hosts is [“127.0.0.1”, “[::1]”]
    discovery.seed_hosts: [“0.0.0.0”]
    #
    # Bootstrap the cluster using an initial set of master-eligible nodes:
    cluster.initial_master_nodes: [“myNode1”]

  2. Hi guys, if you have problems with localhost port 9200: Connection refused just use your local ip 127.0.0.0.1:9200 and it should work ! like this :
    curl -X GET “http://127.0.0.1:9200/?pretty”

  3. Cool and even better – it works! 🙂 Just few comments:

    – You may need to run add-apt-repository with sudo (I had)
    – For Curl test, use the real server ip address, and not 192.168.10.100 (Use PostMan app for testing)

Leave A Reply


Exit mobile version