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.
Goals
In this tutorial we will see how to install Elasticsearch on a server running Ubuntu 16.04.
Prerequisites
- 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
package.
Import Elasticsearch Key
Download and install the Elasticsearch public signing key by executing the following command:
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Install Elasticsearch from the Repository
Before proceeding with the installation process, we’ll need to install the
package:
$ sudo apt-get install apt-transport-https
Next, we’ll save the repository definition with the following command:
$ echo "deb https://artifacts.elastic.co/packages/5.x/apt 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.
-
log4j2.properties
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
variables.
# ---------------------------------- Cluster ----------------------------------- # # Use a descriptive name for your cluster: # #cluster.name: my-application #
Uncomment the bolded line and change
with a cluster name, for example:
cluster.name: MyCluster
Note: a node can join a cluster when it shares its cluster.name 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.name: 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.
Conclusion
This concludes the basic Elasticsearch configuration. Look how easy it can be to install this analytics engine on an Ubuntu 16.04 server!