Jalankan atau atur ulang pengindeks, keterampilan, atau dokumen

Di Azure AI Search, ada beberapa cara untuk menjalankan pengindeks:

Artikel ini menjelaskan cara menjalankan pengindeks sesuai permintaan, dengan dan tanpa reset. Ini juga menjelaskan eksekusi, durasi, dan konkurensi pengindeks.

Cara pengindeks tersambung ke sumber daya Azure

Pengindeks adalah salah satu dari beberapa subsistem yang melakukan panggilan keluar berlebihan ke sumber daya Azure lainnya. Dalam hal peran Azure, pengindeks tidak memiliki identitas terpisah: koneksi dari mesin pencari ke sumber daya Azure lain dibuat menggunakan sistem atau identitas terkelola yang ditetapkan pengguna dari layanan pencarian. Jika pengindeks tersambung ke sumber daya Azure di jaringan virtual, Anda harus membuat tautan privat bersama untuk koneksi tersebut. Untuk informasi selengkapnya tentang koneksi aman, lihat Keamanan di Pencarian Azure AI.

Eksekusi pengindeks

Layanan pencarian menjalankan satu pekerjaan pengindeks per unit pencarian. Setiap layanan pencarian dimulai dengan satu unit pencarian, tetapi setiap partisi atau replika baru meningkatkan unit pencarian layanan Anda. Anda dapat memeriksa jumlah unit pencarian di bagian Penting portal dari halaman Gambaran Umum . Jika Anda memerlukan pemrosesan bersamaan, pastikan Anda memiliki replika yang memadai. Pengindeks tidak berjalan di latar belakang, sehingga Anda mungkin mendeteksi lebih banyak pembatasan kueri daripada biasanya jika layanan berada di bawah tekanan.

Cuplikan layar berikut menunjukkan jumlah unit pencarian, yang menentukan berapa banyak pengindeks yang dapat berjalan sekaligus.

Cuplikan layar bagian penting dari halaman gambaran umum, memperlihatkan unit pencarian.

Setelah eksekusi pengindeks dimulai, Anda tidak dapat menjeda atau menghentikannya. Eksekusi pengindeks berhenti ketika tidak ada lagi dokumen untuk dimuat atau di-refresh, atau ketika batas waktu berjalan maksimum tercapai.

Anda dapat menjalankan beberapa pengindeks pada satu waktu dengan asumsi kapasitas yang memadai, tetapi setiap pengindeks itu sendiri adalah instans tunggal. Memulai instans baru saat pengindeks sudah dalam eksekusi menghasilkan kesalahan ini: "Failed to run indexer "<indexer name>" error: "Another indexer invocation is currently in progress; concurrent invocations are not allowed."

Pekerjaan pengindeks berjalan di lingkungan eksekusi terkelola. Saat ini, ada dua lingkungan. Anda tidak dapat mengontrol atau mengonfigurasi lingkungan mana yang digunakan. Azure AI Search menentukan lingkungan berdasarkan komposisi pekerjaan dan kemampuan layanan untuk memindahkan pekerjaan pengindeks ke prosesor konten (beberapa fitur keamanan memblokir lingkungan multipenyewa).

Lingkungan eksekusi pengindeks meliputi:

  • Lingkungan eksekusi privat yang berjalan pada simpul pencarian, khusus untuk layanan pencarian Anda.

  • Lingkungan multipenyewa dengan prosesor konten, dikelola dan diamankan oleh Microsoft tanpa biaya tambahan. Lingkungan ini digunakan untuk melakukan offload pada pemrosesan komputasi yang intensif, sehingga sumber daya khusus layanan tersedia untuk operasi rutin. Jika memungkinkan, sebagian besar pekerjaan pengindeks dijalankan di lingkungan multipenyewa.

Batas pengindeks bervariasi untuk setiap lingkungan:

Beban kerja Durasi maksimum Pekerjaan maksimum Lingkungan eksekusi
Eksekusi privat 24 jam Satu pekerjaan pengindeks per unitpencarian 1. Pengindeksan tidak berjalan di latar belakang. Sebagai gantinya, layanan pencarian akan menyeimbangkan semua pekerjaan pengindeksan terhadap kueri yang sedang berlangsung dan tindakan manajemen objek (seperti membuat atau memperbarui indeks). Saat menjalankan pengindeks, Anda akan mengharapkan untuk melihat beberapa latensi kueri jika volume pengindeksan besar.
Multi penyewa 2 jam 2 Tidak ditentukan 3 Karena kluster pemrosesan konten multipenyewa, simpul ditambahkan untuk memenuhi permintaan. Jika Anda mengalami penundaan eksekusi sesuai permintaan atau terjadwal, itu mungkin karena sistem menambahkan simpul atau menunggu simpul tersedia.

1 Unit pencarian dapat berupa kombinasi partisi dan replika yang fleksibel, tetapi pekerjaan pengindeks tidak terkait dengan satu atau yang lain. Dengan kata lain, jika Anda memiliki 12 unit, Anda dapat memiliki 12 pekerjaan pengindeks yang berjalan bersamaan dalam eksekusi privat, tidak peduli bagaimana unit pencarian disebarkan.

2 Jika lebih dari dua jam diperlukan untuk memproses semua data, aktifkan deteksi perubahan dan jadwalkan pengindeks untuk berjalan pada interval dua jam. Lihat Mengindeks himpunan data besar untuk strategi lainnya.

3 "Tidak ditentukan" berarti bahwa batas tidak diukur oleh jumlah pekerjaan. Beberapa beban kerja, seperti pemrosesan set keterampilan, dapat berjalan secara paralel, yang dapat mengakibatkan banyak pekerjaan meskipun hanya satu pengindeks yang terlibat. Meskipun lingkungan tidak memberlakukan batasan, batas pengindeks untuk layanan pencarian Anda masih berlaku.

Jalankan tanpa reset

Operasi Jalankan Pengindeks akan mendeteksi dan memproses hanya apa yang diperlukan untuk menyinkronkan indeks pencarian dengan perubahan di sumber data yang mendasarinya. Pengindeksan inkremental dimulai dengan menemukan tanda air tinggi internal untuk menemukan dokumen pencarian terakhir yang diperbarui, yang menjadi titik awal eksekusi pengindeks melalui dokumen baru dan yang diperbarui di sumber data.

Deteksi perubahan sangat penting untuk menentukan apa yang baru atau diperbarui di sumber data. Pengindeks menggunakan kemampuan deteksi perubahan sumber data yang mendasar untuk menentukan apa yang baru atau diperbarui di sumber data.

  • Azure Storage memiliki deteksi perubahan bawaan melalui properti LastModified-nya.

  • Sumber data lain, seperti Azure SQL atau Azure Cosmos DB, harus dikonfigurasi untuk deteksi perubahan sebelum pengindeks dapat membaca baris baru dan yang diperbarui.

Jika konten yang mendasarinya tidak berubah, operasi eksekusi tidak berpengaruh. Dalam hal ini, riwayat eksekusi pengindeks akan menunjukkan 0\0 dokumen yang diproses.

Anda harus mengatur ulang pengindeks, seperti yang dijelaskan di bagian berikutnya, untuk memproses ulang secara penuh.

Mereset pengindeks

Setelah eksekusi awal, pengindeks melacak dokumen pencarian mana yang telah diindeks melalui tanda air tinggi internal. Penanda tidak pernah diekspos, tetapi secara internal pengindeks tahu di mana pengindeks terakhir berhenti.

Jika Anda perlu membangun kembali semua atau sebagian indeks, Anda dapat menghapus tanda air tinggi pengindeks melalui reset. API reset tersedia di tingkat penurunan dalam hierarki objek:

Setelah reset, ikuti perintah Jalankan untuk memproses ulang dokumen baru dan yang sudah ada. Dokumen pencarian tanpa inti yang tidak memiliki mitra di sumber data tidak dapat dihapus melalui reset/eksekusi. Jika Anda perlu menghapus dokumen, lihat Menambahkan, Memperbarui, atau Menghapus Dokumen sebagai gantinya.

Cara mengatur ulang dan menjalankan pengindeks

Reset membersihkan tanda air tinggi. Semua dokumen dalam indeks pencarian akan ditandai untuk penimpaan penuh, tanpa pembaruan sebaris atau penggabungan ke dalam konten yang ada. Untuk pengindeks dengan set keterampilan dan penembolokan pengayaan, mengatur ulang indeks juga akan secara implisit mengatur ulang set keterampilan.

Pekerjaan aktual terjadi saat Anda mengikuti reset dengan perintah Jalankan:

  • Semua dokumen baru yang menemukan sumber yang mendasar ditambahkan ke indeks pencarian.
  • Semua dokumen yang ada di sumber data dan indeks pencarian akan ditimpa dalam indeks pencarian.
  • Setiap konten yang diperkaya yang dibuat dari set keterampilan akan dibangun kembali. Cache pengayaan, jika diaktifkan, akan disegarkan.

Seperti yang disebutkan sebelumnya, reset adalah operasi pasif: Anda harus menindaklanjuti permintaan Jalankan untuk membangun kembali indeks.

Mengatur ulang/menjalankan operasi berlaku untuk indeks pencarian atau penyimpanan pengetahuan, untuk dokumen atau proyeksi tertentu, dan untuk pengayaan cache jika reset secara eksplisit atau implisit menyertakan keterampilan.

Reset juga berlaku untuk membuat dan memperbarui operasi. Ini tidak akan memicu penghapusan atau pembersihan dokumen tanpa institusi dalam indeks pencarian. Untuk informasi selengkapnya tentang menghapus dokumen, lihat Menambahkan, Memperbarui, atau Menghapus Dokumen.

Setelah mengatur ulang pengindeks, Anda tidak dapat membatalkan tindakan.

  1. Masuk ke portal Azure dan buka halaman layanan pencarian.

  2. Pada halaman Gambaran Umum, pilih tab Pengindeks.

  3. Pilih pengindeks.

  4. Pilih perintah Reset, lalu pilih Ya untuk mengonfirmasi tindakan.

  5. Refresh halaman untuk memperlihatkan status. Anda dapat memilih item untuk melihat detailnya.

  6. Pilih Jalankan untuk memulai pemrosesan pengindeks, atau tunggu eksekusi terjadwal berikutnya.

    Cuplikan layar halaman portal eksekusi pengindeks, dengan perintah Reset disorot.

Cara mengatur ulang keterampilan (pratinjau)

Untuk pengindeks yang memiliki keterampilan, Anda dapat mengatur ulang keterampilan individual untuk memaksa pemrosesan hanya keterampilan itu dan keterampilan hilir apa pun yang bergantung pada outputnya. Cache pengayaan, jika Anda mengaktifkannya, juga disegarkan.

Reset Keterampilan saat ini hanya REST, tersedia melalui api-version=2020-06-30-Preview atau yang lebih baru.

POST /skillsets/[skillset name]/resetskills?api-version=2020-06-30-Preview
{
    "skillNames" : [
        "#1",
        "#5",
        "#6"
    ]
}

Anda bisa menentukan keterampilan individu, seperti yang ditunjukkan dalam contoh di atas, tetapi jika salah satu keterampilan tersebut memerlukan output dari keterampilan yang tidak terdaftar (#2 hingga #4), keterampilan yang tidak terdaftar akan berjalan kecuali cache dapat memberikan informasi yang diperlukan. Agar ini benar, pengayaan cache untuk keterampilan #2 melalui #4 tidak boleh memiliki dependensi pada #1 (terdaftar untuk reset).

Jika tidak ada keterampilan yang ditentukan, seluruh skillset dijalankan dan jika penembolokan diaktifkan, cache juga di-refresh.

Ingatlah untuk menindaklanjuti dengan Jalankan Pengindeks untuk memanggil pemrosesan aktual.

Cara mengatur ulang dokumen (pratinjau)

API Reset Dokumen menerima daftar kunci dokumen sehingga Anda dapat me-refresh dokumen tertentu. Jika ditentukan, parameter reset akan menjadi penentu tunggal dari apa yang akan diproses, terlepas dari perubahan lain dalam data yang mendasarinya. Misalnya, jika 20 blob ditambahkan atau diperbarui sejak pengindeks terakhir dijalankan, tetapi Anda hanya mengatur ulang satu dokumen, hanya dokumen tersebut yang diproses.

Pada basis per dokumen, semua bidang dalam dokumen pencarian tersebut di-refresh dengan nilai dari sumber data. Anda tidak dapat memilih dan memilih bidang mana yang akan di-refresh.

Jika dokumen diperkaya melalui set keterampilan dan memiliki data cache, set keterampilan dipanggil hanya untuk dokumen yang ditentukan, dan cache diperbarui untuk dokumen yang diolah ulang.

Saat Anda menguji API ini untuk pertama kalinya, API berikut dapat membantu Anda memvalidasi dan menguji perilaku:

  1. Panggil Dapatkan Status Pengindeks dengan versi API atau yang api-version=2020-06-30-Preview lebih baru, untuk memeriksa status reset dan status eksekusi. Anda bisa menemukan informasi tentang permintaan reset di akhir respons status.

  2. Panggil Reset Dokumen dengan versi api-version=2020-06-30-Preview API atau yang lebih baru, untuk menentukan dokumen mana yang akan diproses.

    POST https://[service name].search.windows.net/indexers/[indexer name]/resetdocs?api-version=2020-06-30-Preview
    {
        "documentKeys" : [
            "1001",
            "4452"
        ]
    }
    
    • Kunci dokumen yang disediakan dalam permintaan adalah nilai dari indeks pencarian, yang bisa berbeda dengan bidang terkait di sumber data. Jika Anda tidak yakin dengan nilai kunci, kirim kueri untuk mengembalikan nilai. Anda dapat menggunakan select untuk mengembalikan bidang kunci dokumen saja.

    • Untuk blob yang diurai ke dalam beberapa dokumen pencarian (di mana parsingMode diatur ke jsonLines atau jsonArrays, atau delimitedText), kunci dokumen dihasilkan oleh pengindeks dan mungkin tidak diketahui oleh Anda. Dalam skenario ini, kueri untuk kunci dokumen mengembalikan nilai yang benar.

  3. Panggil Run Indexer (versi API apa pun) untuk memproses dokumen yang Anda tentukan. Hanya dokumen tertentu yang diindeks.

  4. Panggil Run Indexer untuk kedua kalinya untuk memproses dari tanda air tinggi terakhir.

  5. Panggil Cari Dokumen untuk memeriksa nilai yang diperbarui, dan juga untuk mengembalikan kunci dokumen jika Anda tidak yakin dengan nilainya. Gunakan "select": "<field names>" jika Anda ingin membatasi bidang mana yang muncul dalam respons.

Menimpa daftar kunci dokumen

Memanggil Reset Documents API beberapa kali dengan kunci yang berbeda menambahkan kunci baru ke daftar reset kunci dokumen. Memanggil API dengan parameter yang overwrite diatur ke true akan menimpa daftar saat ini dengan yang baru:

POST https://[service name].search.windows.net/indexers/[indexer name]/resetdocs?api-version=2020-06-30-Preview
{
    "documentKeys" : [
        "200",
        "630"
    ],
    "overwrite": true
}

Periksa status reset "currentState"

Untuk memeriksa status reset dan melihat kunci dokumen mana yang diantrekan untuk diproses, ikuti langkah-langkah ini.

  1. Panggil Dapatkan Status Pengindeks dengan atau yang api-version=06-30-2020-Preview lebih baru.

    API pratinjau akan mengembalikan bagian currentState , yang ditemukan di akhir respons.

    "currentState": {
        "mode": "indexingResetDocs",
        "allDocsInitialTrackingState": "{\"LastFullEnumerationStartTime\":\"2021-02-06T19:02:07.0323764+00:00\",\"LastAttemptedEnumerationStartTime\":\"2021-02-06T19:02:07.0323764+00:00\",\"NameHighWaterMark\":null}",
        "allDocsFinalTrackingState": "{\"LastFullEnumerationStartTime\":\"2021-02-06T19:02:07.0323764+00:00\",\"LastAttemptedEnumerationStartTime\":\"2021-02-06T19:02:07.0323764+00:00\",\"NameHighWaterMark\":null}",
        "resetDocsInitialTrackingState": null,
        "resetDocsFinalTrackingState": null,
        "resetDocumentKeys": [
            "200",
            "630"
        ]
    }
    
  2. Periksa "mode":

    Untuk Reset Keterampilan, "mode" harus diatur ke indexingAllDocs (karena berpotensi semua dokumen terpengaruh, dalam hal bidang yang diisi melalui pengayaan AI).

    Untuk Reset Dokumen, "mode" harus diatur ke indexingResetDocs. Pengindeks mempertahankan status ini sampai semua kunci dokumen yang disediakan dalam panggilan dokumen reset diproses, di mana tidak ada pekerjaan pengindeks lain yang akan dijalankan saat operasi sedang berlangsung. Menemukan semua dokumen dalam daftar kunci dokumen memerlukan peretasan setiap dokumen untuk menemukan dan mencocokkan pada kunci, dan ini bisa memakan waktu cukup lama jika himpuan datanya besar. Jika kontainer blob berisi ratusan b, dan blob, dan dokumen yang ingin Anda reset berada di ujung, pengindeks tidak akan menemukan blob yang cocok sampai semua yang lain telah diperiksa terlebih dahulu.

  3. Setelah dokumen diolah ulang, jalankan Dapatkan Status Pengindeks lagi. Pengindeks kembali ke indexingAllDocs mode dan akan memproses dokumen baru atau yang diperbarui pada eksekusi berikutnya.

Langkah berikutnya

Reset API digunakan untuk menginformasikan cakupan eksekusi pengindeks berikutnya. Untuk pemrosesan aktual, Anda harus memanggil pengindeks sesuai permintaan atau mengizinkan pekerjaan terjadwal untuk menyelesaikan tugasnya. Setelah eksekusi selesai, pengindeks kembali ke pemrosesan normal, apakah itu sesuai jadwal atau pemrosesan sesuai permintaan.

Setelah mengatur ulang dan menjalankan ulang pekerjaan pengindeks, Anda dapat memantau status dari layanan pencarian, atau mendapatkan informasi terperinci melalui pengelogan sumber daya.