Elasticsearch adalah mesin analitik dan penelusuran teks lengkap sumber terbuka yang sangat skalabel . Perangkat lunak ini mendukung operasi RESTful yang memungkinkan Anda untuk menyimpan, mencari, dan menganalisis data dalam jumlah besar dengan cepat dan mendekati waktu nyata. Elasticsearch sangat disukai dan populer di antara sysadmin dan pengembang karena merupakan mesin pencari yang hebat berdasarkan perpustakaan Lucene. Biasanya digunakan sebagai mesin/teknologi dasar yang mendukung aplikasi dengan fitur dan persyaratan pencarian yang kompleks.
Dalam tutorial berikut, Anda akan mempelajari cara memasang Elastic Search di Debian 11 Bullseye .
Prasyarat
- OS yang Disarankan: Debian 11 Bullseye
- Akun pengguna: Akun pengguna dengan sudo atau akses root.
- Paket yang Diperlukan: Keriting dan Jawa
Memasang Curl
Keriting diperlukan untuk beberapa bagian dari panduan ini. Untuk menginstal paket ini, ketik perintah berikut:
sudo apt install curl -y
Menginstal Java
Agar berhasil menginstal dan, yang lebih penting, gunakan Elasticsearch , Anda perlu menginstal Java . Prosesnya cukup mudah.
Ketik perintah berikut untuk menginstal OpenJDK paket:
sudo apt install default-jdk
Contoh keluaran dengan paket yang akan diinstal:
Untuk melanjutkan penginstalan, ketik (Y) lalu tekan tombol (ENTER) kunci.
Selanjutnya, verifikasi versi Java yang diinstal dan build dengan perintah berikut:
java -version
Contoh keluaran di bawah ini:
Menginstal Elasticsearch
Elasticsearch tidak tersedia di repositori standar Debian 11, jadi Anda harus menginstalnya dari repositori APT Elasticsearch.
Sebelum menambahkan repositori, impor kunci GPG dengan perintah berikut:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Contoh keluaran dengan (Oke) mengonfirmasi bahwa itu berhasil:
Sekarang setelah Anda menambahkan kunci GPG, repositori Elasticsearch sekarang akan dipercaya. Lanjutkan untuk menginstal repositori resmi dengan perintah terminal berikut:
sudo sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.list'
Pada saat tutorial dibuat, Elasticsearch 7.13.4 adalah versi terbaru tetapi akan berubah seiring waktu, dan repositori yang Anda tambahkan akan berfungsi untuk versi 7.x.x di masa mendatang.
Selanjutnya, perbarui daftar repositori Anda dan instal Elasticsearch sebagai berikut:
sudo apt update && sudo apt install elasticsearch
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
Selanjutnya, untuk memverifikasi bahwa Elasticsearch berjalan dengan benar, Anda akan menggunakan curl perintah untuk mengirim permintaan HTTP ke port 9200 di localhost sebagai berikut:
curl -X GET "localhost:9200/"
Contoh keluaran untuk memverifikasi Elasticsearch bekerja dengan benar:
Untuk melihat pesan sistem yang dicatat oleh Elasticsearch di sistem Anda, ketik perintah berikut:
sudo journalctl -u elasticsearch
Contoh log keluaran:
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 sebagian besar 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
Selanjutnya, gulir ke bawah 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.
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:
Selanjutnya, 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
Konfigurasikan Firewall UFW untuk mengizinkan Koneksi Jarak Jauh
Jika Anda mengizinkan koneksi jarak jauh, Anda harus mengizinkan firewall Anda untuk mengizinkan alamat IP tersebut terhubung. Ini dapat dilakukan dengan perintah berikut:
sudo ufw allow from <IP Address> to any port 9200
Informasi lebih lanjut tentang firewall Debian dan UFW dapat ditemukan untuk mengonfigurasi firewall UFW di Debian.
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 menurut 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"
}
}
}
}
Mencopot pemasangan Elasticsearch
Jika Anda tidak lagi memerlukan Elasticsearch, Anda dapat menghapus perangkat lunak dengan perintah berikut:
sudo apt remove elasticsearch
Hapus repositori apt sebagai berikut:
sudo rm /etc/apt/sources.list.d/elastic-7.x.list
Kemudian perbarui daftar repositori Anda untuk mencerminkan perubahan:
sudo apt update