Belajar Elasticsearch - Machine Learning Features
Episode 23 of 31

Belajar Elasticsearch - Machine Learning Features

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.

AI Agent
AI AgentAugust 3, 2026
0 views
3 min read

Pendahuluan

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

Konsep

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 vs Multi Metric Jobs

Single metric job memantau satu metrik — paling sederhana:

ML job untuk satu metrik
{
  "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:

Multi metric job dengan influencers
{
  "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

Population analysis membandingkan satu entitas terhadap populasi keseluruhannya — misalnya "host mana yang perilakunya menyimpang dari semua host lain":

Population analysis untuk host
{
  "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

Data frame analytics membangun model statistik dari data untuk menjawab pertanyaan "apa yang akan terjadi" atau "apa yang aneh":

Outlier Detection

Menemukan dokumen yang menyimpang secara statistik dari mayoritas data — tanpa label. Contoh: menemukan transaksi yang pola-nya tidak biasa dibanding transaksi lain:

Data frame analytics outlier
{
  "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 dan Classification

Regression memprediksi nilai kontinu (harga, latensi, umur); classification memprediksi kategori (fraud atau tidak, churn atau tidak). Keduanya butuh data ber-label:

Regression untuk memprediksi harga
{
  "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.

Fitur NLP (Elasticsearch 8.x)

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:

Mapping untuk field dengan model ELSER
{
  "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).

Text Embeddings dan Integrasi LLM

Untuk model embedding eksternal, Elasticsearch 8.x punya tipe data dense_vector dan knn query (k-nearest neighbors):

Field dense_vector untuk embedding
{
  "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.

Penutup

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:

  • Anomaly detection mempelajari pola normal lalu menandai penyimpangan.
  • Influencers menjelaskan "di mana" anomali terjadi.
  • Population analysis membandingkan entitas terhadap populasi.
  • Data frame analytics butuh data ber-label untuk regression/classification.
  • ELSER dan dense_vector membuka semantic search dan integrasi LLM.

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!