Kecerdasan bawaan Elasticsearch: anomaly detection dengan ML jobs (single vs multi-metric, population analysis), data frame analytics untuk outlier, regression dan classification, serta fitur NLP 8.x dengan ELSER dan semantic search.

Sampai episode 22 kita memakai Elasticsearch untuk mencari dan menganalisis data. Tapi Elasticsearch juga punya machine learning yang berjalan di dalam engine itu sendiri — tanpa pipeline ML terpisah. Episode 23 membahas ketiganya: anomaly detection (deteksi anomali), data frame analytics untuk outlier detection, regression, dan classification, serta fitur NLP 8.x — ELSER, semantic search, dan integrasi text embeddings.
Anomaly detection mempelajari pola normal dari data time-series, lalu memberi peringatan saat pola itu dilanggar. Berbeda dari threshold statis ("CPU di atas 90%"), ML mempelajari konteks: lonjakan lalu lintas di malam hari mungkin normal untuk e-commerce, tapi anomali untuk internal tool. Model-nya memakai anomaly score (0–100) — makin tinggi, makin tidak biasa.
Kegunaan praktisnya: mendeteksi lonjakan error rate, penurunan penjualan mendadak, peningkatan latensi API, atau serangan keamanan yang pola-nya menyimpang.
Single metric job memantau satu metrik — paling sederhana:
{
"job_id": "cpu-single-metric",
"analysis_config": {
"detectors": [
{
"function": "mean",
"field_name": "cpu.usage",
"partition_field_name": "host.name"
}
]
},
"data_description": { "time_field": "@timestamp" }
}Multi metric job memantau beberapa metrik dalam satu model, dengan influencers — field yang membantu menjelaskan mengapa anomali terjadi:
{
"job_id": "anomali-layanan",
"analysis_config": {
"detectors": [
{ "function": "count", "partition_field_name": "service.name" },
{ "function": "mean", "field_name": "latency", "partition_field_name": "service.name" },
{ "function": "sum", "field_name": "error_count", "partition_field_name": "service.name" }
],
"influencers": ["service.name", "host.name", "ip"]
}
}Influencers menjawab "anomali di siapa?" — ketika alert ML masuk, kalian langsung tahu layanan dan host mana yang bermasalah, bukan hanya "ada yang aneh".
Population analysis membandingkan satu entitas terhadap populasi keseluruhannya — misalnya "host mana yang perilakunya menyimpang dari semua host lain":
{
"job_id": "populasi-host",
"analysis_config": {
"detectors": [
{
"function": "mean",
"field_name": "cpu.usage",
"over_field_name": "host.name"
}
]
},
"data_description": { "time_field": "@timestamp" }
}over_field_name memberitahu ML untuk membandingkan tiap host terhadap baseline populasi. Ini sangat kuat untuk fleet monitoring — menemukan satu server yang "aneh" di antara ratusan server normal.
Important
ML jobs butuh node dengan role ml dan data yang terurut waktu. Jobs berjalan di background dan datanya diambil dari index — pastikan datafeed mengarah ke index yang benar dan job dimulai dengan _start. Atur hasil job ke alias ml-anomalies-* untuk pencarian dan alert di episode 21.
Data frame analytics membangun model statistik dari data untuk menjawab pertanyaan "apa yang akan terjadi" atau "apa yang aneh":
Menemukan dokumen yang menyimpang secara statistik dari mayoritas data — tanpa label. Contoh: menemukan transaksi yang pola-nya tidak biasa dibanding transaksi lain:
{
"source": { "index": "transaksi" },
"analysis": {
"outlier_detection": {
"include_feature_importance": true
}
}
}Hasilnya menambahkan field ml.outlier_score (0–1) ke tiap dokumen — tinggal di-filter untuk menemukan transaksi mencurigakan.
Regression memprediksi nilai kontinu (harga, latensi, umur); classification memprediksi kategori (fraud atau tidak, churn atau tidak). Keduanya butuh data ber-label:
{
"source": { "index": "produk" },
"analysis": {
"regression": {
"dependent_variable": "price",
"training_percent": 75
}
}
}75% data untuk training, 25% untuk validasi. Hasilnya termasuk evaluasi akurasi dan feature importance — field mana yang paling memengaruhi prediksi. Kedua model dipakai untuk prediksi lewat API _ml/inference, atau diekspor untuk dipakai di ingest pipeline.
Semantic search mencari berdasarkan makna, bukan hanya kata. Kata kunci "flu burung" bisa menemukan dokumen tentang "influenza aviary" — sesuatu yang mustahil untuk full-text biasa. Elasticsearch 8.x melakukannya lewat ELSER (Elastic Learned Sparse EncodR), model NLP yang dijalankan langsung di node ML:
{
"mappings": {
"properties": {
"content_embedding": {
"type": "sparse_vector",
"inference_id": "my-elser-model"
}
}
}
}Saat dokumen diindeks, teks diubah menjadi sparse vector (vektor renggang yang menangkap konsep), lalu pencarian semantic memakai query text_expansion. Hasilnya: pencarian yang mengerti konteks dan sinonim tanpa daftar sinonim manual (episode 7).
Untuk model embedding eksternal, Elasticsearch 8.x punya tipe data dense_vector dan knn query (k-nearest neighbors):
{
"mappings": {
"properties": {
"content_embedding": {
"type": "dense_vector",
"dims": 384,
"index": true,
"similarity": "cosine"
}
}
}
}Kombinasi dense vector + knn query memungkinkan hybrid search: gabungan relevansi BM25 dan kemiripan vektor dalam satu hasil — pola dasar RAG (Retrieval-Augmented Generation) untuk chatbot yang menjawab dari dokumen perusahaan, membuka Elasticsearch sebagai knowledge base untuk aplikasi AI.
Tip
Urutan belajar yang masuk akal: kuasai anomaly detection untuk monitoring (nilai langsung), lalu data frame analytics untuk prediksi, dan terakhir NLP/semantic search saat kebutuhan aplikasi menuntutnya. Fitur ML menuntut resource — mulailah dengan job kecil dan amati beban node ML sebelum membesarkan.
Di episode 23 kalian menguasai fitur machine learning: anomaly detection dengan single metric, multi metric (plus influencers), dan population analysis; data frame analytics untuk outlier detection, regression, dan classification dengan feature importance; serta fitur NLP 8.x — ELSER untuk semantic search, dense_vector, dan pola hybrid search untuk aplikasi AI.
Inti yang harus dibawa pulang:
ML membuat data bisa "berpikir" — sekarang saatnya menyatukan seluruh ekosistem. Di episode 24 kita bahas Elastic Stack integration: Kibana untuk Discover, visualisasi, dashboard, Canvas, dan Lens; Logstash dengan pipeline input-filter-output serta plugin jdbc dan grok; dan Beats — Filebeat, Metricbeat, Packetbeat, dan Heartbeat. Sampai jumpa!