SDK เครื่องมือเชื่อมต่อและ Google Cloud Search API อนุญาตให้สร้างคิวการจัดทำดัชนีของ Cloud Search ที่ใช้ทำงานต่อไปนี้
คงสถานะตามเอกสารไว้ (สถานะ ค่าแฮช และอื่นๆ) ซึ่งสามารถใช้เพื่อให้ดัชนีซิงค์กับที่เก็บได้
ดูแลรักษารายการที่จะจัดทำดัชนีเมื่อค้นพบระหว่างกระบวนการข้ามผ่าน
จัดลําดับความสําคัญของรายการในคิวตามสถานะรายการ
เก็บรักษาข้อมูลสถานะเพิ่มเติมเพื่อการผสานรวมที่มีประสิทธิภาพ เช่น จุดตรวจสอบ โทเค็นการเปลี่ยนแปลง และอื่นๆ
คิวคือป้ายกำกับที่กำหนดให้กับรายการที่จัดทำดัชนี เช่น "ค่าเริ่มต้น" สำหรับคิวเริ่มต้น หรือ "B" สำหรับคิว B
สถานะและลําดับความสําคัญ
ลำดับความสำคัญของเอกสารในคิวจะอิงตามโค้ด ItemStatus
ของเอกสาร ต่อไปนี้เป็นโค้ด ItemStatus
ที่เป็นไปได้ตามลำดับความสำคัญ (จัดการก่อนในการจัดการเป็นลำดับสุดท้าย)
ERROR
- สินค้าพบข้อผิดพลาดแบบไม่พร้อมกันระหว่างกระบวนการจัดทำดัชนีและต้องได้รับการจัดทำดัชนีอีกครั้งMODIFIED
- รายการที่ได้รับการจัดทำดัชนีก่อนหน้านี้และมีการแก้ไขในที่เก็บนับตั้งแต่การจัดทำดัชนีครั้งล่าสุดNEW_ITEM
- รายการที่ไม่ได้รับการจัดทำดัชนีACCEPTED
- เอกสารที่จัดทำดัชนีไว้ก่อนหน้านี้และไม่มีการเปลี่ยนแปลงในที่เก็บนับตั้งแต่การจัดทำดัชนีครั้งล่าสุด
เมื่อรายการ 2 รายการในคิวมีสถานะเดียวกัน ระบบจะให้ความสำคัญกับรายการที่อยู่ในคิวเป็นระยะเวลานานที่สุดก่อน
ภาพรวมของการใช้คิวการจัดทำดัชนีเพื่อจัดทำดัชนีรายการใหม่หรือที่เปลี่ยนแปลง
รูปที่ 1 แสดงขั้นตอนในการจัดทำดัชนีรายการใหม่หรือที่มีการเปลี่ยนแปลงโดยใช้คิวการจัดทำดัชนี ขั้นตอนเหล่านี้แสดงการเรียก API ของ REST สำหรับการเรียก SDK ที่เทียบเท่า โปรดดูการดำเนินการตามคิว (SDK เครื่องมือเชื่อมต่อ)
เครื่องมือเชื่อมต่อเนื้อหาจะใช้
items.push
เพื่อพุชรายการ (ข้อมูลเมตาและแฮช) ลงในคิวการจัดทำดัชนีเพื่อสร้างสถานะของรายการ (MODIFIED
,NEW_ITEM
,DELETED
) ดังนี้- เมื่อพุช เครื่องมือเชื่อมต่อจะรวมการพุช
type
หรือcontentHash
ไว้อย่างชัดเจน - หากเครื่องมือเชื่อมต่อไม่มี
type
Cloud Search จะใช้contentHash
เพื่อระบุสถานะของรายการโดยอัตโนมัติ - หากเป็นรายการที่ไม่รู้จัก ระบบจะตั้งค่าสถานะรายการเป็น
NEW_ITEM
- หากรายการนั้นมีอยู่และค่าแฮชตรงกัน ระบบจะเก็บสถานะไว้เป็น
ACCEPTED
- หากรายการนั้นมีอยู่และแฮชแตกต่างกัน สถานะจะกลายเป็น
MODIFIED
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีสร้างสถานะรายการได้ที่ตัวอย่างโค้ดการข้ามที่เก็บ GitHub ในบทแนะนำการเริ่มต้นใช้งาน Cloud Search
โดยปกติแล้ว การพุชจะเชื่อมโยงกับการส่งผ่านเนื้อหาและ/หรือกระบวนการตรวจจับการเปลี่ยนแปลงในเครื่องมือเชื่อมต่อ
- เมื่อพุช เครื่องมือเชื่อมต่อจะรวมการพุช
เครื่องมือเชื่อมต่อเนื้อหาจะใช้
items.poll
ในการสำรวจคิวเพื่อกำหนดรายการที่จะจัดทำดัชนี Cloud Search จะบอกเครื่องมือเชื่อมต่อว่ารายการใดจำเป็นต้องจัดทำดัชนีมากที่สุด โดยจัดเรียงตามรหัสสถานะก่อน แล้วจึงจัดเรียงตามเวลาเข้าคิวเครื่องมือเชื่อมต่อจะเรียกรายการเหล่านี้จากที่เก็บและสร้างคำขอ API ของดัชนี
เครื่องมือเชื่อมต่อจะใช้
items.index
เพื่อจัดทำดัชนีรายการ รายการจะเข้าสู่สถานะACCEPTED
หลังจากที่ Cloud Search ประมวลผลรายการเรียบร้อยแล้วเท่านั้น
เครื่องมือเชื่อมต่อยังลบรายการได้หากไม่อยู่ในที่เก็บแล้ว หรือพุชรายการอีกครั้งหากไม่มีการแก้ไขหรือมีข้อผิดพลาดของที่เก็บต้นทาง สำหรับข้อมูลเกี่ยวกับการลบรายการ โปรดดูหัวข้อถัดไป
ภาพรวมของการใช้คิวการจัดทำดัชนีเพื่อลบรายการ
กลยุทธ์การส่งผ่านเต็มรูปแบบใช้กระบวนการ 2 คิวเพื่อจัดทำดัชนีรายการและตรวจหาการลบ รูปที่ 2 แสดงขั้นตอนการลบรายการโดยใช้คิวการจัดทำดัชนี 2 คิว กล่าวอย่างเจาะจงคือ รูปที่ 2 แสดงการส่งผ่านครั้งที่ 2 ที่ดำเนินการโดยใช้กลยุทธ์การส่งผ่านแบบเต็มรูปแบบ ขั้นตอนเหล่านี้ใช้การเรียก REST API สำหรับการเรียก SDK ที่เทียบเท่า โปรดดูการดำเนินการในคิว (SDK เครื่องมือเชื่อมต่อ)
ในการข้ามผ่านเริ่มต้น เครื่องมือเชื่อมต่อเนื้อหาจะใช้
items.push
เพื่อพุชรายการ (ข้อมูลเมตาและแฮช) ไปยังคิวการจัดทำดัชนี "คิว A" เป็นNEW_ITEM
เนื่องจากรายการดังกล่าวไม่มีอยู่ในคิว แต่ละรายการจะมีป้ายกำกับ "A" สำหรับ "คิว A" ระบบจะจัดทำดัชนีเนื้อหาลงใน Cloud Searchเครื่องมือเชื่อมต่อเนื้อหาจะใช้
items.poll
กับคิวแบบสำรวจ A เพื่อกำหนดรายการที่จะจัดทำดัชนี Cloud Search จะบอกเครื่องมือเชื่อมต่อว่ารายการใดจำเป็นต้องจัดทำดัชนีมากที่สุด โดยจัดเรียงตามรหัสสถานะก่อน แล้วจึงจัดเรียงตามเวลาเข้าคิวเครื่องมือเชื่อมต่อจะเรียกรายการเหล่านี้จากที่เก็บและสร้างคำขอ API ของดัชนี
เครื่องมือเชื่อมต่อจะใช้
items.index
เพื่อจัดทำดัชนีรายการ รายการจะเข้าสู่สถานะACCEPTED
หลังจากที่ Cloud Search ประมวลผลรายการเรียบร้อยแล้วเท่านั้นระบบจะเรียกใช้เมธอด
deleteQueueItems
ใน "คิว B" แต่ไม่มีรายการใดถูกพุชไปยังคิว B ดังนั้นจึงไม่สามารถลบรายการใดๆ ได้ในการข้ามผ่านเต็มรูปแบบครั้งที่ 2 เครื่องมือเชื่อมต่อเนื้อหาจะใช้
items.push
เพื่อพุชรายการ (ข้อมูลเมตาและแฮช) ไปยังคิว B ดังนี้- เมื่อพุช เครื่องมือเชื่อมต่อจะรวมการพุช
type
หรือcontentHash
ไว้อย่างชัดเจน - หากเครื่องมือเชื่อมต่อไม่มี
type
Cloud Search จะใช้contentHash
เพื่อระบุสถานะของรายการโดยอัตโนมัติ - หากเป็นรายการที่ไม่รู้จัก ระบบจะตั้งค่าสถานะรายการเป็น
NEW_ITEM
และป้ายกำกับคิวจะเปลี่ยนเป็น "B" - หากรายการนั้นมีอยู่และค่าแฮชตรงกัน ระบบจะเก็บสถานะไว้เป็น
ACCEPTED
และป้ายกำกับคิวจะเปลี่ยนเป็น "B" - หากมีรายการนั้นอยู่และแฮชแตกต่างกัน สถานะจะกลายเป็น
MODIFIED
และป้ายกำกับคิวจะเปลี่ยนเป็น "B"
- เมื่อพุช เครื่องมือเชื่อมต่อจะรวมการพุช
เครื่องมือเชื่อมต่อเนื้อหาจะใช้
items.poll
ในการสำรวจคิวเพื่อกำหนดรายการที่จะจัดทำดัชนี Cloud Search จะบอกเครื่องมือเชื่อมต่อว่ารายการใดจำเป็นต้องจัดทำดัชนีมากที่สุด โดยจัดเรียงตามรหัสสถานะก่อน แล้วจึงจัดเรียงตามเวลาเข้าคิวเครื่องมือเชื่อมต่อจะเรียกรายการเหล่านี้จากที่เก็บและสร้างคำขอ API ของดัชนี
เครื่องมือเชื่อมต่อจะใช้
items.index
เพื่อจัดทำดัชนีรายการ รายการจะเข้าสู่สถานะACCEPTED
หลังจากที่ Cloud Search ประมวลผลรายการเรียบร้อยแล้วเท่านั้นสุดท้ายนี้
deleteQueueItems
จะมีการเรียกในคิว A ให้ลบรายการ CCloud Search ที่จัดทำดัชนีไว้ก่อนหน้านี้ทั้งหมดซึ่งยังคงมีป้ายกำกับ "A" ในคิวอยู่เมื่อมีการข้ามผ่านเต็มรูปแบบในลำดับต่อมา คิวที่ใช้สำหรับการจัดทำดัชนีและคิวที่ใช้สำหรับการลบจะมีการสลับกัน
การดำเนินการตามคิว (SDK เครื่องมือเชื่อมต่อ)
SDK เครื่องมือเชื่อมต่อเนื้อหามีการดำเนินการสำหรับการพุชรายการไปยังและดึงรายการจากคิว
หากต้องการจัดแพ็กเกจและพุชรายการไปยังคิว ให้ใช้คลาสเครื่องมือสร้าง pushItems
คุณไม่จำเป็นต้องดำเนินการใดๆ เพื่อดึงรายการจากคิวเพื่อประมวลผลโดยเฉพาะ แต่ SDK จะดึงรายการจากคิวโดยอัตโนมัติตามลําดับความสําคัญแทน โดยใช้เมธอดของคลาสที่เก็บ getDoc
การดำเนินการตามคิว (REST API)
REST API มี 2 วิธีต่อไปนี้สำหรับการพุชรายการและดึงรายการจากคิว
- หากต้องการพุชรายการไปยังคิว ให้ใช้
Items.push
- หากต้องการสำรวจรายการในคิว ให้ใช้
Items.poll
คุณยังใช้ Items.index
เพื่อพุชรายการไปยังคิวระหว่างการจัดทำดัชนีได้ด้วย รายการที่พุชไปยังคิวระหว่างการจัดทำดัชนีไม่จำเป็นต้องมี type
และจะได้รับสถานะเป็น ACCEPTED
โดยอัตโนมัติ
Items.push
เมธอด Items.push
จะเพิ่มรหัสลงในคิว เมธอดนี้สามารถเรียกได้ด้วยค่า type
เฉพาะซึ่งเป็นตัวกําหนดผลลัพธ์ของการดำเนินการพุช ดูรายการค่า type
ได้ที่ช่อง item.type
ในเมธอด Items.push
การพุชรหัสใหม่จะส่งผลให้มีการเพิ่มรายการใหม่ด้วยรหัส NEW_ITEM
ItemStatus
ระบบจะจัดเก็บเพย์โหลดที่ไม่บังคับเสมอ โดยถือเป็นค่าทึบแสง และแสดงผลจาก Items.poll
เมื่อมีการแบบสำรวจรายการ ระบบจะจองไว้ ซึ่งหมายความว่าจะไม่สามารถส่งคืนรายการด้วยการเรียก Items.poll
อีกครั้ง
เมื่อใช้
Items.push
กับ
type
เป็น NOT_MODIFIED
, REPOSITORY_ERROR
หรือ REQUEUE
ก็ไม่จอง
รายการที่คุณแบบสำรวจ ดูข้อมูลเพิ่มเติมเกี่ยวกับรายการที่สงวนไว้และที่ไม่ได้จองได้ที่ส่วน Items.poll
Items.push
พร้อมแฮช
Google Cloud Search API รองรับการระบุข้อมูลเมตาและค่าแฮชของเนื้อหาในคำขอ Items.index
แทนที่จะระบุ type
คุณจะระบุค่าข้อมูลเมตาและ/หรือแฮชเนื้อหาได้ด้วยคำขอพุช คิวการจัดทำดัชนีของ Cloud Search จะเปรียบเทียบค่าแฮชที่ระบุกับค่าที่เก็บไว้ซึ่งมาพร้อมกับรายการในแหล่งข้อมูล หากไม่ตรงกัน ระบบจะทำเครื่องหมายรายการนั้นเป็น MODIFIED
หากรายการที่เกี่ยวข้องไม่อยู่ในดัชนี สถานะจะเป็น NEW_ITEM
Items.poll
เมธอด Items.poll จะดึงรายการที่มีลำดับความสำคัญสูงสุดจากคิว ค่าสถานะที่ขอและส่งคืนจะแสดงสถานะของคิวลำดับความสำคัญที่ขอหรือสถานะของรหัสที่แสดงผล
โดยค่าเริ่มต้น ระบบอาจแสดงรายการจากส่วนใดส่วนหนึ่งของคิวโดยอิงตามลำดับความสำคัญ ระบบจะจองรายการที่ส่งกลับแต่ละรายการไว้และไม่แสดงผลเมื่อเรียกใช้ Items.poll
รายการอื่นๆ จนกว่าจะตรงกับกรณีใดกรณีหนึ่งต่อไปนี้
- การจองหมดเวลา
- รายการจะได้รับการจัดคิวอีกครั้งโดย
Items.index
Items.push
จะถูกเรียกด้วยค่าtype
เป็นNOT_MODIFIED
,REPOSITORY_ERROR
หรือREQUEUE