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 openSUSE Leap 15 .
Prasyarat
- OS yang Disarankan: openSUSE Leap – 15.x
- Akun pengguna: Akun pengguna dengan sudo atau akses root.
Perbarui Sistem Operasi
Perbarui openSUSE . Anda sistem operasi untuk memastikan semua paket yang ada mutakhir:
sudo zypper refresh
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@opensuse ~]$ sudo whoami
root
Untuk menyiapkan akun sudo yang ada atau baru, kunjungi tutorial kami tentang menambahkan Pengguna ke Sudoers di openSUSE .
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 zyper install curl
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 zypper install java-11-openjdk-devel
Instal Elasticsearch
Elasticsearch tidak tersedia di repositori openSUSE standar , jadi Anda perlu menginstalnya dari repositori 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 zypper ar https://artifacts.elastic.co/packages/7.x/yum elasticsearch
Sekarang Instal Elasticsearch menggunakan perintah berikut:
sudo zypper install elasticsearch
Contoh keluaran:
Ketik “Y”, lalu tekan “ENTER KEY” untuk melanjutkan instalasi
Untuk mengaktifkan Elasticsearch agar diaktifkan secara default, Anda perlu menginstal paket insserv .
sudo zypper install insserv
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:
Synchronizing state of elasticsearch.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable elasticsearch
Verifikasi bahwa Elasticsearch berjalan dengan benar dengan menggunakan perintah curl untuk mengirim permintaan HTTP ke port 9200 di localhost sebagai berikut:
sudo curl http://localhost:9200?pretty
Contoh keluaran:
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
Konfigurasi Firewalld untuk Elasticsearch
Secara default, tidak ada aturan yang disiapkan untuk Elasticsearch, yang dapat menyebabkan masalah.
Pertama, tambahkan zona khusus baru untuk kebijakan firewall Elasticsearch:
sudo firewall-cmd --permanent --new-zone=elasticsearch
Selanjutnya, tentukan alamat IP yang diizinkan yang diizinkan untuk mengakses Memcached.
sudo firewall-cmd --permanent --zone=elasticsearch --add-source=1.2.3.4
Ganti 1.2.3.4 dengan IP alamat yang akan ditambahkan ke daftar yang diizinkan.
Setelah Anda selesai menambahkan alamat IP, buka port Memcached.
Misalnya, Port TCP 11211 .
sudo firewall-cmd --permanent --zone=elasticsearch --add-port=9200/tcp
Catatan, Anda dapat mengubah port default di file konfigurasi jika Anda mengubah aturan buka port firewall di atas ke nilai baru.
Setelah menjalankan perintah tersebut, muat ulang firewall untuk menerapkan aturan baru:
sudo firewall-cmd --reload
Contoh keluaran jika berhasil:
success
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 zypper remove elasticsearch
Contoh keluaran:
Ketik “Y”, lalu tekan “ENTER KEY” untuk melanjutkan penghapusan Elasticsearch.