Sebelum menjalankan Elasticsearch pertama kali, ada fondasi yang perlu disiapkan: skill dasar database, JSON, HTTP/REST, dan CLI, hingga pemilihan software tools (JDK, Elasticsearch, Kibana) serta hardware minimum yang memadai.

Selamat datang di series Belajar Elasticsearch! Series ini akan membawa kalian dari nol hingga mampu membangun dan mengelola cluster Elasticsearch production-grade: mulai dari prasyarat dan setup environment, sejarah, arsitektur, indexing, mapping, query DSL, aggregation, security, scaling, hingga production deployment. Total 31 episode yang saling membangun satu sama lain.
Elasticsearch adalah distributed, RESTful search dan analytics engine berbasis Apache Lucene. Ia memecahkan masalah yang tidak bisa dijawab database relasional biasa: full-text search yang relevan, real-time analytics, dan scaling horizontal untuk data dalam skala besar. Jika kalian pernah memakai Google, fitur "related posts" di blog, atau filter harga di e-commerce, kalian sudah merasakan hasil kerja mesin seperti ini.
Episode 0 ini adalah peta jalan dan pengecekan kesiapan. Sebelum mengetik perintah pertama, kita pastikan tiga hal: (1) skill dasar yang wajib kalian kuasai, (2) software dan tools yang harus dipasang, dan (3) hardware minimum yang dibutuhkan. Jangan lompat-lompat — environment yang berantakan akan membuat episode-episode berikutnya terasa berat. Mari mulai.
Kalian wajib memahami konsep database relasional: tabel, baris, kolom, primary key, dan query SQL. Elasticsearch tidak menggunakan tabel, tapi memahami model relasional membantu kalian memahami perbedaannya — dokumen JSON tidak punya skema kaku, field bisa muncul atau hilang per dokumen. Bayangkan Elasticsearch sebagai "database tanpa tabel": setiap record adalah dokumen JSON yang berdiri sendiri.
Elasticsearch berbicara dalam JSON — request dan response semuanya JSON. Kalian harus nyaman membaca, menulis, dan memvalidasi struktur JSON: objek dengan kurung kurawal, array dengan kurung siku, string dengan tanda kutip ganda, dan tidak ada trailing comma. Kebanyakan error awal di Elasticsearch adalah JSON yang tidak valid.
Elasticsearch adalah REST API murni. Setiap operasi dipetakan ke metode HTTP: GET untuk membaca, PUT untuk membuat, POST untuk mengirim data/aksi, DELETE untuk menghapus. Kalian harus paham status code HTTP: 200 OK, 201 Created, 404 Not Found, 409 Conflict. Semua interaksi nanti dilakukan lewat HTTP.
Kalian akan sering mengetik curl untuk menguji API, menjalankan service, dan membaca log. Kuasai dasar-dasar terminal: navigasi, menjalankan proses di background, mengeset environment variable, dan membaca output program. curl adalah "browser dari terminal" — senjata utama kita di seluruh series ini.
Pahami perbedaan antara exact match (mencari kata persis) dan full-text search (mencari berdasarkan makna dan relevansi). Konsep inverted index akan dibahas detail di episode 2, tapi gambaran besarnya: Elasticsearch menyimpan peta dari setiap kata ke daftar dokumen yang mengandung kata itu, sehingga pencarian jadi sangat cepat.
Kalian perlu paham konsep port, localhost, dan IP address. Elasticsearch default mendengarkan di port 9200 (HTTP) dan 9300 (transport antar-node). Saat nanti kita membahas cluster, kalian akan mengatur node discovery lewat jaringan — pemahaman dasar networking sangat membantu.
Tip
Tidak semua skill harus dikuasai sempurna sekarang. Yang penting kalian pernah menyentuh masing-masing konsep ini, karena series ini akan terus mengulang dan memperdalamnya dengan konteks Elasticsearch. Prioritas tertinggi: JSON dan dasar curl, karena keduanya dipakai di hampir setiap episode.
| Tool | Fungsi | Catatan |
|---|---|---|
| JDK 17+ | Menjalankan Elasticsearch (berbasis Java) | Bundled JDK juga tersedia di distribusi Elasticsearch |
| Elasticsearch 8.x | Mesin search dan analytics itu sendiri | Versi 8.x adalah versi stable saat ini |
| Kibana | UI untuk eksplorasi, Dev Tools, visualisasi | Versi harus sama persis dengan Elasticsearch |
| cURL / Postman | Menguji REST API | cURL sudah ada di hampir semua sistem |
| Docker + Docker Compose | Deployment dan testing multi-node | Opsional, dipakai mulai episode 27 |
| VS Code / IntelliJ | Menulis konfigurasi, script, dan integrasi | Editor apa pun yang nyaman |
Elasticsearch dan Kibana harus menggunakan versi mayor yang sama. Kombinasi Elasticsearch 8.15 dengan Kibana 8.13 tidak direkomendasikan — selalu samakan versi untuk menghindari bug ketidakcocokan.
Important
Sejak versi 8.0, keamanan (security) diaktifkan secara default dengan enkripsi TLS dan password user elastic yang dibuat otomatis saat pertama kali start. Ini perubahan besar dari era 7.x. Jangan khawatir — kita akan membahasnya detail di episode 15 dan 16, dan selama proses instalasi di episode 3 kalian akan melihat password superuser di output terminal.
| Sumber Daya | Minimum | Recommended |
|---|---|---|
| RAM | 4 GB | 8 GB atau lebih |
| Storage | 10 GB free space | 20 GB+ (SSD jauh lebih baik) |
| CPU | Dual-core | Quad-core atau lebih |
| OS | Linux (utama), macOS, Windows | Linux untuk production |
Ingat aturan emas pengaturan JVM Elasticsearch: setengah dari total RAM dialokasikan untuk heap JVM, maksimal 32 GB. Jika kalian punya 8 GB RAM, heap 4 GB adalah titik manis. Alokasi di atas 32 GB justru kontraproduktif karena Lucene mulai membuang-buang memori untuk compressed oops. Episode 14 akan membahas ini lebih dalam.
Mari pastikan semua fondasi sudah terpasang. Buka terminal dan jalankan perintah-perintah berikut:
java -version
curl --version
python3 --versionopenjdk version "17.0.13" 2024-10-15
OpenJDK Runtime Environment (build 17.0.13+11)
OpenJDK 64-Bit Server VM (build 17.0.13+11, mixed mode, sharing)Jika java belum terpasang, install JDK 17 atau lebih baru. Di Ubuntu/Debian: sudo apt install openjdk-17-jdk. Di Rocky/CentOS: sudo dnf install java-17-openjdk.
Untuk memastikan JSON skill kalian, coba operasi REST sederhana ke API publik tanpa instalasi apa pun. Salah satu endpoint publik yang stabil adalah https://api.github.com/users/octocat:
curl -s https://api.github.com/users/octocatJika kalian melihat respons JSON yang rapi, berarti HTTP/REST dan pemahaman JSON kalian siap. Sebagai latihan, coba filter output dengan Python: curl -s https://api.github.com/users/octocat | python3 -m json.tool yang akan "menyisir" JSON agar mudah dibaca — sekaligus memvalidasi bahwa responsnya adalah JSON valid.
Versi Elasticsearch dan Kibana tidak sama. Selalu samakan versi mayor. Cek dengan kibana --version dan bandingkan dengan versi Elasticsearch.
RAM terlalu kecil. Menjalankan Elasticsearch dengan heap yang terlalu kecil memicu error unable to create native thread atau OOM saat indexing. Pastikan minimal 4 GB RAM tersedia untuk mesin uji.
Memakai port yang bentrok. Jika port 9200 sudah dipakai aplikasi lain, Elasticsearch gagal start. Cek dengan ss -tlnp atau netstat -tlnp sebelum start.
Melupakan password superuser. Sejak versi 8.x, password user elastic dicetak sekali saat pertama kali start. Simpan dengan aman, karena tidak bisa dilihat ulang — reset manual butuh langkah tambahan.
Mengira Elasticsearch untuk pemula dalam 5 menit. Ini engine yang kaya fitur; jangan frustrasi jika konsep shard, analyzer, atau mapping terasa banyak. Series ini sudah disusun bertahap — setiap episode hanya satu konsep.
Note
Budaya debugging yang benar: baca pesan error lengkap sebelum bertanya ke internet. Error Elasticsearch hampir selalu eksplisit — sebutkan port yang bentrok, heap yang kurang, atau file yang tidak ditemukan. Cocokkan pesan itu dengan langkah yang baru kalian jalankan, lalu perbaiki satu per satu.
Di episode 0 kalian telah memastikan tiga fondasi: skill dasar (database, JSON, HTTP/REST, CLI, konsep indexing, dan networking), software yang benar (JDK 17+, Elasticsearch 8.x, Kibana versi sama, cURL/Postman, dan Docker opsional), serta hardware yang memadai (minimal 4 GB RAM, 10 GB storage, dual-core CPU — dengan rekomendasi heap setengah dari RAM).
Inti yang harus dibawa pulang:
elastic yang dicetak saat pertama start.curl dan JSON adalah dua skill yang akan menemani kalian di seluruh series ini.Series Belajar Elasticsearch terdiri dari 31 episode yang saling membangun: dari sejarah, konsep dasar, instalasi, mapping, query DSL, aggregation, ILM, data streams, ingest pipeline, hingga security, scaling, monitoring, dan production deployment. Episode 0 ini adalah batu bata pertama. Di episode 1 kita akan mundur sejenak untuk memahami sejarah dan latar belakang: mengapa Elasticsearch lahir, masalah apa yang tidak bisa dijawab database relasional, dan perjalanan dari Apache Lucene hingga menjadi Elastic Stack yang kita kenal sekarang. Sampai jumpa di episode 1!