Bagikan melalui


Menjadwalkan pengindeks di Azure AI Search

Pengindeks dapat dikonfigurasi untuk berjalan sesuai jadwal saat Anda mengatur schedule properti . Beberapa situasi saat penjadwalan pengindeks berguna termasuk:

  • Data sumber berubah dari waktu ke waktu, dan Anda ingin pengindeks memproses perbedaan secara otomatis.
  • Data sumber sangat besar, dan Anda memerlukan jadwal berulang untuk mengindeks semua konten.
  • Indeks diisi dari beberapa sumber, menggunakan beberapa pengindeks, dan Anda ingin menjadwalkan tugas pengindeksan secara bertahap untuk mengurangi konflik.

Saat pengindeksan tidak dapat diselesaikan dalam jendela pemrosesan 2 jam yang khas, Anda dapat menjadwalkan pengindeks untuk berjalan pada irama 2 jam untuk bekerja melalui volume data yang besar. Selama sumber data Anda mendukung logika deteksi perubahan, pengindeks dapat secara otomatis melanjutkan dari titik terakhir pada setiap pemrosesan.

Setelah pengindeks ada dalam jadwal, pengindeks akan tetap dalam jadwal hingga Anda menghapus interval atau waktu mulai, atau mengatur disabled menjadi true. Membiarkan pengindeks tetap berjalan sesuai jadwal ketika tidak ada yang perlu diproses tidak akan memengaruhi performa sistem. Memeriksa konten yang diubah adalah operasi yang relatif cepat.

Prasyarat

  • Pengindeks yang valid dikonfigurasi dengan sumber data dan indeks.

  • Deteksi perubahan di sumber data. Azure Storage dan SharePoint memiliki deteksi perubahan bawaan. Sumber data lainnya, seperti Azure SQL dan Azure Cosmos DB harus diaktifkan secara manual.

Definisi jadwal

Jadwal adalah bagian dari definisi pengindeks. Jika properti dihilangkan schedule , pengindeks hanya akan berjalan sesuai permintaan. Properti memiliki dua bagian.

Properti Deskripsi
selang waktu (diperlukan) Jumlah waktu antara dimulainya dua eksekusi pengindeks berturut-turut. Interval terkecil yang diperbolehkan adalah 5 menit, dan yang terpanjang adalah 1440 menit (24 jam). Interval ini harus diformat sebagai nilai “dayTimeDuration” XSD (subset terbatas dari nilai durasi ISO 8601).

Pola untuk ini adalah: P(nD)(T(nH)(nM)).

Contoh: PT15M untuk setiap 15 menit, PT2H untuk setiap dua jam.
"startTime" (opsional) Waktu mulai ditentukan dalam waktu universal terkoordinasi (UTC). Jika dihilangkan, waktu saat ini digunakan. Ketika waktu ini berada di masa lalu, dalam hal ini eksekusi pertama dijadwalkan seolah-olah proses pengindeksan telah berjalan terus-menerus sejak waktu mulai yang asli.

Contoh berikut adalah jadwal yang dimulai pada 1 Januari tengah malam dan berjalan setiap dua jam.

{
    "dataSourceName" : "hotels-ds",
    "targetIndexName" : "hotels-idx",
    "schedule" : { "interval" : "PT2H", "startTime" : "2024-01-01T00:00:00Z" }
}

Mengonfigurasi jadwal

Jadwal ditentukan dalam definisi pengindeks. Untuk menyiapkan jadwal, Anda dapat menggunakan portal Azure, REST API, atau Azure SDK.

  1. Buka layanan pencarian Anda di portal Microsoft Azure.
  2. Di panel kiri, pilih Pengindeks.
  3. Buka pengindeks.
  4. Pilih pengaturan.
  5. Gulir ke bawah ke Jadwal, lalu pilih Per Jam, Harian, atau Kustom untuk mengatur tanggal, waktu, atau interval kustom tertentu.

Beralih ke tab Definisi Pengindeks (JSON) di bagian atas indeks untuk melihat definisi jadwal dalam format XSD.

Tanya Jawab Umum perilaku penjadwalan

Bisakah saya menjalankan beberapa pekerjaan pengindeks secara paralel?

Anda dapat menjalankan beberapa pengindeks secara bersamaan, tetapi setiap pengindeks adalah instans tunggal. Anda tidak dapat menjalankan dua salinan pengindeks yang sama secara bersamaan.

Untuk pengindeksan berbasis teks, penjadwal dapat memulai sebanyak mungkin pekerjaan pengindeks yang didukung oleh layanan pencarian, yang ditentukan berdasarkan jumlah unit pencarian. Misalnya, jika layanan memiliki tiga replika dan empat partisi, Anda dapat memiliki 12 pekerjaan pengindeks dalam eksekusi aktif, baik yang dimulai sesuai permintaan atau sesuai jadwal.

Untuk pengindeksan berbasis keterampilan, pengindeks berjalan di lingkungan eksekusi tertentu. Untuk alasan ini, jumlah unit layanan tidak mempengaruhi jumlah pekerjaan pengindeks berbasis keterampilan yang dapat Anda jalankan. Beberapa pengindeks berbasis keterampilan dapat berjalan secara paralel, tetapi melakukannya tergantung pada ketersediaan prosesor konten dalam lingkungan eksekusi.

Apakah pekerjaan terjadwal selalu dimulai pada waktu yang ditentukan?

Proses pengindeks dapat diantrekan dan mungkin tidak dimulai tepat pada saat diposting, tergantung pada beban kerja pemrosesan dan faktor lainnya. Misalnya, jika pengindeks kebetulan masih berjalan pada saat eksekusi terjadwal berikutnya dimulai, eksekusi yang harus dilakukan ditunda hingga kemunculan terjadwal berikutnya, memungkinkan tugas saat ini selesai.

Mari kita pertimbangkan contoh untuk membuat ini lebih konkret. Misalkan kami mengonfigurasi jadwal pengindeks dengan interval per jam dan waktu mulai 1 Januari 2024 pukul 08.00.00 UTC. Berikut hal-hal yang bisa terjadi ketika menjalankan pengindeks membutuhkan waktu lebih dari satu jam.

  1. Eksekusi pengindeks pertama dimulai pada atau sekitar 1 Januari 2024 pukul 08.00 UTC. Asumsikan eksekusi ini membutuhkan waktu 20 menit (atau jumlah waktu apa pun yang kurang dari 1 jam).

  2. Eksekusi kedua dimulai pada atau sekitar 1 Januari 2024 09.00 UTC. Misalkan eksekusi ini memakan waktu 70 menit - lebih dari satu jam - dan eksekusi ini tidak akan selesai sampai pukul 10:10 UTC.

  3. Eksekusi ketiga dijadwalkan dimulai pada pukul 10.00 UTC, namun saat itu eksekusi sebelumnya masih berjalan. Eksekusi terjadwal ini kemudian dilompati. Eksekusi pengindeks berikutnya tidak akan dimulai hingga pukul 11.00 UTC.

Dalam kasus yang jarang terjadi, seperti selama pemeliharaan atau saat pulih dari kondisi sementara, beberapa pekerjaan pengindeksan diantrekan. Ketika ini terjadi, pengindeks menjalankan beban kerja yang tertunda secara berurutan dalam jendela terjadwal. Misalnya, jika pengindeks dijadwalkan untuk berjalan setiap jam dan beberapa eksekusi tertunda atau dijalankan sesuai permintaan, pekerjaan yang diantrekan tersebut akan dilakukan secara berurutan hingga antrean dikosongkan. Ini bukan eksekusi tambahan, tetapi mewakili eksekusi yang dijadwalkan atau diminta sebelumnya. Meskipun perilaku ini jarang terjadi dalam sebagian besar skenario, pengindeks dirancang untuk akhirnya memproses semua tugas yang diantrekan untuk menjaga konsistensi dan kesegaran data.

Catatan

Jika Anda memiliki persyaratan eksekusi pengindeks yang ketat yang sensitif terhadap waktu, Anda harus mempertimbangkan untuk menggunakan model API pendorongan sehingga Anda dapat mengontrol alur pengindeksan secara langsung.

Apa yang terjadi jika pengindeksan gagal berulang kali pada dokumen yang sama?

Jika pengindeks diatur ke jadwal tertentu tetapi berulang kali gagal pada dokumen yang sama setiap kali, pengindeks akan mulai berjalan pada interval yang lebih jarang (hingga interval maksimum setidaknya sekali setiap 2 jam atau 24 jam, tergantung pada faktor implementasi yang berbeda) sampai berhasil membuat kemajuan lagi. Jika Anda yakin telah memperbaiki masalah yang mendasarinya, Anda dapat menjalankan pengindeks secara manual, dan jika pengindeksan berhasil, pengindeks akan kembali ke jadwal regulernya.

Langkah berikutnya

Untuk pengindeks yang berjalan sesuai jadwal, Anda dapat memantau operasi dengan mengambil status dari layanan pencarian, atau mendapatkan informasi terperinci dengan mengaktifkan pengelogan sumber daya.