Dicari, seekor kucing Persia, berekor pendek, berkalung warna abu-abu, berbulu kuning.

Cari di google aja cuy.., siapa tau ketemu !!

Atau kita cari di Elastic Search saja !!!. Apaa, gile luu ndro.., emang elu tau apa Elastic Search ??

Pendahuluan

Elastic Search adalah salah satu teknologi Search Engine, mirip-mirip lah dengan yang dipunyai Google Search, yang ketika kita mencari sesuatu dari Internet, cukup masukkan katanya di google.com, lalu akan dimunculkan artikel, video, document, dll oleh google.

Tapi tentunya bukan untuk cari kucing seperti diatas yaa…

Elastic Search dan Google Search mirip, tapi tentunya tidak sama. Kita tidak tahu teknologi apa saja di belakang Google search engine sebenarnya.

Sementara Elastic Search adalah teknologi Search Engine yang gratis dan opensource. Bisa kita lihat codenya dan alur logisnya.

Kita bisa menggunakan Elastic Search untuk dijadikan alat mencari data dengan cepat.

Didalamnya ada fungsi pencarian FTS (Full Text Search), Analitical dengan cara aggregasi, Geospasial, dll.

Contohnya :

  • Digunakan untuk mencari produk dari sekian banyak daftar produk yang ada di e-commerce.
  • Digunakan untuk mencari alamat dan lokasi kode pos di Indonesia.
  • Digunakan untuk mencari dokumen legal yang kita submit secara elektronik.
  • Digunakan untuk mencari data geografi dari sebuah lokasi, seperti latitude/longitude, points, polygon, dll.
  • dll.

Pencarian dengan Elastic Search yang menggunakan index akan lebih cepat dan bisa memakai logika fuzzy atau memakai peringkat mengenai hasil pencariannya.

Dengan kata lain ada sisi basic AI nya di dalam sana, sehingga hasil yang ditampilkan bisa memuaskan pengguna.

Hal ini dimungkinkan karena Elastic Search menggunakan prinsip pencarian menggunakan Index.

Mirip-mirip lah seperti kita mencari halaman buku dengan melihat index yang biasanya ada di halaman bagian belakang buku, sebelum sampai ke halaman buku yang berisi kata yang kita cari.


Sejarahnya

Elastic Search bermula dari tahun 2000, (sejarah), ketika Shay Banon, pendiri Elastic Search sedang membuat library search engine sendiri.

Direlease pertama kali tahun 2010 (wikipedia), dengan menggunakan Apache Lucene sebagai library untuk searching nya.

Elastic Search direlease dalam bentuk Open Source (Apache 2), didesain dalam sistem terdistibusi, dan RESTful.

Elastic Search didesain dalam bentuk banyak server yang saling berkumpul membentuk sebuah cluster. Ada namanya master node dan ada namanya data node.

Data Node bertugas untuk menyimpan data, index, cache dan hasil pencarian.

Sementara master Node berfungsi untuk menangani aktifitas di cluster, termasuk didalamnya menyimpan state dari cluster, metadata, dll.

Saat ini, node-node server yang ada di Elastic Search tidak hanya dua itu saja, tapi cukup banyak seperti :

  • master
  • data
  • data_content
  • data_hot
  • data_warm
  • data_cold
  • data_frozen
  • ingest
  • ml
  • remote_cluster_client
  • transform

Tiap tipe node mendefinisikan fungsinya masing-masing, yang bisa kita konfigurasi.

Kalau secara default, maka node-node yang mesti ada itu master Node dan data Node


Elastic Search server


Elastic Search dibuat dengan bahasa Java, dan dijalankan di JVM Java. Aplikasi yang jalan di JVM inilah yang disebut Elastic Search Server, yang hidupnya sepanjang waktu akan melakukan fungsi indexing, analyzing, searching, dan xxx-ing yyy-ing lainnya terkait dengan pencarian.

Mungkin akan terdapat permasalahan yang akan kita temui antara versioning, OS, dan JVM yang ada.

Kompatibilitas antara versi Elastic Search Server, Operating System, dan JVM nya bisa dilihat di sini


Elastic Search client

Kemudian ada juga yang disebut Elastic Search Client, yaitu aplikasi yang menjadi pemakai dari fasilitas search dari Elastic Search ini.

Komunikasi antara Server dan Client ini menggunakan JSON dengan protokol HTTP. Istilah sederhananya, ya pakai browser pun bisa kita cari data yang ada di Elastic Search Server ini.

Contoh Elastic Search client :

  • pakai browser untuk mengecek index apa saja di server Elastic Search : misalnya kita masukkan url di input browser : http://esserver.com/_cat/indices
  • pakai curl di command line untuk search dokumen dan data yang ada di Elastic Search : » curl http://esserver.com/_search xxxx xxxx
  • pakai code Java, menggunakan library HTTP Rest Client seperti biasa layaknya kita call API dengan URL yang sudah ada.
  • pakai code Java, menggunakan library Transport Client yang beroperasi di level lebih bawah dari network layer yaitu TCP.
  • pakai code Java, menggunakan library HighLevelRestClient yang beroperasi di level diatas HTTP Rest Client atau TransportClient.
  • pakai code bahasa pemrograman lain menggunakan library HTTP Rest Client seperti biasa layaknya kita call API dengan URL yang sudah ada.
  • pakai code bahasa pemrograman lain menggunakan library yang disediakan oleh Elastic Search seperti list terlampir.

Pemilihan JSON dan HTTP/TCP sebagai cara komunikasi antara Server dan Client membuat fleksibilitas yang cukup tinggi dari jenis Client yang bisa berkomunikasi dengan Elastic Search Server.

Kita akan lanjut part 2, khususnya mengenai Elastic Search Client untuk bahasa Java.