Elasticsearch adalah mesin pencari sumber terbuka dan gratis, berdasarkan Apache Lucene dan dilengkapi dengan kemampuan Teks Lengkap dan dukungan untuk arsitektur terdistribusi. Ini adalah solusi lama di bidang analisis data waktu nyata.
Dalam tutorial ini Anda akan menemukan semua langkah yang diperlukan untuk membuat dan mengonfigurasi server Elasticsearch di Linux Ubuntu 18.04.
Pertama, sambungkan ke server Anda melalui koneksi SSH. Jika Anda belum melakukannya, ikuti panduan kami disarankan untuk terhubung secara aman dengan SSH. Untuk server lokal, lanjutkan ke langkah berikutnya dan buka terminal server Anda.
Instalasi Java
Sebelum melanjutkan instalasi Elasticsearch, instal Java Development Kit. Untuk melakukannya, ikuti panduan kami tentang cara menginstal Java di Ubuntu 18.04. Jika JDK sudah terinstal di sistem Anda, lewati langkah ini.
Instalasi Elasticsearch
Paket instalasi dapat diunduh langsung dari situs web Elastic:
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.2-amd64.deb
Setelah selesai mengunduh, lanjutkan dengan menginstal paket:
$ sudo dpkg -i elasticsearch-7.3.2-amd64.deb
Kemudian, lanjutkan dengan menginstal dan memulai layanan melalui:
$ sudo systemctl enable elasticsearch.service
$ sudo systemctl start elasticsearch.service
Konfigurasi firewall
Dalam kasus firewall pada sistem, mungkin perlu untuk mengizinkan lalu lintas ke layanan Elasticsearch, dengan mengaktifkan port yang sesuai.
Saat menggunakan firewall UFW, ketik perintah ini untuk membuka kunci port Elasticsearch default:
$ sudo ufw allow 9200
Pada titik ini, firewall akan mengizinkan koneksi pada port 9200.
Memeriksa status layanan
Verifikasi apakah layanan sedang berjalan dan periksa port TCP yang sedang mendengarkan, dengan menjalankan:
$ netstat -a -o -n | grep LISTEN
Kemudian, port listening 9200 dan 9300 seperti yang akan terlihat, sebagai berikut:
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN off (0.00/0/0)
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN off (0.00/0/0)
tcp6 0 0 127.0.0.1:9200 :::* LISTEN off (0.00/0/0)
tcp6 0 0 ::1:9200 :::* LISTEN off (0.00/0/0)
tcp6 0 0 127.0.0.1:9300 :::* LISTEN off (0.00/0/0)
tcp6 0 0 ::1:9300 :::* LISTEN off (0.00/0/0)
Menggunakan Elasticsearch
Sekarang setelah layanan berjalan, gunakan pengujian dengan memasukkan data dan memeriksa apakah nanti ditemukan.
N.B. Jika Anda menggunakan server jarak jauh, ganti localhost dengan alamat IP server Anda dengan perintah di bawah ini.
Dalam contoh ini, masukkan 3 produk komersial:
$ curl -POST 'http://localhost:9200/products/1' -curl -H 'Content-Type: application/json' -d '
{
"name": "Coffe Machine 1",
"uuid": "00000010"
}'
Dengan melakukan panggilan di atas, dokumen baru akan dimasukkan ke dalam indeks "produk" dengan atribut "nama" yang sesuai dengan "Mesin Kopi 1" dan dengan pengenal "uuid":
{"_index":"index","_type":"products","_id":"cUqGY20Bm2mQybZCoeKU","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}
Elasticsearch akan merespon seperti yang ditunjukkan di atas, dengan menentukan id produk yang dimasukkan dan data pelaporan lainnya.
Kemudian dilanjutkan dengan memasukkan 2 produk lainnya:
$ curl -POST 'http://localhost:9200/index/products' -curl -H 'Content-Type: application/json' -d '
{
"name": "White Desk",
"uuid": "WD000010"
}'
$ curl -POST 'http://localhost:9200/index/products' -curl -H 'Content-Type: application/json' -d '
{
"name": "Black Desk",
"uuid": "WD000011"
}'
Setelah selesai, Anda dapat melanjutkan dengan melakukan pencarian pertama yang menunjukkan "Meja" sebagai parameter pencarian :
$ curl -X GET "http://localhost:9200/index/_search?q=Desk*&pretty"
Seperti yang Anda lihat, diperoleh 2 hasil, termasuk dua meja yang disisipkan di atas:
{
...
"hits" : [
{
….
"_source" : {
"name" : "White Desk",
"uuid" : "WD000010"
}
},
{
...
"_score" : 1.0,
"_source" : {
"name" : "Black Desk",
"uuid" : "WD000011"
}
}
]
}
}
Konfigurasi Elastisearch
Semua file konfigurasi Elasticsearch ada di direktori /etc/elasticsearch. File yang paling penting adalah elasticsearch.yml yang memungkinkan untuk mengubah parameter operasi dasar sistem, seperti informasi cluster, parameter koneksi TCP / IP atau folder tempat menyimpan data.
Semua file konfigurasi yang ada menggunakan format YAML, jadi saat mengedit file ini, perhatikan indentasinya.
Meningkatkan keamanan
Salah satu hal pertama yang harus dilakukan untuk meningkatkan keamanan layanan adalah membatasi koneksi masuk, hanya menerima koneksi lokal. Dengan cara ini, hanya aplikasi Anda di server yang dapat menggunakan layanan ini.
Untuk mengubah kartu pendengar, ubah file /etc/elasticsearch/elasticsearch.yml dengan menghapus komentar dan mengubah baris berikut:
…
network.host: 127.0.0.1
...
Simpan file dan mulai ulang layanan untuk menerapkan perubahan:
$ sudo systemctl restart elasticsearch.service
Tunggu beberapa menit dan periksa apakah layanan hanya mendengarkan pada antarmuka lokal dengan meluncurkan:
$ netstat -a -o -n | grep LISTEN
Agar layanan tetap tersedia juga untuk penggunaan eksternal, selalu mungkin mengubah port mendengarkan untuk menyembunyikan keberadaan Elasticsearch.
Edit file konfigurasi utama /etc/elasticsearch/elasticsearch.yml:
…
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 0.0.0.0
#
# Set a custom port for HTTP:
#
http.port: 2900
...
NB Alih-alih 2900 pintu, pintu lain dapat dimasukkan.
Setelah menyimpan file, restart layanan:
$ sudo systemctl restart elasticsearch.service
Untuk memeriksa status layanan, setelah menerapkan perubahan, selalu gunakan netstat:
$ netstat -a -o -n | grep LISTEN