SDK Trình kết nối và API Google Cloud Search cho phép tạo Hàng đợi lập chỉ mục của Cloud Search dùng để thực hiện các tác vụ sau:
Duy trì trạng thái trên mỗi tài liệu (trạng thái, giá trị băm, v.v.) mà bạn có thể dùng để đồng bộ hoá chỉ mục với kho lưu trữ.
Duy trì danh sách các mục cần được lập chỉ mục khi phát hiện được trong quá trình truyền tải.
Sắp xếp thứ tự ưu tiên cho 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ã thông báo 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 mã ItemStatus
của tài liệu đó. Sau đây là các mã ItemStatus
có thể có 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 đó và đã đượ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à không 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, các mục đã nằm trong hàng đợi trong khoảng thời gian dài nhất sẽ được ưu tiên hơn.
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 đã được thay đổi
Hình 1 cho thấy các bước lập chỉ mục một mục mới hoặc đã được thay đổi bằng cách sử dụng hàng đợi lập chỉ mục. Các bước này cho thấy lệnh gọi API REST. Để biết các lệnh gọi SDK tương đương, hãy tham khảo Thao tác xếp hàng (SDK Trình kết nối).
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 nhằm thiết lập trạng thái của mục (MODIFIED
,NEW_ITEM
,DELETED
). Cụ thể:- Khi đẩy, trình kết nối rõ ràng bao gồm thao tác đẩy
type
hoặccontentHash
. - Nếu trình kết nối không bao gồm
type
, thì Cloud Search sẽ 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 tồn tại và giá trị băm khớp với nhau, thì trạng thái sẽ được giữ là
ACCEPTED
. - Nếu mục đó tồn tại và có các hàm băm khác nhau, thì 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ục, hãy tham khảo mã mẫu Truyền tải qua kho lưu trữ GitHub trong hướng dẫn bắt đầu sử dụng Cloud Search.
Thông thường, quá trình đẩy được liên kết với quá trình truyền tải nội dung và/hoặc phát hiện thay đổi trong trình kết nối.
- Khi đẩy, trình kết nối rõ ràng bao gồm thao tá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 lập chỉ mục nhất, được sắp xếp trước theo mã trạng thái rồi 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 các yêu cầu API chỉ mục.
Trình kết nối sử dụng
items.index
để lập chỉ mục các mục. Mục chỉ chuyển sang trạng tháiACCEPTED
sau khi Cloud Search xử lý xong mục thành công.
Trình kết nối cũng có thể xoá một mục nếu 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ề cách xoá mục, hãy xem phần tiếp theo.
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 truyền tải toàn bộ 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 cho thấy các bước để xoá một mục bằng cách sử dụng hai 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 chiến lược truyền tải toàn bộ. Các bước này sử dụng lệnh gọi API REST. Để biết các lệnh gọi SDK tương đương, hãy tham khảo Thao tác xếp hàng (SDK trình kết nối).
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" làNEW_ITEM
vì mục này 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 trong Cloud Search.Trình kết nối nội dung sử dụng
items.poll
để thăm dò ý kiến hàng đợi A 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 lập chỉ mục nhất, được sắp xếp trước theo mã trạng thái rồi 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 các yêu cầu API chỉ mục.
Trình kết nối sử dụng
items.index
để lập chỉ mục các mục. Mục chỉ chuyển sang trạng tháiACCEPTED
sau khi Cloud Search xử lý xong mục thành công.Phương thức
deleteQueueItems
được gọi trong "hàng B". Tuy nhiên, không có mục nào được đẩy vào hàng đợi B, vì vậy không thể xoá nội dung nào.Trong 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 rõ ràng bao gồm thao tác đẩy
type
hoặccontentHash
. - Nếu trình kết nối không bao gồm
type
, thì Cloud Search sẽ tự động sử dụngcontentHash
để xác định trạng thái của mục. - Nếu mục là không xác định, trạng thái của mục sẽ được đặt thành
NEW_ITEM
và nhãn của hàng đợi sẽ thay đổi thành "B". - Nếu mục tồn tại và giá trị băm khớp, trạng thái sẽ được giữ là
ACCEPTED
và nhãn hàng đợi sẽ thay đổi thành "B". - Nếu một mục tồn tại và có các hàm băm khác nhau, trạng thái sẽ trở thành
MODIFIED
và nhãn hàng đợi sẽ thay đổi thành "B".
- Khi đẩy, trình kết nối rõ ràng bao gồm thao tá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 lập chỉ mục nhất, được sắp xếp trước theo mã trạng thái rồi 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 các yêu cầu API chỉ mục.
Trình kết nối sử dụng
items.index
để lập chỉ mục các mục. Mục chỉ chuyển sang trạng tháiACCEPTED
sau khi Cloud Search xử lý xong mục thành cô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 đó trên CCloud Search mà vẫn còn nhãn "A" trong hàng đợi.Với các lần truyền tải đầy đủ tiếp theo, hàng đợi dùng để lập chỉ mục và hàng đợi dùng để xoá sẽ được hoán đổi.
Thao tác với 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 mục vào và kéo mục từ hàng đợi.
Để đóng gói và đẩy một mục vào hàng đợi, hãy sử dụng lớp trình tạo pushItems
.
Bạn không cần phải làm gì cụ thể để kéo các mục từ hàng đợi để xử lý. Thay vào đó, SDK sẽ tự động lấy các mục từ hàng đợi theo thứ tự ưu tiên bằng cách sử dụng phương thức getDoc
của lớp Repository (Kho lưu trữ).
Thao tác trong hàng đợi (API REST)
API REST cung cấp 2 phương thức sau để đẩy các mục vào và kéo 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 dùng
Items.poll
.
Bạn cũng có thể 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 quá trình lập chỉ mục không yêu cầu type
và tự động được gán trạng thái ACCEPTED
.
Items.push
Phương thức 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 giá trị type
cụ thể sẽ xác định kết quả của thao tác đẩy. Để biết danh sách các giá trị type
, hãy tham khảo trường item.type
trong phương thức Items.push.
Việc đẩy một mã nhận dạng mới sẽ dẫn đến việc thêm mục nhập mới có mã NEW_ITEM
ItemStatus
.
Tải trọng không bắt buộc luôn được lưu trữ, được coi là một giá trị mờ và được trả về từ Items.poll
.
Khi một mục được thăm dò ý kiến, mục đó sẽ được đặt trước, nghĩa là mục đó không thể được trả về bằng một lệnh gọi khác đến Items.poll
.
Sử dụng Items.push
với type
dưới dạng NOT_MODIFIED
, REPOSITORY_ERROR
hoặc REQUEUE
, huỷ đặt trước các mục nhập cuộ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, vui lòng tham khảo mục Items.poll.
Items.push
có hàm băm
API Google Cloud Search hỗ trợ việc chỉ định siêu dữ liệu và giá trị băm nội dung trên các yêu cầu Items.index
. Thay vì chỉ định type
, bạn có thể chỉ định giá trị băm siêu dữ liệu và/hoặc nội dung bằng một yêu cầu đẩy. Hàng đợi lập chỉ mục trên Cloud Search so sánh các giá trị băm được cung cấp với các giá trị đã lưu trữ có sẵn với 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 tương ứng không tồn tại trong chỉ mục, thì trạng thái sẽ là NEW_ITEM
.
Items.poll
Phương thức Items.poll truy xuất các mục có mức độ ưu tiên cao nhất qua hàng đợi. Giá trị trạng thái được yêu cầu và trả về cho biết(các) trạng thái của(các) hàng đợi ưu tiên được yêu cầu hoặc trạng thái của các 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 được trả về đều được đặt trước và không được các lệnh gọi khác trả về đến Items.poll
cho đến khi một trong các trường hợp sau được đáp ứng:
- Đã hết thời gian đặt chỗ.
- Mục nhập này đã được
Items.index
đưa lại vào hàng đợi. Items.push
được gọi bằng giá trịtype
làNOT_MODIFIED
,REPOSITORY_ERROR
hoặcREQUEUE
.