Dengan Connector SDK dan Google Cloud Search API, Anda dapat membuat Cloud Search Indexing Queues yang digunakan untuk melakukan tugas berikut:
Mempertahankan status tiap dokumen (status, nilai hash, dan sebagainya) yang dapat digunakan untuk tetap menyinkronkan indeks dengan repositori Anda.
Mempertahankan daftar item yang akan diindeks sebagai ditemukan selama proses traversal.
Memprioritaskan item dalam antrean berdasarkan status item.
Mempertahankan informasi status tambahan untuk menciptakan integrasi yang efisien seperti checkpoint, token perubahan, dan lainnya.
Antrean adalah label yang ditetapkan pada item yang diindeks, seperti "default" untuk antrean default atau "B" untuk antrean B.
Status & prioritas
Prioritas dokumen dalam antrean didasarkan pada kode ItemStatus
. Berikut adalah kemungkinan kode ItemStatus
berdasarkan urutan prioritas (ditangani terlebih dahulu hingga ditangani terakhir):
ERROR
- Item mengalami error asinkron selama proses pengindeksan dan perlu diindeks ulang.MODIFIED
- Item yang sebelumnya diindeks dan telah diubah di repositori sejak pengindeksan terakhir.NEW_ITEM
- Item yang tidak diindeks.ACCEPTED
- Dokumen yang sebelumnya diindeks dan tidak berubah di repositori sejak pengindeksan terakhir.
Jika dua item dalam antrean memiliki status yang sama, prioritas lebih tinggi diberikan untuk item yang telah berada dalam antrean untuk jangka waktu paling lama.
Ringkasan penggunaan antrean pengindeksan untuk mengindeks item baru atau yang diubah
Gambar 1 menunjukkan langkah-langkah dalam mengindeks item baru atau yang diubah menggunakan antrean pengindeksan. Langkah-langkah ini menunjukkan panggilan REST API. Untuk panggilan SDK yang setara, lihat Operasi antrean (SDK Konektor).
Konektor konten menggunakan
items.push
untuk mengirim item (metadata dan hash) ke antrean pengindeksan untuk menetapkan status item (MODIFIED
,NEW_ITEM
,DELETED
). Khususnya:- Saat didorong, konektor secara eksplisit menyertakan
type
ataucontentHash
push. - Jika konektor tidak menyertakan
type
, Cloud Search akan otomatis menggunakancontentHash
untuk menentukan status item. - Jika item tidak diketahui, status item akan ditetapkan ke
NEW_ITEM
. - Jika item tersebut ada dan nilai hash-nya cocok, status akan dipertahankan sebagai
ACCEPTED
. - Jika item tersebut ada dan hash-nya berbeda, statusnya menjadi
MODIFIED
.
Untuk mengetahui informasi selengkapnya tentang cara status item ditetapkan, lihat kode contoh Melintasi repositori GitHub di Tutorial memulai Cloud Search.
Biasanya, push tersebut dikaitkan dengan proses traversal konten dan/atau deteksi perubahan di konektor.
- Saat didorong, konektor secara eksplisit menyertakan
Konektor konten menggunakan
items.poll
untuk memeriksa antrean guna menentukan item yang akan diindeks. Cloud Search memberi tahu konektor item mana yang paling memerlukan pengindeksan, yang diurutkan terlebih dahulu berdasarkan kode status, lalu berdasarkan waktu dalam antrean.Konektor mengambil item ini dari repositori dan mem-build permintaan API indeks.
Konektor menggunakan
items.index
untuk mengindeks item. Item hanya memasuki statusACCEPTED
setelah Cloud Search berhasil menyelesaikan pemrosesan item.
Konektor juga dapat menghapus item jika sudah tidak ada dalam repositori, atau mengirim item lagi jika tidak diubah, atau jika terjadi error repositori sumber. Untuk mengetahui informasi tentang penghapusan item, lihat bagian berikutnya.
Ringkasan penggunaan antrean pengindeksan untuk menghapus item
Strategi full-traversal menggunakan proses dua antrean untuk mengindeks item dan mendeteksi penghapusan. Gambar 2 menunjukkan langkah-langkah untuk menghapus item menggunakan dua antrean pengindeksan. Secara khusus, Gambar 2 menunjukkan traversal kedua yang dilakukan dengan menggunakan strategi traversal penuh. Langkah-langkah ini menggunakan panggilan REST API. Untuk panggilan SDK yang setara, lihat Operasi antrean (SDK Konektor).
Pada traversal awal, konektor konten menggunakan
items.push
untuk mengirim item (metadata dan hash) ke antrean pengindeksan, "antrean A" sebagaiNEW_ITEM
karena tidak ada dalam antrean. Setiap item diberi label "A" untuk "antrean A". Konten diindeks ke dalam Cloud Search.Konektor konten menggunakan
items.poll
untuk melakukan polling pada antrean A guna menentukan item yang akan diindeks. Cloud Search memberi tahu konektor item mana yang paling memerlukan pengindeksan, yang diurutkan terlebih dahulu berdasarkan kode status, lalu berdasarkan waktu dalam antrean.Konektor mengambil item ini dari repositori dan mem-build permintaan API indeks.
Konektor menggunakan
items.index
untuk mengindeks item. Item hanya memasuki statusACCEPTED
setelah Cloud Search berhasil menyelesaikan pemrosesan item.Metode
deleteQueueItems
dipanggil di "antrean B". Namun, tidak ada item yang dikirim ke antrean B, sehingga tidak ada yang dapat dihapus.Pada traversal penuh kedua, konektor konten menggunakan
items.push
untuk mengirim item (metadata dan hash) ke antrean B:- Saat didorong, konektor secara eksplisit menyertakan
type
ataucontentHash
push. - Jika konektor tidak menyertakan
type
, Cloud Search akan otomatis menggunakancontentHash
untuk menentukan status item. - Jika item tidak diketahui, status item akan ditetapkan ke
NEW_ITEM
dan label antrean diubah menjadi "B". - Jika item tersebut ada dan nilai hash-nya cocok, status akan disimpan sebagai
ACCEPTED
dan label antrean diubah menjadi "B". - Jika item tersebut ada dan hash-nya berbeda, status menjadi
MODIFIED
dan label antrean diubah menjadi "B".
- Saat didorong, konektor secara eksplisit menyertakan
Konektor konten menggunakan
items.poll
untuk memeriksa antrean guna menentukan item yang akan diindeks. Cloud Search memberi tahu konektor item mana yang paling memerlukan pengindeksan, yang diurutkan terlebih dahulu berdasarkan kode status, lalu berdasarkan waktu dalam antrean.Konektor mengambil item ini dari repositori dan mem-build permintaan API indeks.
Konektor menggunakan
items.index
untuk mengindeks item. Item hanya memasuki statusACCEPTED
setelah Cloud Search berhasil menyelesaikan pemrosesan item.Terakhir,
deleteQueueItems
dipanggil pada antrean A untuk menghapus semua item CCloud Search yang diindeks sebelumnya yang masih memiliki label "A" antrean.Dengan traversal penuh berikutnya, antrean yang digunakan untuk pengindeksan dan antrean yang digunakan untuk menghapus akan ditukar.
Operasi antrean (SDK Konektor)
SDK Konektor Konten menyediakan operasi untuk mendorong item ke dan menarik item dari antrean.
Untuk memaketkan dan mengirim item ke antrean, gunakan class pembuat
pushItems
.
Anda tidak perlu melakukan hal khusus untuk memproses penarikan item dari antrean. Sebaliknya, SDK secara otomatis mengambil item dari antrean, dalam urutan prioritas, menggunakan metode getDoc
class Repository.
Operasi antrean (REST API)
REST API menyediakan dua metode berikut untuk mendorong item ke dan menarik item dari antrean:
- Untuk mengirim item ke antrean, gunakan
Items.push
. - Untuk melakukan polling item dalam antrean, gunakan
Items.poll
.
Anda juga dapat menggunakan Items.index
untuk mengirim item ke antrean selama pengindeksan. Item yang dikirim ke antrean selama pengindeksan tidak memerlukan type
dan otomatis diberi status ACCEPTED
.
Items.push
Metode Items.push
menambahkan ID ke antrean. Metode ini dapat dipanggil dengan nilai
type
tertentu yang menentukan hasil operasi dorong. Untuk daftar nilai type
, lihat
kolom
item.type
pada metode
Items.push.
Mengirim ID baru menghasilkan penambahan entri baru dengan kode NEW_ITEM
ItemStatus
.
Payload opsional selalu disimpan, diperlakukan sebagai nilai buram, dan ditampilkan
dari
Items.poll
.
Saat di-polling, item akan dicadangkan, artinya item tersebut tidak dapat ditampilkan oleh
panggilan lain ke
Items.poll
.
Menggunakan
Items.push
dengan
type
sebagai NOT_MODIFIED
, REPOSITORY_ERROR
, atau REQUEUE
, membatalkan reservasi
entri yang di-polling. Untuk informasi lebih lanjut tentang entri yang dicadangkan dan tidak direservasi, lihat bagian Items.poll.
Items.push
dengan hash
Google Cloud Search API mendukung penentuan nilai hash konten dan metadata pada permintaan Items.index
. Daripada menentukan type
, nilai hash konten dan/atau metadata dapat ditentukan dengan permintaan push. Cloud Search Indexing Queue akan membandingkan nilai hash yang diberikan dengan nilai tersimpan yang tersedia pada item di sumber data. Jika tidak cocok, entri tersebut akan ditandai sebagai MODIFIED
. Jika item yang sesuai tidak ada dalam indeks, statusnya adalah NEW_ITEM
.
Items.poll
Metode Items.poll mengambil entri dengan prioritas tertinggi dari antrean. Nilai status yang diminta dan ditampilkan menunjukkan status antrean prioritas yang diminta atau status ID yang ditampilkan.
Secara default, entri dari setiap bagian antrean dapat ditampilkan berdasarkan prioritasnya. Setiap entri yang ditampilkan memiliki status dipesan, dan tidak ditampilkan oleh panggilan
lain ke
Items.poll
hingga salah satu dari kasus berikut terpenuhi:
- Waktu reservasi habis.
- Entri diantrekan lagi oleh
Items.index
. Items.push
dipanggil dengan nilaitype
NOT_MODIFIED
,REPOSITORY_ERROR
, atauREQUEUE
.