Elasticsearch adalah mesin analitik dan penelusuran teks lengkap sumber terbuka yang sangat skalabel . Ini umumnya mesin/teknologi yang mendasari yang menggerakkan aplikasi dengan fitur dan persyaratan pencarian yang kompleks. Perangkat lunak ini mendukung operasi RESTful yang memungkinkan Anda untuk menyimpan, mencari, dan menganalisis volume data yang signifikan dengan cepat dan mendekati waktu nyata. Elasticsearch sangat disukai dan populer di kalangan sysadmin dan pengembang karena merupakan mesin pencari yang hebat berdasarkan perpustakaan Lucene.
Dalam tutorial berikut, Anda akan mempelajari cara menginstal Elastic Search di AlmaLinux 8 .
Prasyarat
- OS yang Disarankan: AlmaLinux 8.
- Akun pengguna: Akun pengguna dengan hak istimewa sudo atau akses root (perintah su) .
Memperbarui Sistem Operasi
Perbarui AlmaLinux . Anda sistem operasi untuk memastikan semua paket yang ada mutakhir:
sudo dnf upgrade --refresh -y
Tutorial akan menggunakan perintah sudo dan dengan asumsi Anda memiliki status sudo .
Untuk memverifikasi status sudo di akun Anda:
sudo whoami
Contoh keluaran yang menunjukkan status sudo:
[joshua@localhost ~]$ sudo whoami
root
Untuk mengatur akun sudo yang ada atau baru, kunjungi tutorial kami di Cara Menambahkan Pengguna ke Sudoers di AlmaLinux .
Untuk menggunakan akun root , gunakan perintah berikut dengan kata sandi root untuk masuk.
su
Instal Paket CURL
CURL perintah diperlukan untuk beberapa bagian dari panduan ini. Untuk menginstal paket ini, ketik perintah berikut:
sudo dnf install curl -y
Instal Paket Java
Agar berhasil menginstal dan, yang lebih penting, gunakan Elasticsearch , Anda perlu menginstal Java . Prosesnya relatif mudah.
Ketik perintah berikut untuk menginstal OpenJDK paket:
sudo dnf install java-11-openjdk-devel
Contoh dependensi yang akan dipasang:
Ketik “Y”, lalu tekan tombol “ENTER KEY” untuk melanjutkan penginstalan.
Konfirmasi Java telah berhasil diinstal dengan perintah berikut:
java -version
Contoh keluaran:
openjdk version "11.0.12" 2021-07-20 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.12+7-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.12+7-LTS, mixed mode, sharing)
Instal Elasticsearch
Elasticsearch tidak tersedia di aliran Aplikasi AlmaLinux 8 standar , jadi Anda perlu menginstalnya dari repositori RPM Elasticsearch .
Sebelum menambahkan repositori, impor kunci GPG dengan perintah berikut:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Langkah selanjutnya adalah membuat file repo Elasticsearch sebagai berikut:
sudo nano /etc/yum.repos.d/elasticsearch.repo
Setelah di dalam file, tambahkan baris berikut:
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
Untuk menyimpan (CTRL+O), lalu keluar dari (CTRL+X) .
Sekarang Instal Elasticsearch menggunakan perintah berikut:
sudo dnf install elasticsearch
Contoh keluaran:
Ketik “Y” , lalu tekan “ENTER KEY” untuk melanjutkan instalasi
Secara default, layanan Elasticsearch dinonaktifkan saat boot dan tidak aktif. Untuk memulai layanan dan mengaktifkannya pada boot sistem, ketikkan (systemctl) berikut ini perintah:
sudo systemctl enable elasticsearch.service --now
Contoh keluaran:
Executing: /usr/lib/systemd/systemd-sysv-install enable elasticsearch
Created symlink /etc/systemd/system/multi-user.target.wants/elasticsearch.service → /usr/lib/systemd/system/elasticsearch.service.
Verifikasi bahwa Elasticsearch berjalan dengan benar dengan menggunakan perintah curl untuk mengirim permintaan HTTP ke port 9200 di localhost sebagai berikut:
curl -X GET "localhost:9200/"
Contoh keluaran:
Untuk melihat pesan sistem yang dicatat oleh Elasticsearch di sistem Anda, ketik perintah berikut:
sudo journalctl -u elasticsearch
Contoh log keluaran:
-- Logs begin at Sat 2021-08-21 01:54:10 EDT, end at Sat 2021-08-21 02:11:00 EDT. --
Aug 21 02:09:17 localhost.localdomain systemd[1]: Starting Elasticsearch...
Aug 21 02:09:43 localhost.localdomain systemd[1]: Started Elasticsearch.
Cara Mengonfigurasi Elasticsearch
Data Elasticsearch disimpan di lokasi direktori default (/var/lib/elasticsearch) . Untuk melihat atau mengedit file konfigurasi, Anda dapat menemukannya di lokasi direktori (/etc/elasticsearch) , dan opsi start-up java dapat dikonfigurasi di (/etc/default/elasticsearch) file konfigurasi.
Pengaturan default terutama baik untuk server operasi tunggal karena Elasticsearch berjalan di localhost hanya. Namun, jika Anda akan menyiapkan cluster, Anda perlu memodifikasi file konfigurasi untuk mengizinkan koneksi jarak jauh.
Menyiapkan Akses Jarak Jauh (Opsional)
Secara default, Elasticsearch hanya mendengarkan localhost. Untuk mengubahnya, buka file konfigurasi sebagai berikut:
sudo nano /etc/elasticsearch/elasticsearch.yml
Gulir ke bawah ke baris 56 dan temukan bagian Jaringan dan batalkan komentar (#) baris berikut dan ganti dengan alamat IP Pribadi Internal atau alamat IP Eksternal sebagai berikut:
Dalam contoh, kami menghapus komentar (#) (network.host) dan mengubahnya menjadi alamat IP Pribadi Internal seperti di atas.
Untuk tujuan keamanan, ini sangat ideal untuk menentukan alamat; namun, jika Anda memiliki beberapa alamat IP Internal atau Eksternal yang mengenai server, ubah antarmuka jaringan untuk mendengarkan semua dengan memasukkan (0.0.0.0) sebagai berikut:
Simpan file konfigurasi (CTRL+O), lalu keluar dari (CLTR+X) .
Anda harus memulai ulang layanan Elasticsearch dengan perintah berikut agar perubahan diterapkan:
sudo systemctl restart elasticsearch
Cara Menggunakan Elasticsearch
Untuk menggunakan Elasticsearch menggunakan perintah curl adalah proses langsung. Berikut adalah beberapa yang paling umum digunakan:
Hapus indeks
Di bawah indeks bernama sampel .
curl -X DELETE 'http://localhost:9200/samples'
Mencantumkan semua indeks
curl -X GET 'http://localhost:9200/_cat/indices?v'
Mencantumkan semua dokumen dalam indeks
curl -X GET 'http://localhost:9200/sample/_search'
Kueri menggunakan parameter URL
Di sini kami menggunakan format kueri Lucene untuk menulis q=school:Harvard.
curl -X GET http://localhost:9200/samples/_search?q=school:Harvard
Kueri dengan JSON alias Elasticsearch Query DSL
Anda dapat melakukan kueri menggunakan parameter pada URL. Tetapi Anda juga dapat menggunakan JSON, seperti yang ditunjukkan pada contoh berikut. JSON akan lebih mudah dibaca dan di-debug ketika Anda memiliki kueri yang kompleks daripada satu string besar parameter URL.
curl -XGET --header 'Content-Type: application/json' http://localhost:9200/samples/_search -d '{
"query" : {
"match" : { "school": "Harvard" }
}
}'
Pemetaan indeks daftar
Semua bidang Elasticsearch adalah indeks. Jadi ini mencantumkan semua bidang dan jenisnya dalam indeks.
curl -X GET http://localhost:9200/samples
Tambahkan Data
curl -XPUT --header 'Content-Type: application/json' http://localhost:9200/samples/_doc/1 -d '{
"school" : "Harvard"
}'
Perbarui Dokumen
Berikut adalah cara menambahkan bidang ke dokumen yang ada. Pertama, kita buat yang baru. Kemudian kami memperbaruinya.
curl -XPUT --header 'Content-Type: application/json' http://localhost:9200/samples/_doc/2 -d '
{
"school": "Clemson"
}'
curl -XPOST --header 'Content-Type: application/json' http://localhost:9200/samples/_doc/2/_update -d '{
"doc" : {
"students": 50000}
}'
Indeks cadangan
curl -XPOST --header 'Content-Type: application/json' http://localhost:9200/_reindex -d '{
"source": {
"index": "samples"
},
"dest": {
"index": "samples_backup"
}
}'
Muat data secara massal dalam format JSON
export pwd="elastic:"
curl --user $pwd -H 'Content-Type: application/x-ndjson' -XPOST 'https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/0/_bulk?pretty' --data-binary @<file>
Tampilkan kesehatan cluster
curl --user $pwd -H 'Content-Type: application/json' -XGET https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/_cluster/health?pretty
Agregasi dan Agregasi Bucket
Untuk server web Nginx, ini menghasilkan jumlah klik web berdasarkan kota pengguna:
curl -XGET --user $pwd --header 'Content-Type: application/json' https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/logstash/_search?pretty -d '{
"aggs": {
"cityName": {
"terms": {
"field": "geoip.city_name.keyword",
"size": 50
}
}
}
}
'
Ini memperluasnya ke jumlah kode respons produk kota di log server web Nginx
curl -XGET --user $pwd --header 'Content-Type: application/json' https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/logstash/_search?pretty -d '{
"aggs": {
"city": {
"terms": {
"field": "geoip.city_name.keyword"
},
"aggs": {
"responses": {
"terms": {
"field": "response"
}
}
}
},
"responses": {
"terms": {
"field": "response"
}
}
}
}'
Menggunakan ElasticSearch dengan Otentikasi Dasar
Jika Anda telah mengaktifkan keamanan dengan ElasticSearch, maka Anda perlu memberikan pengguna dan kata sandi seperti yang ditunjukkan di bawah ini untuk setiap perintah curl:
curl -X GET 'http://localhost:9200/_cat/indices?v' -u elastic:(password)
Cetak Cantik
Tambahkan ?pretty=true ke penelusuran apa pun untuk mencetak JSON dengan cantik. Seperti ini:
curl -X GET 'http://localhost:9200/(index)/_search'?pretty=true
Untuk menanyakan dan mengembalikan hanya bidang tertentu
Untuk mengembalikan hanya bidang tertentu, masukkan ke dalam larik _source:
GET filebeat-7.6.2-2020.05.05-000001/_search
{
"_source": ["suricata.eve.timestamp","source.geo.region_name","event.created"],
"query": {
"match" : { "source.geo.country_iso_code": "GR" }
}
}
Untuk Kueri berdasarkan Tanggal
Saat bidang bertipe tanggal, Anda dapat menggunakan matematika tanggal, seperti ini:
GET filebeat-7.6.2-2020.05.05-000001/_search
{
"query": {
"range" : {
"event.created": {
"gte" : "now-7d/d"
}
}
}
}
Cara Menghapus (Mencopot) Elasticsearch
Jika Anda tidak lagi memerlukan Elasticsearch, Anda dapat menghapus perangkat lunak dengan perintah berikut:
sudo dnf autoremove elasticsearch
Contoh keluaran:
Ketik “Y” , lalu tekan “ENTER KEY” untuk melanjutkan penghapusan Elasticsearch.