A S T A C O D E

Loading

Implementasi Full-Text Search dengan Elasticsearch di Node.js
Tutorial

Implementasi Full-Text Search dengan Elasticsearch di Node.js

Admin

Author

Aug 26, 2026

Published

33

Views

Implementasi Full-Text Search dengan Elasticsearch di Node.js

Setup Elasticsearch

Jalankan Elasticsearch menggunakan Docker:

docker run -d -p 9200:9200 -e "discovery.type=single-node" elasticsearch:8.11.0

Install Elasticsearch client untuk Node.js:

npm install @elastic/elasticsearch

Setelah berjalan, aplikasi dapat terhubung ke Elasticsearch melalui endpoint localhost:9200.

Membuat Index dan Mapping

Mapping digunakan untuk menentukan tipe data setiap field dalam index.

Beberapa tipe yang umum digunakan:

  • text — full-text search dengan analyzer

  • keyword — exact match dan filtering

  • integer — data angka

  • date — data tanggal

Untuk aplikasi berbahasa Indonesia, gunakan analyzer yang sesuai agar proses pencarian dan relevansi hasil lebih optimal.

Indexing Data

Untuk memasukkan data dalam jumlah besar, gunakan Bulk API daripada melakukan indexing satu per satu.

Jika data Elasticsearch harus tetap sinkron dengan database utama, gunakan pendekatan seperti Change Data Capture (CDC) dengan Debezium atau trigger dari aplikasi ketika terjadi perubahan data.

Query Full-Text Search

Untuk pencarian di beberapa field sekaligus, gunakan multi-match query.

Sementara itu, bool query dapat digunakan untuk menggabungkan beberapa kondisi seperti:

  • must untuk kondisi yang wajib terpenuhi

  • should untuk kondisi yang meningkatkan relevansi

  • must_not untuk mengecualikan data tertentu

Field penting seperti title juga dapat diberikan boost lebih tinggi dibandingkan description agar hasil pencarian lebih relevan.

Fuzzy Search dan Autocomplete

Fuzzy search membantu menemukan hasil meskipun pengguna melakukan typo. Pengaturan fuzziness: "AUTO" dapat digunakan untuk menangani variasi kesalahan penulisan secara otomatis.

Untuk fitur autocomplete, gunakan edge n-gram tokenizer sehingga Elasticsearch dapat mencari berdasarkan prefix kata saat pengguna mulai mengetik.

Highlight dan Pagination

Elasticsearch dapat menampilkan highlight pada bagian teks yang sesuai dengan keyword pencarian sehingga pengguna lebih mudah memahami alasan sebuah hasil muncul.

Untuk dataset besar, gunakan search_after sebagai metode pagination. Pendekatan ini lebih efisien dibandingkan from/offset ketika harus mengambil data dari halaman yang sangat jauh.

Kesimpulan

Elasticsearch cocok untuk membangun fitur pencarian yang cepat dan fleksibel, terutama ketika aplikasi membutuhkan full-text search, fuzzy search, autocomplete, filtering, dan relevansi hasil pada data dalam jumlah besar.

Implementasi Full-Text Search dengan Elasticsearch di Node.js

Looking for a professional partner?

Let's discuss how we can help your business grow with our technology solutions.

Chat with us