Cara Menggunakan Elasticsearch API: Panduan Lengkap

Ashley Innocent

Ashley Innocent

24 March 2026

Cara Menggunakan Elasticsearch API: Panduan Lengkap

Apidog untuk Perusahaan

Penerapan On-Premises

SSO & RBAC

Sesuai SOC 2

Jelajahi Apidog Enterprise

Ringkasan

API Elasticsearch mendukung pencarian dan analitik dalam skala besar. Anda mengindeks dokumen sebagai JSON, melakukan kueri dengan DSL yang canggih, dan mengagregasi hasil untuk analitik. Otentikasi menggunakan kunci API atau otentikasi dasar. Untuk pengujian, gunakan Apidog untuk memvalidasi pemetaan indeks, menguji kueri pencarian, dan men-debug agregasi sebelum menerapkan ke klaster produksi.

Pendahuluan

Elasticsearch adalah mesin pencarian dan analitik terdistribusi. Ini menangani teks terstruktur, log, metrik, dan lainnya. Perusahaan menggunakannya untuk pencarian teks lengkap di aplikasi, analisis log untuk debugging, dan dasbor analitik real-time.

Elasticsearch berada di jantung tumpukan ELK (Elasticsearch, Logstash, Kibana). Namun Anda dapat menggunakannya secara langsung melalui API tanpa Logstash.

💡
Jika Anda membangun fitur pencarian atau analisis log, Apidog membantu Anda menguji kueri, memvalidasi pemetaan, dan men-debug agregasi. Anda dapat menyimpan templat pencarian dan membagikannya dengan tim Anda.
tombol

Uji API Elasticsearch dengan Apidog - gratis

Pada akhir panduan ini, Anda akan dapat:

Memulai

Jalankan Elasticsearch secara lokal

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

# Atau unduh dari elastic.co

Verifikasi instalasi

curl -X GET "http://localhost:9200"

Respons:

{
  "name": "elasticsearch-1",
  "cluster_name": "elasticsearch",
  "cluster_uuid": "abc123",
  "version": {
    "number": "8.11.0",
    "build_flavor": "default"
  },
  "tagline": "You know, for search"
}

Otentikasi

Elasticsearch 8.x memerlukan otentikasi secara default:

curl -X GET "http://localhost:9200/_cluster/health" \
  -u elastic:your_password

Atau gunakan kunci API (dibuat di Kibana atau melalui API).

Indeks dan dokumen

Buat indeks

curl -X PUT "http://localhost:9200/products" \
  -u elastic:your_password \
  -H "Content-Type: application/json" \
  -d '{
    "settings": {
      "number_of_shards": 1,
      "number_of_replicas": 0
    },
    "mappings": {
      "properties": {
        "name": { "type": "text" },
        "price": { "type": "float" },
        "category": { "type": "keyword" },
        "in_stock": { "type": "boolean" },
        "created_at": { "type": "date" }
      }
    }
  }'

Indeks dokumen

curl -X POST "http://localhost:9200/products/_doc" \
  -u elastic:your_password \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Wireless Headphones",
    "price": 79.99,
    "category": "electronics",
    "in_stock": true,
    "created_at": "2026-03-24T10:00:00Z"
  }'

Respons:

{
  "_index": "products",
  "_id": "abc123",
  "_version": 1,
  "result": "created",
  "_seq_no": 0,
  "_primary_term": 1
}

Dapatkan dokumen

curl -X GET "http://localhost:9200/products/_doc/abc123" \
  -u elastic:your_password

Perbarui dokumen

curl -X PUT "http://localhost:9200/products/_doc/abc123" \
  -u elastic:your_password \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Wireless Headphones Pro",
    "price": 99.99,
    "category": "electronics",
    "in_stock": true,
    "created_at": "2026-03-24T10:00:00Z"
  }'

Hapus dokumen

curl -X DELETE "http://localhost:9200/products/_doc/abc123" \
  -u elastic:your_password

Operasi massal

Indeks beberapa dokumen secara efisien:

curl -X POST "http://localhost:9200/products/_bulk" \
  -u elastic:your_password \
  -H "Content-Type: application/x-ndjson" \
  -d '{"index":{"_id":"1"}}
{"name":"Product A","price":10.99,"category":"books","in_stock":true}
{"index":{"_id":"2"}}
{"name":"Product B","price":20.99,"category":"electronics","in_stock":false}
'

Kueri pencarian

Pencarian dasar

curl -X GET "http://localhost:9200/products/_search" \
  -u elastic:your_password \
  -H "Content-Type: application/json" \
  -d '{
    "query": {
      "match": {
        "name": "headphones"
      }
    }
  }'

Kueri Boolean

Gabungkan beberapa kondisi:

{
  "query": {
    "bool": {
      "must": [
        { "match": { "name": "headphones" } }
      ],
      "filter": [
        { "term": { "category": "electronics" } },
        { "range": { "price": { "lte": 100 } } },
        { "term": { "in_stock": true } }
      ]
    }
  }
}

Pencarian teks lengkap dengan penilaian

{
  "query": {
    "multi_match": {
      "query": "wireless audio headphones",
      "fields": ["name^2", "description"],
      "type": "best_fields",
      "fuzziness": "AUTO"
    }
  }
}

Nama bidang dengan ^2 mendapatkan bobot dua kali lipat dalam penilaian.

Pencarian frasa

Temukan frasa yang tepat:

{
  "query": {
    "match_phrase": {
      "description": "noise canceling"
    }
  }
}

Wildcard dan regex

{
  "query": {
    "wildcard": {
      "name": "*headphone*"
    }
  }
}

Penyortiran

{
  "query": { "match_all": {} },
  "sort": [
    { "price": "asc" },
    { "_score": "desc" }
  ]
}

Paginasi

{
  "from": 20,
  "size": 10,
  "query": { "match_all": {} }
}

Agregasi

Agregasi menghitung statistik ringkasan dari data Anda.

Harga rata-rata berdasarkan kategori

curl -X GET "http://localhost:9200/products/_search" \
  -u elastic:your_password \
  -H "Content-Type: application/json" \
  -d '{
    "size": 0,
    "aggs": {
      "by_category": {
        "terms": { "field": "category" },
        "aggs": {
          "avg_price": { "avg": { "field": "price" } },
          "min_price": { "min": { "field": "price" } },
          "max_price": { "max": { "field": "price" } }
        }
      }
    }
  }'

Histogram harga

{
  "size": 0,
  "aggs": {
    "price_histogram": {
      "histogram": {
        "field": "price",
        "interval": 25
      }
    }
  }
}

Histogram tanggal

{
  "size": 0,
  "aggs": {
    "sales_over_time": {
      "date_histogram": {
        "field": "created_at",
        "calendar_interval": "month"
      }
    }
  }
}

Kardinalitas (jumlah unik)

{
  "size": 0,
  "aggs": {
    "unique_categories": {
      "cardinality": { "field": "category" }
    }
  }
}

Pemetaan dan penganalisis

Tipe bidang

Tipe Digunakan untuk
text Pencarian teks lengkap, dianalisis
keyword Nilai tepat, penyaringan, pengurutan
integer, float Angka
boolean Benar/salah
date Tanggal dan waktu
object Objek JSON bersarang
nested Array objek (mempertahankan hubungan)
geo_point Koordinat Lat/lon

Penganalisis kustom

Untuk pemrosesan teks khusus:

{
  "settings": {
    "analysis": {
      "analyzer": {
        "autocomplete": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": ["lowercase", "autocomplete_filter"]
        }
      },
      "filter": {
        "autocomplete_filter": {
          "type": "edge_ngram",
          "min_gram": 2,
          "max_gram": 20
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "name": {
        "type": "text",
        "analyzer": "autocomplete",
        "search_analyzer": "standard"
      }
    }
  }
}

Manajemen klaster

Kesehatan klaster

curl -X GET "http://localhost:9200/_cluster/health"

Respons:

{
  "cluster_name": "elasticsearch",
  "status": "green",
  "number_of_nodes": 3,
  "active_primary_shards": 25
}

Status:

Statistik indeks

curl -X GET "http://localhost:9200/_cat/indices?v"

Statistik node

curl -X GET "http://localhost:9200/_nodes/stats"

Hapus cache

curl -X POST "http://localhost:9200/_cache/clear"

Pengujian dengan Apidog

Kueri Elasticsearch bisa rumit. Uji secara menyeluruh.

1. Simpan kueri umum

Simpan templat pencarian di Apidog:

{
  "query": {
    "bool": {
      "must": [
        { "match": { "{{search_field}}": "{{search_term}}" } }
      ],
      "filter": [
        { "range": { "{{price_field}}": { "lte": "{{max_price}}" } } }
      ]
    }
  }
}

2. Validasi respons

pm.test('Search returns results', () => {
  const response = pm.response.json()
  pm.expect(response.hits.total.value).to.be.above(0)
})

pm.test('Aggregations present', () => {
  const response = pm.response.json()
  pm.expect(response.aggregations).to.exist
})

3. Pemisahan lingkungan

# Lokal
ES_HOST: http://localhost:9200
ES_USER: elastic
ES_PASSWORD: your_password

# Produksi
ES_HOST: https://search.yourcompany.com
ES_API_KEY: prod_api_key

Uji API Elasticsearch dengan Apidog - gratis

Kesalahan umum dan perbaikan

403 Terlarang

Penyebab: Otentikasi gagal atau izin tidak memadai.

Perbaikan: Verifikasi kredensial. Periksa apakah kunci API memiliki izin indeks yang benar.

404 index_not_found_exception

Penyebab: Indeks tidak ada.

Perbaikan: Buat indeks terlebih dahulu, atau gunakan pembuatan otomatis (diaktifkan secara default tetapi tidak direkomendasikan untuk produksi).

circuit_breaking_exception

Penyebab: Kueri menggunakan terlalu banyak memori.

Perbaikan: Kurangi parameter size, sederhanakan kueri, tambahkan filter untuk mengurangi set hasil.

search_phase_execution_exception

Penyebab: Kesalahan sintaks kueri.

Perbaikan: Periksa JSON Anda. Masalah umum: tanda kutip hilang, jalur bidang salah.

Alternatif dan perbandingan

Fitur Elasticsearch OpenSearch Meilisearch Typesense
Pengaturan Dihosting sendiri Dihosting sendiri Biner tunggal Biner tunggal
Kualitas pencarian Sangat Baik Baik Sangat Baik Baik
Kurva pembelajaran Curam Curam Mudah Mudah
Skalabilitas Sangat Baik Sangat Baik Baik Baik
Penawaran cloud Elastic Cloud OpenSearch Serverless Meilisearch Cloud Typesense Cloud

Elasticsearch memiliki fitur dan komunitas terbanyak. Meilisearch dan Typesense lebih sederhana untuk pencarian dasar.

Kasus penggunaan dunia nyata

Pencarian e-commerce. Sebuah situs ritel mengindeks 100.000 produk. Pengguna mencari berdasarkan nama, deskripsi, kategori, dan rentang harga. Pelengkapan otomatis menyarankan produk saat mereka mengetik. Filter mempersempit hasil berdasarkan kategori dan ketersediaan.

Log aplikasi. Tim DevOps mengirimkan log ke Elasticsearch melalui Filebeat. Insinyur mencari log berdasarkan layanan, tingkat keparahan, dan rentang waktu. Dasbor menampilkan tingkat kesalahan dan waktu respons.

Analitik keamanan. Tim keamanan mengindeks log jaringan. Mereka mencari alamat IP yang mencurigakan, memvisualisasikan pola lalu lintas, dan memberikan peringatan tentang anomali yang terdeteksi melalui agregasi.

Mengakhiri

Berikut adalah apa yang telah Anda pelajari:

Langkah Anda selanjutnya:

  1. Jalankan Elasticsearch secara lokal
  2. Buat indeks dengan pemetaan
  3. Indeks beberapa dokumen pengujian
  4. Tulis kueri pencarian
  5. Coba agregasi

Uji API Elasticsearch dengan Apidog - gratis

tombol

FAQ

Apa perbedaan antara Elasticsearch dan Solr?Keduanya adalah mesin pencari berbasis Lucene. Elasticsearch memiliki desain terdistribusi dan API yang lebih baik. Solr memiliki lebih banyak fitur enterprise. Sebagian besar proyek baru memilih Elasticsearch.

Bagaimana cara menangani karakter khusus dalam pencarian?Escape karakter khusus: ()[]{}:^\"\\+-!~*?| dengan garis miring terbalik. Atau gunakan simple_query_string yang lebih fleksibel.

Apa itu shard?Shard adalah bagian dari sebuah indeks. Setiap shard adalah indeks Lucene. Shard primer untuk penulisan, shard replika adalah salinan untuk skalabilitas baca dan toleransi kesalahan.

Berapa banyak shard yang harus saya buat?Aturan praktis: 20-50GB per shard. Mulai dengan 1 shard primer, tambahkan replika. Hanya tingkatkan shard primer saat dibutuhkan (tidak dapat dikurangi).

Dapatkah saya mengubah pemetaan setelah pengindeksan?Sebagian. Tambahkan bidang baru dengan bebas. Untuk mengubah tipe bidang yang ada, indeks ulang data. Gunakan templat indeks untuk mengelola pemetaan secara konsisten.

Apa parameter _routing?Merutekan dokumen ke shard tertentu berdasarkan nilai bidang. Defaultnya adalah _id. Gunakan routing ketika kueri selalu memfilter berdasarkan bidang tertentu (seperti user_id) untuk kinerja yang lebih baik.

Bagaimana cara menangani data berbasis waktu?Gunakan indeks berbasis tanggal: logs-2026.03.24. Ini memungkinkan Anda menghapus data lama dengan menghapus indeks dan meningkatkan kinerja kueri dengan mencari lebih sedikit indeks.

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.

Cara Menggunakan Elasticsearch API: Panduan Lengkap