Analytics Engines: Elasticsearch 5.4 on Ubuntu 16.04

elasticsearch analytics engine logo

Elasticsearch – A Distributed Analytics Engine

Elasticsearch is an open-source, highly scalable, full-text search and analytics engine. It is part of a full stack called Elastic Stack. It allows you to store and analyze data, even in big volumes, with near real time performances. This powerful analytics engine supports RESTful operations, so it is possible to use all the HTTP methods in combination with HTTP URIs for data management. Another advantage is the option to use different programming languages with Elasticsearch, such as Python or JavaScript.

An online web store is a great example of a project that could benefit from Elasticsearch. It is possible to use Elasticsearch to store the entire product catalog and inventory, providing ‘search’ and ‘autocomplete suggestions’ functionalities.

Elastisearch’s great scalability also permits it to run on a laptop or on a cluster of servers with petabytes of data.


In this tutorial we will see how to install Elasticsearch on a server running Ubuntu 16.04.


  • One server running Ubuntu 16.04.
  • Oracle JDK 8 installed on the server.

Install Elastisearch

Elasticsearch is provided in different formats:










. In this guide we will utilize the



Import Elasticsearch Key

Download and install the Elasticsearch public signing key by executing the following command:

$ wget -qO - | sudo apt-key add -

Install Elasticsearch from the Repository

Before proceeding with the installation process, we’ll need to install the



$ sudo apt-get install apt-transport-https

Next, we’ll save the repository definition with the following command:

$ echo "deb stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list

Install Elasticsearch with



$ sudo apt-get update && sudo apt-get install elasticsearch

Enable Elasticsearch for starting at boot time:

$ sudo systemctl enable elasticsearch

Configure Elasticsearch

Elasticsearch configuration files are store in the


directory. In particular, the main configuration files are:

  • elasticsearch.yml

    for configuring the server side part of this powerful analytics engine.


    for configuring logging.

Configuration files use the YAML format.

Elasticsearch requires very little configuration, however there are a number of settings which should be configured before launching into use.

Open the


configuration file with a text editor:

$ sudo vim /etc/elasticsearch/elasticsearch.yml

Here, search for


# ---------------------------------- Cluster -----------------------------------
# Use a descriptive name for your cluster:
# my-application

Uncomment the bolded line and change


with a cluster name, for example: MyCluster

Note: a node can join a cluster when it shares its with all the other nodes of the cluster. Be sure that

describes the cluster’s purpose.

Next, change the

variable. As above, uncomment the line and change its value:

# ------------------------------------ Node ------------------------------------
# Use a descriptive name for the node:
# node-1

These are the minimum settings required for running Elasticsearch. Of course, there are more details to work out in order to deploy this system on a cluster of servers.

Save and close the file, then start Elasticsearch:

$ sudo systemctl start elasticsearch

Testing Elasticsearch

We can test Elasticsearch by executing the following command:

$ curl -X GET 'http://localhost:9200'

It should display something like this:

 "name" : "node-1",
 "cluster_name" : "MyCluster",
 "cluster_uuid" : "WqXLC-cUT5-bSVyisNRIgQ",
 "version" : {
 "number" : "5.4.1",
 "build_hash" : "2cfe0df",
 "build_date" : "2017-05-29T16:05:51.443Z",
 "build_snapshot" : false,
 "lucene_version" : "6.5.1"
 "tagline" : "You Know, for Search"

This means that Elasticsearch is running correctly.


This concludes the basic Elasticsearch configuration. Look how easy it can be to install this analytics engine on an Ubuntu 16.04 server!