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.
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:
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"
{ "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" }
13 Comments
But does it float?
Err:5 http://repo.mysql.com/apt/ubuntu bionic InRelease
The following signatures were invalid: EXPKEYSIG 8C718D3B5072E1F5 MySQL Release Engineering
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”]
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”
i have error says like this : curl: (1) Protocol ““http” not supported or disabled in libcurl
http://192.168.10.100 is local ip address or what please explain help me. thank you
I get
curl: (7) Failed to connect to localhost port 9200: Connection refused
same
For Curl test, use : curl -X GET localhost:9200
Thanks for this tutorial!
I also had to set cluster.initial_master_nodes in elasticsearch.yml to the node name, else elasticsearch did not start up.
See https://discuss.elastic.co/t/problems-with-access-to-elasticsearch-form-outside-machine/172450
Simple and useful.
Thanks
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)