All Products
Search
Document Center

ApsaraDB for MongoDB:MongoDB Search

Last Updated:Jul 18, 2026

Pencarian teks penuh dan pengambilan vektor di MongoDB biasanya memerlukan mesin pencari terpisah seperti Elasticsearch, yang menambah kompleksitas arsitektur serta beban overhead sinkronisasi data.

MongoDB Search menyematkan node pencarian khusus (mongot) ke dalam instans Anda, menyediakan kemampuan pencarian teks penuh dan vektor bawaan yang dapat diakses melalui MQL—tanpa memerlukan sistem pencarian eksternal.

Penagihan (uji coba gratis)

MongoDB Search saat ini berada dalam pratinjau undangan. Kirim tiket untuk mengajukan akses. Selama masa pratinjau, node pencarian mongot gratis. Anda hanya dikenai biaya untuk instans MongoDB primary Anda.

Persyaratan

  • Instans dedicated replica set atau sharded cluster yang menjalankan MongoDB 8.0 atau lebih baru.

  • Hanya tersedia di wilayah publik Alibaba Cloud.

  • MongoDB 8.3 memperkenalkan Auto Embedding: mongot secara otomatis menghasilkan vektor saat Anda menulis teks, sehingga menghilangkan kebutuhan penyematan di sisi klien. Contoh penggunaan MongoDB Search dan layanan model.

Cara kerja

MongoDB Search menambahkan node pencarian mongot khusus ke instans Anda, sehingga beban kerja pencarian tetap terisolasi dari database inti (node mongod).

  • Arsitektur inti: Node mongot merupakan sumber daya komputasi independen yang menangani kueri $search (teks penuh) dan $vectorSearch (vektor).

  • Sinkronisasi data: Node mongot mereplikasi oplog dari node mongod secara asinkron melalui Change Streams, memastikan konsistensi akhir.

  • Perutean kueri: Saat agregasi berisi $search atau $vectorSearch, mongos mengarahkan bagian pencarian ke mongot, menggabungkan hasilnya dengan data mongod, lalu mengembalikan set hasil terpadu.

Aktifkan layanan Search

Tujuan

Aktifkan Search pada instans MongoDB yang sudah ada untuk membuat node pencarian mongot khusus.

Prosedur

  1. Buka halaman Replica Set Instances atau Sharded Cluster Instances. Di bilah navigasi atas, pilih kelompok sumber daya dan wilayah tempat instans yang diinginkan berada. Lalu, temukan instans tersebut dan klik ID instansnya.

  2. Di panel navigasi sebelah kiri, pilih MongoDB Search.

  3. Di halaman MongoDB Search, klik Activate now.

  4. Di panel Enable Search, konfigurasikan Search Node Specifications.

    Parameter

    Deskripsi

    Specifications

    Pilih spesifikasi node mongot berdasarkan QPS dan kompleksitas data yang diharapkan.

    Storage

    Disk space untuk indeks pencarian mongot, terpisah dari penyimpanan instans primary. Pilih ukuran berdasarkan volume data dan kompleksitas indeks Anda, serta sisakan ruang untuk pertumbuhan.

    Atur spesifikasi dan penyimpanan node pencarian minimal sesuai dengan instans primary Anda. Anda dapat menyesuaikannya nanti berdasarkan beban aktual.

  5. Baca dan centang Service Agreement.

  6. Klik Pay.

Setelah pembuatan selesai, lihat detail node Search di halaman MongoDB Search. Dari sana, Anda dapat melakukan Upgrade/Downgrade, Restart, atau Release node tersebut.

Kelola node Search

Di halaman MongoDB Search, Anda dapat:

  • Upgrade atau downgrade: Sesuaikan spesifikasi atau penyimpanan node mongot. Dua node Search disediakan secara default; jumlah node tidak dapat diubah.

  • Restart: Restart node mongot untuk troubleshooting atau perubahan konfigurasi. Layanan Search akan tidak tersedia sementara selama proses restart.

  • Release: Lepaskan node mongot jika Anda tidak lagi memerlukan fungsionalitas Search.

    Penting

    Melepas node akan menghapus permanen semua indeks Search. Tindakan ini tidak dapat dikembalikan.

Buat dan gunakan indeks Search

Tujuan

Buat indeks Search untuk pencarian teks penuh atau pencarian vektor menggunakan mongosh atau driver MongoDB yang kompatibel.

Prasyarat

Anda telah terhubung ke instans MongoDB target menggunakan mongosh atau aplikasi Anda.

Contoh 1: Pencarian teks penuh pada ulasan produk

Buat indeks Search teks penuh pada koleksi reviews dan jalankan kueri berbasis kata kunci.

  1. Buat indeks Search dengan pemetaan dinamis. dynamic: true mengindeks semua bidang secara otomatis—ideal untuk prototyping.

    // Buat indeks Search bernama 'reviews_full_text_index' pada koleksi 'reviews'
    db.reviews.createSearchIndex({
      name: "reviews_full_text_index",
      definition: {
        "mappings": {
          "dynamic": true
        }
      }
    });
    
  2. Gunakan tahap agregasi $search untuk mencari ulasan berdasarkan kata kunci. Kueri ini mencocokkan "good" pada bidang comment dan mengembalikan komentar, rating, serta ID produk.

    db.reviews.aggregate([
      {
        $search: {
          index: "reviews_full_text_index", // Tentukan indeks Search yang digunakan
          text: {
            query: "good", // Kata kunci pencarian
            path: "comment"      // Cari di bidang 'comment'
          }
        }
      },
      {
        $limit: 5
      },
      {
        $project: {
          _id: 0,
          productId: 1,
          rating: 1,
          comment: 1,
          score: { $meta: "searchScore" } // Kembalikan skor relevansi
        }
      }
    ]);
    

Contoh 2: Pencarian berdasarkan gambar menggunakan fitur visual

Buat indeks pencarian vektor pada koleksi images dan jalankan pencarian kemiripan terhadap vektor gambar yang tersimpan.

  1. Buat indeks Search vektor. Tentukan bidang vektor, numDimensions, dan metrik similarity.

    // Buat indeks vektor bernama 'vector_index' pada koleksi 'images'
    db.images.createSearchIndex(
      "vector_index", 
      "vectorSearch", 
      {
        "fields": [
          {
            "type": "vector",
            "path": "plot_embedding_voyage_3_large",// Bidang yang menyimpan vektor
            "numDimensions": 2048,// Dimensi vektor
            "similarity": "dotProduct",// Metrik kemiripan
            "quantization": "scalar"
          }
        ]
      }
    );
    
  2. Gunakan $vectorSearch untuk mencari gambar serupa. Berikan queryVector, yang biasanya dihasilkan oleh model AI dari gambar input.

    numCandidates: ukuran set kandidat. Nilai yang lebih tinggi meningkatkan recall tetapi menambah penggunaan sumber daya dan latensi.

    // Asumsikan QUERY_EMBEDDING adalah vektor berdimensi 1024 yang dihasilkan oleh model AI
    const QUERY_EMBEDDING = [0.12, 0.45, -0.23, ...]; // Contoh vektor—ganti dengan data nyata
    // Ambil berdasarkan kemiripan vektor
    db.images.aggregate([
      {
        "$vectorSearch": {
          "index": "vector_index",
          "path": "plot_embedding_voyage_3_large",
          "queryVector": QUERY_EMBEDDING,
          "numCandidates": 150,
          "limit": 10,
          "quantization": "scalar"
        }
      },
      {
        "$project": {
          "_id": 0,
          "plot": 1,
          "title": 1,
          "score": { $meta: "vectorSearchScore" }
        }
      }
    ])
    

Auto Embedding (baru di 8.3)

MongoDB 8.3 memperkenalkan Auto Embedding. Tentukan tipe autoEmbed saat membuat indeks vektor, dan mongot secara otomatis memanggil model penyematan tertentu seperti text-embedding-v4 untuk menghasilkan vektor saat dokumen ditulis. Saat kueri, masukkan langsung teks bahasa alami—sistem akan mengonversinya menjadi vektor sebelum melakukan pencarian.

Keunggulan dibanding pencarian vektor tradisional:

  • Tidak memerlukan SDK model penyematan di aplikasi Anda.

  • Vektor dihasilkan dan diperbarui secara otomatis di sisi database, memastikan konsistensi.

  • Proxy model terpadu melalui platform layanan model, mendukung penyematan, rerank, dan LLM seri Qwen.

Untuk panduan lengkap yang mencakup penyiapan layanan model, pembuatan indeks autoEmbed, pencarian semantik, dan pemanggilan model, lihat Contoh penggunaan MongoDB Search dan layanan model.

Mulai produksi

Pemantauan dan operasi

  • Metrik pemantauan: Node pencarian mongot menyediakan metrik pemantauan berikut, yang dapat Anda lihat di halaman Monitoring and Alerting di Konsol:

    Metrik

    Deskripsi

    Penggunaan CPU

    Pemanfaatan CPU pada node pencarian

    Penggunaan memori

    Pemanfaatan memori pada node pencarian

    Penggunaan IOPS / laju penggunaan IOPS

    Operasi I/O per detik pada node pencarian

    Penggunaan disk space / laju penggunaan disk space

    Konsumsi disk space pada node pencarian

    MBPS / laju penggunaan MBPS

    Throughput jaringan pada node pencarian

    Jumlah bidang indeks node pencarian

    Jumlah bidang yang diindeks

    Penggunaan memori heap node pencarian

    Penggunaan memori heap JVM pada node pencarian

    Jumlah operasi node pencarian

    Jumlah operasi kueri dan tulis yang diproses

    Penggunaan disk space indeks node pencarian

    Disk space yang digunakan oleh indeks pencarian

    Info Dokumen Lucene Search Node

    Jumlah dokumen dan statistik indeks Lucene lainnya

    Latensi sinkronisasi node pencarian

    Penundaan sinkronisasi data antara node pencarian dan instans primary

  • Manajemen log: Node mongot tidak mendukung log operasional, slow-query, atau log audit. Gunakan explain() pada tahap $search atau $vectorSearch untuk mengidentifikasi bottleneck kinerja.

  • Manajemen indeks: Jalankan db.collection.getSearchIndexes() untuk melihat indeks Search dan statusnya.

Ketersediaan tinggi dan failover

  • Node pencarian menggunakan konfigurasi dua node secara default. Jika satu node gagal, sistem secara otomatis melakukan failover ke node sehat yang tersisa. Terapkan logika retry di aplikasi Anda.

Backup, pemulihan, dan migrasi data

  • Backup dan pemulihan: Instans yang dipulihkan dari backup tidak menyertakan indeks pencarian. Aktifkan kembali Search dan bangun ulang indeks pada instans yang dipulihkan.

  • Migrasi data: Data Transmission Service (DTS) dan alat serupa tidak menyinkronkan indeks pencarian. Buat ulang indeks pada instans target setelah migrasi.

FAQ

  • T: Berapa lama setelah menulis data saya bisa mencarinya?

    J: Sinkronisasi data bersifat asinkron. Data biasanya dapat dicari dalam hitungan detik, tergantung pada volume tulis, ukuran dokumen, dan kondisi jaringan.

  • T: Kapan pembangunan ulang indeks dipicu? Apakah upgrade atau downgrade memicu pembangunan ulang?

    J: Mengubah definisi indeks memicu pembangunan ulang latar belakang otomatis. Indeks lama tetap dapat dikueri hingga yang baru selesai. Upgrade atau downgrade node tidak memicu pembangunan ulang indeks.