Memahami Elasticsearch

Elasticsearch adalah database yang digunakan untuk mesin pencarian (search engine). Elasticsearch biasa digunakan untuk menyimpan, mencari, dan menganalisis data dalam jumlah besar dengan cepat dan real time. Mesin pencarian ini memiliki arsitektur berbasis RESTful.

Sejarah Elasticsearch
Sejarah Elasticsearch dimulai dari project bernama Apache Lucine. Apache Lucine adalah search engine library untuk bahasa pemrograman Java. Karena berbentuk library, Apache Lucene hanya dapat digunakan pada program yang dikembangkan dengan bahasa pemrograman Java.

Apache Lucine tergolong kompleks untuk digunakan. Oleh karena itu, dibuat Compass Project, yaitu library Object Relational Mapping. Compass dikembangkan diatas Apache Lucene. Namun Compass Project hanya dapat digunakan untuk bahasa pemrograman Java.

Founder Compass Project kemudian menghentikan pengembangan project tersebut dan mengembangkan Elasticsearch. Elasticsearch tidak dikembangkan sebagai library tetapi sebagai database sehingga dapat digunakan oleh semua bahasa pemrograman.

Mengapa Elasticsearch?

Kekurangan RDBMS
  1. RDBMS memiliki performa yang tergolong lambat untuk melakukan pencarian data di database. Query yang menggunakan regex tidak dapat melakukan indexing.
    • select * from products where name = “playstation 4” (masih bisa diindex)
    • select * from products where name = “%playstation%” (tidak bisa diindex)
    • select * from products where name = “%playstation%” (memiliki banyak kemungkinan kombinasi kata)
  2. Saat melakukan grouping dengan berulang kali saat melakukan aggregate data. Misal melakukan kategori berdasarkan merk, harga, dan jumlah ketersediaan pada suatu e-commerce.
  3. Saat membutuhkan data kompleks seperti autocomplete, Ngram, sinonim, dan lain – lain.

Elasticsearch
Elasticsearch dapat menangani kekurangan RDBMS tersebut. Oleh karena itu, aplikasi dapat terhubung ke database RDBMS dan Elasticsearch. Aplikasi dapat digunakan untuk melakukan pencarian ke Elasticsearch dan menyimpan ke RDBMS.

Kenapa tidak Elasticsearch saja?
Kita tidak bisa mengubah struktur tabel di Elasticsearch, sehingga semua data harus diinput ulang. Sehingga masih digunakan RDBMS sebagai database utama.

Pencarian Dokumen Menggunakan Elasticsearch

Pencarian Dokumen
Pencarian dokumen pada elasticsearch dapat dilakukan dengan cara melakukan GET request pada cluster menggunakan document id yang sesuai.

Memahami Elasticsearch
Memahami Elasticsearch

Analisis Hasil Query Elasticsearch

Analisa menggunakan agregasi
Terdapat 5 bagian utama dalam melakukan agregasi pada elasticsearch yaitu sebagai berikut :
  1. aggs : keyword ini menunjukkan bahwa dalam query yang dilakukan menggunakan agregasi
  2. name_of_aggregation : nama aggregasi yang didefinisikan oleh user
  3. type_of_aggregation : tipe aggregasi yang digunakan
  4. field : keyword field yang diinginkan
  5. document_field_name : nama kolom yang dicari dalam dokumen
Memahami Elasticsearch

Analisa menggunakan agregasi

Memahami Elasticsearch

Database Firebase

Mengenal Firebase Database
Firebase menawarkan 2 solusi database berbasis cloud yang dapat diakses klien dimana keduanya mendukung realtime data syncing :
  1. Firebase Firestore
  2. Firebase Realtime Database

Mengenal Firebase Database : Firebase Realtime Database

Merupakan database yang efisien, low-latency untuk pengembangan aplikasi yang membutuhkan sinkronisasi secara menyeluruh secara realtime.

Merupakan database Firebase yang memang difokuskan untuk pengembangan sebuah aplikasi. Firestore sendiri merupakan successor dari Firebase Realtime database yang memiliki bentuk model data yang lebih intuitif, query yang lebih cepat, dan scaling yang lebih tinggi daripada Firebase Realtime Database.

Kapan harus menggunakan Firebase Firestore / Firebase Realtime Database

Memahami Elasticsearch

Firebase Console
Merupakan Graphical User Interface yang dapat digunakan untuk berinteraksi dengan Firebase Database. Dapat digunakan untuk:
  1. Migrasi data
  2. Management data.
  3. Eksplorasi data.
Memahami Elasticsearch

Persiapan
  1. Masuk ke Firebase Console.
    • Masuk ke link https://console.firebase.google.com/ untuk masuk ke firebase console.
    • Login menggunakan akun Gmaill.
  2. Membuat project baru.
    •  Klik Add Project untuk menambah project baru.
    • Masukkan nama project, pengaturan Google Analytics, dan akun untuk konfigurasi Google Analytics. Kemudian klik Create Project.
  3. Membuat database.
    • Pada menu di navigation, klik Database kemudian klik Create Database pada bagian Cloud Firestore.
    • Pop up Create Database akan muncul, pilih Start in test mode kemudian klik Next.
    • Pilih Cloud Firestore Location kemudian klik Done.
  4. Menghubungkan database dengan project.
    • Pada menu di navigation, klik ikon Setting di samping Project Overview, dan pilih Project Setting.
    • Pada bagian Your Apps, pilih website.
    • Daftarkan aplikasi dengan memasukkan nama, kemudian klik Register.
    • Pada bagian Add Firebase Config, salin semua kemudian simpan di dalam direktori project dengan nama firebase.json.
    • Klik Continue to Console.

Membuat collections dan menambahkan data
Klik Add Collections kemudian masukkan nama collections simple_bank dan isikan datanya.

Memahami Elasticsearch

Memanage data
Di dashboard Firebase, kita dapat menambahkan, mengubah, dan menghapus collections maupun data.

Memahami Elasticsearch

Sumber Referensi : baeldung | logz.io | firebase.google.com