SDK Trình kết nối và API Google Cloud Search cho phép tạo Cloud Search Hàng đợi lập chỉ mục dùng để thực hiện các tác vụ sau:
Duy trì trạng thái của mỗi tài liệu (trạng thái, giá trị hàm băm, v.v.) vì những trạng thái này có thể được dùng để giúp chỉ mục của bạn luôn đồng bộ với kho lưu trữ.
Duy trì danh sách các mục để được lập chỉ mục như được tìm thấy trong quá trình truyền tải của chúng tôi.
Ưu tiên các mục trong hàng đợi dựa trên trạng thái của mục.
Duy trì thông tin bổ sung về trạng thái để tích hợp hiệu quả, chẳng hạn như điểm kiểm tra, mã thay đổi, v.v.
Hàng đợi là nhãn được gán cho một mục được lập chỉ mục, chẳng hạn như "mặc định" cho hàng đợi mặc định hoặc "B" cho hàng đợi B.
Trạng thái và mức độ ưu tiên
Mức độ ưu tiên của tài liệu trong hàng đợi dựa trên
ItemStatus
. Sau đây là những cách
ItemStatus
mã theo thứ tự ưu tiên (xử lý trước đến xử lý sau cùng):
ERROR
– Mục đã gặp lỗi không đồng bộ trong quá trình lập chỉ mục và cần được lập chỉ mục lại.MODIFIED
– Mục đã được lập chỉ mục trước đây và sau đó đã được sửa đổi trong kho lưu trữ kể từ lần lập chỉ mục gần đây nhất.NEW_ITEM
– Mục chưa được lập chỉ mục.ACCEPTED
– Tài liệu đã được lập chỉ mục trước đó và chưa thay đổi trong kho lưu trữ kể từ lần lập chỉ mục gần đây nhất.
Khi hai mục trong hàng đợi có cùng trạng thái, mức độ ưu tiên cao hơn được cấp cho các mục đã ở trong hàng đợi trong khoảng thời gian dài nhất.
Tổng quan về việc sử dụng hàng đợi lập chỉ mục để lập chỉ mục một mục mới hoặc một mục đã thay đổi
Hình 1 thể hiện các bước lập chỉ mục một mục mới hoặc một mục đã thay đổi bằng một hàng đợi. Các bước này cho thấy các lệnh gọi API REST. Đối với các lệnh gọi SDK tương đương, hãy tham khảo Thao tác hàng đợi (SDK trình kết nối).
![Tổng quan về việc lập chỉ mục trong Google Cloud Search](https://developers-dot-devsite-v2-prod.appspot.com/static/cloud-search/images/architecture-queues-add.png?authuser=5&hl=vi)
Trình kết nối nội dung sử dụng
items.push
để đẩy các mặt hàng (siêu dữ liệu và hàm băm) vào hàng đợi lập chỉ mục nhằm thiết lập trạng thái (MODIFIED
,NEW_ITEM
,DELETED
). Cụ thể:- Khi đẩy, trình kết nối bao gồm một cách rõ ràng là một lực đẩy
type
hoặccontentHash
. - Nếu trình kết nối không bao gồm
type
thì Cloud Search tự động sử dụngcontentHash
để xác định trạng thái của mục. - Nếu mục không xác định, trạng thái của mục sẽ được đặt thành
NEW_ITEM
. - Nếu mục này tồn tại và các giá trị băm khớp với nhau, trạng thái sẽ là
ACCEPTED
. - Nếu mục đó tồn tại và các hàm băm khác nhau, trạng thái sẽ trở thành
MODIFIED
.
Để biết thêm thông tin về cách thiết lập trạng thái mặt hàng, hãy tham khảo Truyền tải các kho lưu trữ GitHub mã mẫu trong Hướng dẫn bắt đầu sử dụng Cloud Search.
Thông thường, việc đẩy có liên quan đến việc phát hiện thay đổi và/hoặc truyền tải nội dung trong trình kết nối.
- Khi đẩy, trình kết nối bao gồm một cách rõ ràng là một lực đẩy
Trình kết nối nội dung sử dụng
items.poll
để thăm dò hàng đợi nhằm xác định các mục cần lập chỉ mục. Cloud Search cho trình kết nối biết mục nào cần được lập chỉ mục nhất, được sắp xếp trước tiên theo mã trạng thái sau đó theo thời gian trong hàng đợi.Trình kết nối truy xuất các mục này từ kho lưu trữ và tạo chỉ mục Yêu cầu API.
Trình kết nối sử dụng
items.index
để lập chỉ mục các mục. Mục này chỉ chuyển sang trạng tháiACCEPTED
sau khi Cloud Search đã xử lý xong mục hàng.
Một trình kết nối cũng có thể xoá một mục nếu một mục không còn tồn tại trong kho lưu trữ. hoặc đẩy lại một mục nếu mục đó chưa được sửa đổi hoặc nếu có lỗi kho lưu trữ nguồn. Để biết thông tin về việc xoá mục, hãy xem .
Tổng quan về việc sử dụng hàng đợi lập chỉ mục để xoá một mục
Chiến lược phát hành đĩa đơn chiến lược truyền tải toàn diện sử dụng quy trình hai hàng đợi để lập chỉ mục các mục và phát hiện thao tác xoá. Hình 2 minh hoạ các bước xoá một mục bằng cách sử dụng hàng đợi lập chỉ mục. Cụ thể, Hình 2 cho thấy lần truyền tải thứ hai được thực hiện bằng cách sử dụng chiến lược truyền tải toàn diện. Các bước này sử dụng lệnh gọi API REST. Để lệnh gọi SDK tương đương, hãy tham khảo Thao tác hàng đợi (SDK trình kết nối).
![Tổng quan về việc lập chỉ mục trong Google Cloud Search](https://developers-dot-devsite-v2-prod.appspot.com/static/cloud-search/images/architecture-queues-delete.png?authuser=5&hl=vi)
Trong lần truyền tải ban đầu, trình kết nối nội dung sử dụng
items.push
để đẩy các mục (siêu dữ liệu và hàm băm) vào hàng đợi lập chỉ mục, "hàng đợi A" dưới dạngNEW_ITEM
vì không tồn tại trong hàng đợi. Mỗi mục được gán nhãn "A" cho "hàng đợi A". Nội dung được lập chỉ mục vào Cloud Search.Trình kết nối nội dung sử dụng
items.poll
vào hàng đợi thăm dò A để xác định các mục cần lập chỉ mục. Cloud Search cho trình kết nối biết mục nào cần được lập chỉ mục nhất, được sắp xếp trước tiên theo mã trạng thái sau đó theo thời gian trong hàng đợi.Trình kết nối truy xuất các mục này từ kho lưu trữ và tạo chỉ mục Yêu cầu API.
Trình kết nối sử dụng
items.index
để lập chỉ mục các mục. Mục này chỉ chuyển sang trạng tháiACCEPTED
sau khi Cloud Search đã xử lý xong mục hàng.Chiến lược phát hành đĩa đơn
deleteQueueItems
được gọi trên "hàng đợi B". Tuy nhiên, không có mục nào được đẩy vào hàng đợi B, vì vậy không xoá được.Trên lần truyền tải đầy đủ thứ hai, trình kết nối nội dung sử dụng
items.push
để đẩy các mục (siêu dữ liệu và hàm băm) vào hàng đợi B:- Khi đẩy, trình kết nối bao gồm một cách rõ ràng là một lực đẩy
type
hoặccontentHash
. - Nếu trình kết nối không bao gồm
type
thì Cloud Search tự động sử dụngcontentHash
để xác định trạng thái của mục. - Nếu mục không xác định, trạng thái của mục sẽ được đặt thành
NEW_ITEM
và hàng đợi nhãn được thay đổi thành "B". - Nếu mục này tồn tại và các giá trị băm trùng khớp, trạng thái sẽ là
ACCEPTED
và nhãn của hàng đợi được thay đổi thành "B". - Nếu mục đó tồn tại và các hàm băm khác nhau, trạng thái sẽ trở thành
MODIFIED
và hàng đợi nhãn được thay đổi thành "B".
- Khi đẩy, trình kết nối bao gồm một cách rõ ràng là một lực đẩy
Trình kết nối nội dung sử dụng
items.poll
để thăm dò hàng đợi nhằm xác định các mục cần lập chỉ mục. Cloud Search cho trình kết nối biết mục nào cần được lập chỉ mục nhất, được sắp xếp trước tiên theo mã trạng thái sau đó theo thời gian trong hàng đợi.Trình kết nối truy xuất các mục này từ kho lưu trữ và tạo chỉ mục Yêu cầu API.
Trình kết nối sử dụng
items.index
để lập chỉ mục các mục. Mục này chỉ chuyển sang trạng tháiACCEPTED
sau khi Cloud Search đã xử lý xong mục hàng.Cuối cùng,
deleteQueueItems
được gọi trong hàng đợi A để xoá tất cả các mục đã được lập chỉ mục trước đó trong CCloud Search vẫn có hàng đợi "A" .Với các lần truyền tải đầy đủ tiếp theo, hàng đợi được sử dụng để lập chỉ mục và hàng đợi dùng để xoá sẽ được hoán đổi.
Thao tác hàng đợi (SDK trình kết nối)
SDK Trình kết nối nội dung cung cấp các thao tác để đẩy các mục đến và kéo mục từ, một hàng đợi.
Để đóng gói và đẩy một mục vào hàng đợi, hãy sử dụng pushItems
Builder (Trình tạo bản dựng).
Bạn không cần phải làm gì cụ thể để lấy các mục từ hàng đợi cho
đang xử lý. Thay vào đó, SDK sẽ tự động lấy các mục từ hàng đợi theo mức độ ưu tiên
theo đơn đặt hàng, bằng cách sử dụng
Lớp Kho lưu trữ
getDoc
.
Thao tác hàng đợi (API REST)
API REST cung cấp 2 phương thức sau để đẩy các mục đến và đang lấy các mục từ hàng đợi:
- Để đẩy một mục vào hàng đợi, hãy sử dụng
Items.push
. - Để thăm dò ý kiến các mục trong hàng đợi, hãy sử dụng
Items.poll
.
Bạn cũng có thể sử dụng
Items.index
để đẩy các mục vào hàng đợi trong quá trình lập chỉ mục. Các mục được đẩy vào hàng đợi trong khoảng thời gian
không đòi hỏi
type
và tự động được gán trạng thái
ACCEPTED
.
Items.push
Chiến lược phát hành đĩa đơn
Items.push
sẽ thêm mã nhận dạng vào hàng đợi. Phương thức này có thể được gọi bằng một
type
giá trị xác định kết quả của thao tác đẩy. Để xem danh sách các giá trị type
, hãy tham khảo
vào
item.type
trong trường Items.push
.
Việc đẩy mã nhận dạng mới dẫn đến việc thêm một mục nhập mới có NEW_ITEM
ItemStatus
.
Tải trọng không bắt buộc luôn được lưu trữ, xem như một giá trị không rõ ràng và trả về
từ
Items.poll
.
Khi một mục được thăm dò, mục đó sẽ được dành riêng, nghĩa là không thể trả về mục này
một cuộc gọi khác tới
Items.poll
.
Sử dụng
Items.push
thông qua tính năng
type
dưới dạng NOT_MODIFIED
, REPOSITORY_ERROR
hoặc REQUEUE
, huỷ đặt trước
các mục được thăm dò ý kiến. Để biết thêm thông tin về các mục nhập đặt trước và chưa đặt trước,
hãy tham khảo mục Items.poll.
Items.push
có hàm băm
Google Cloud Search API hỗ trợ việc chỉ định siêu dữ liệu và các giá trị hàm băm nội dung
về
Items.index
yêu cầu. Thay vì chỉ định
type
,
các giá trị hàm băm nội dung và/hoặc siêu dữ liệu
có thể được chỉ định bằng yêu cầu đẩy. So sánh hàng đợi lập chỉ mục của Cloud Search
các giá trị băm được cung cấp cùng với các giá trị được lưu trữ có sẵn cho mục trong
nguồn dữ liệu. Nếu không khớp, mục nhập đó sẽ được đánh dấu là MODIFIED
. Nếu một
mục không tồn tại trong chỉ mục, thì trạng thái là NEW_ITEM
.
Items.poll
Items.poll phương thức này truy xuất các mục có mức độ ưu tiên cao nhất từ hàng đợi. Cụm từ được yêu cầu và giá trị trạng thái được trả về cho biết(các) trạng thái của (các) hàng đợi ưu tiên đã yêu cầu hoặc trạng thái của mã nhận dạng được trả về.
Theo mặc định, các mục nhập từ bất kỳ phần nào của hàng đợi có thể được trả về, dựa trên
mức độ ưu tiên. Mỗi mục nhập trả về đều được dành riêng và không được người khác trả về
cuộc gọi đến
Items.poll
cho đến khi gặp một trong các trường hợp sau:
- Yêu cầu đặt chỗ đã hết thời gian.
- Mục nhập này lại được
Items.index
thêm vào hàng đợi. Items.push
được gọi bằngtype
có giá trịNOT_MODIFIED
,REPOSITORY_ERROR
hoặcREQUEUE
.