For this guide, we will setup a virtual Ubuntu Server environment in order to best simulate the conditions of working with ElasticSearch in the real world, which would be primarily a cloud or containerized environment.
We will utilize the terminal and I'll walk you through the steps and clarify as we go along!
Things you will need:
This part is fairly straightforward and visual in nature, and if not, there are plenty of Youtube videos and guides on how to create and setup your own VirtualBox VM. Regardless, I'll try to give you the core steps here so you don't have to navigate elsewhere as you follow through!
First, make sure you've downloaded all the above components, and installed VirtualBox. I'll be doing this on a Mac system, but the process should be fairly similar on any other OS.
- Click on
Newand follow the instructions within the prompts, and feel free to customize the name and installation directory as necessary
- From the drop-down, make sure to select Ubuntu (64 bit)
- Allocate memory size close to half of your total current system
- Create a virtual hard disk (VDI) and configure at least 20 GB of space
Once that's done, you will see the VM show up in the main screen, and you can simply select the VM, and click the green
Start button to kick things off.
Immediately after, you will be asked to
Select a start-up disk. This is where you want to click the folder icon and navigate to where your Ubuntu Server
.iso file is and confirm the prompt.
This process is akin to sticking an installation disk/bootable USB to install any OS, so you'll have a nice guided prompt which will look something like this:
I won't cover this in depth since this is also fairly straightforward, but will highlight specific things you will/won't need:
- you won't need a proxy config (unless you're on your work machine which is behind a proxy)
- Use the default mirror for ubuntu
- Use the entire disk for the Filesystem setup and confirm the "destructive action" prompt (it's a VM so we're at no risk of messing up any of our local data)
- Setup your profile with your name, server name etc.
- When the prompt asks for SSH setup, make sure to check [x] Install Open SSH server
- You won't need any featured server snaps since we're installing stuff manually
And that should be all for this step. Once the process is complete it'll ask for a reboot which will then bring you to your VM with Ubuntu Server starting up.
First, we import the ElasticSearch GPG key since they sign all their packages with the following signing key (PGP key D88E42B4, available from https://pgp.mit.edu).
To do so, use
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Next, we need to run
sudo apt-get install apt-transport-https
in order to grab the apt-transport-https package for downloading content via the HTTP Secure protocol (HTTPS).
We then echo the repository definition which is piped and saved to
/etc/apt/sources.list.d/elastic-7.x.list using a
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
And finally, we update and grab the elasticsearch package
sudo apt-get update && sudo apt-get install elasticsearch
Once the installation is complete, we can quickly configure it by using vi
sudo vi /etc/elasticsearch/elasticsearch.yml
This will open up the config file where we will change/uncomment the following params (make sure you're in insert mode in vi):
node.nameand optionally edit the name
network.hostand edit it to point to
discovery.seed_hostsand edit it to
cluster.initial_master_nodesand edit it to match the same name as your
node.name, e.g. if my
node.namewas the default
node-1, then this field should have value
Esc to get out of insert mode and type
:wq to save our changes and exit vi.
We can set up a worker daemon to start up elasticsearch when our VM starts up using:
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
and finally starting the process using:
sudo /bin/systemctl start elasticsearch.service
Give it a minute or so to start up, and then we can send in the following cURL request to verify and see if our elasticsearch instance is up and running:
curl -XGET 127.0.0.1:9200
If all went well, you should see the following response with the default tagline "You Know, for Search".
Now you have a proper working installation of Elasticsearch 7 configured on a VM!
In order to interface with the instance outside of the VM, we need to setup port-forwarding, which we can do by going into our VMs Settings>Networking>Advanced>Port Forwarding
then add new rules where you configure the host and guest ports as follows
Now, as long as your VM is running, you can SSH into it from your host machine using PuTTY (if you're on Windows) or
ssh firstname.lastname@example.org -p 2222 like below
and then enter your password to login, and continue interfacing with your Elastic cluster from your host machine!