O SDK do Connector e a API Google Cloud Search permitem a criação do Cloud Search Filas de indexação usadas para executar as seguintes tarefas:
Manter o estado por documento (status, valores de hash etc.), que pode ser usado para manter o índice em sincronia com o repositório.
Manter uma lista de itens a serem indexados conforme detectados durante o processo de travessia.
Priorizar os itens nas filas com base no status deles.
Manter informações extras sobre o estado para uma integração eficiente, como checkpoints, tokens de alteração etc.
Uma fila é um marcador atribuído a um item indexado, como "padrão". para o padrão ou "B" para a fila B.
Status e prioridade
A prioridade de um documento na fila é baseada em sua
ItemStatus
o código-fonte é alterado. Veja a seguir os possíveis
ItemStatus
códigos em ordem de prioridade, dos primeiros aos últimos a serem processados:
ERROR
: item que encontrou um erro assíncrono durante o processo de indexação e precisa ser indexado novamente.MODIFIED
: item que foi indexado anteriormente e foi modificado no repositório desde a última indexação.NEW_ITEM
: item não indexado.ACCEPTED
: documento que foi indexado anteriormente e não foi alterado no desde a última indexação.
Quando dois itens em uma fila têm o mesmo status, a prioridade mais alta é dada aos itens que estão na fila há mais tempo.
Visão geral do uso de filas de indexação para indexar um item novo ou alterado
A Figura 1 mostra as etapas para indexar um item novo ou alterado usando uma indexação fila. Estas etapas mostram chamadas da API REST. Para chamadas equivalentes do SDK, consulte Operações de fila (SDK do conector).
O conector de conteúdo usa
items.push
de enviar itens (metadados e hash) para uma fila de indexação a fim de estabelecer a propriedade (MODIFIED
,NEW_ITEM
,DELETED
). Especificamente:- Ao realizar push, o conector inclui explicitamente um comando push
type
oucontentHash
. - Se o conector não incluir
type
, o Cloud Search usa automaticamente ocontentHash
para determinar o status do item. - Se o item for desconhecido, o status dele será definido como
NEW_ITEM
. - Se o item existir e os valores de hash corresponderem, o status vai ser mantido como
ACCEPTED
. - Se o item existir e os hashes forem diferentes, o status será
MODIFIED
.
Para mais informações sobre como o status do item é estabelecido, consulte a Como rastrear os repositórios do GitHub exemplo de código na Tutorial para começar a usar o Cloud Search.
Normalmente, o push é associado à travessia de conteúdo e/ou detecção de alterações. no conector.
- Ao realizar push, o conector inclui explicitamente um comando push
O conector de conteúdo usa
items.poll
para pesquisar a fila a fim de determinar os itens a serem indexados. O Cloud Search informa ao conector quais itens mais precisam de indexação, classificados primeiro por código de status e depois por tempo na fila.O conector recupera esses itens do repositório e cria o índice solicitações de API.
O conector usa
items.index
para indexar os itens. O item só entra no estadoACCEPTED
após o Cloud Search. conclui o processamento do item com sucesso.
Um conector também pode excluir um item que não existe mais no repositório, ou envie um item novamente se ele não tiver sido modificado ou se houver erro do repositório de origem. Para mais informações sobre exclusões de itens, consulte os próximos nesta seção.
Visão geral do uso de filas de indexação para excluir um item
A estratégia de travessia completa usa um processo de duas filas para indexar itens e detectar exclusões. A Figura 2 mostra as etapas para excluir um item usando dois filas de indexação. Especificamente, a Figura 2 mostra a segunda travessia realizada usando uma estratégia de travessia completa. Estas etapas usam as chamadas da API REST. Para chamadas do SDK equivalentes, consulte Operações de fila (SDK do conector).
Na travessia inicial, o conector de conteúdo usa
items.push
enviar itens (metadados e hash) para uma fila de indexação, a "fila A" quandoNEW_ITEM
porque ele não existe na fila. Cada item recebe um rótulo “A” para "fila A". O conteúdo é indexado no Cloud Search.O conector de conteúdo usa
items.poll
para pesquisar a fila A a fim de determinar os itens a serem indexados. O Cloud Search informa ao conector quais itens mais precisam de indexação, classificados primeiro por código de status e depois por tempo na fila.O conector recupera esses itens do repositório e cria o índice solicitações de API.
O conector usa
items.index
para indexar os itens. O item só entra no estadoACCEPTED
após o Cloud Search. conclui o processamento do item com sucesso.A
deleteQueueItems
é chamado na "fila B". No entanto, nenhum item foi enviado para a fila B, então nada pode ser excluído.Na segunda travessia completa, o conector de conteúdo usa
items.push
para enviar itens (metadados e hash) para a fila B:- Ao realizar push, o conector inclui explicitamente um comando push
type
oucontentHash
. - Se o conector não incluir
type
, o Cloud Search usa automaticamente ocontentHash
para determinar o status do item. - Se o item for desconhecido, o status dele será definido como
NEW_ITEM
, e a fila será alterado para "B". - Se o item existir e os valores de hash corresponderem, o status vai ser mantido como
ACCEPTED
. e o rótulo da fila é alterado para "B". - Se o item existir e os hashes forem diferentes, o status vai se tornar
MODIFIED
, e a fila será alterado para "B".
- Ao realizar push, o conector inclui explicitamente um comando push
O conector de conteúdo usa
items.poll
para pesquisar a fila a fim de determinar os itens a serem indexados. O Cloud Search informa ao conector quais itens mais precisam de indexação, classificados primeiro por código de status e depois por tempo na fila.O conector recupera esses itens do repositório e cria o índice solicitações de API.
O conector usa
items.index
para indexar os itens. O item só entra no estadoACCEPTED
após o Cloud Search. conclui o processamento do item com sucesso.Por fim,
deleteQueueItems
é chamado na fila A para excluir todos os itens do CCloud Search indexados anteriormente que ainda têm uma fila "A" rótulo.Com travessias completas subsequentes, a fila usada para indexação e a fila usada para exclusão serão trocadas.
Operações de fila (SDK do Connector)
O SDK do conector de conteúdo fornece as operações para enviar itens para um fila, bem como extraí-los dela.
Para empacotar e enviar um item para uma fila, use pushItems
.
Builder.
Não é necessário realizar qualquer ação específica para extrair itens de uma fila para processamento. Em vez disso, o SDK extrai automaticamente itens da fila em prioridade
usando o método
Repository
getDoc
.
Operações de fila (API REST)
A API REST fornece os dois métodos a seguir para enviar itens para uma fila e extraí-los dela.
- Para enviar um item para uma fila, use
Items.push
. - Para pesquisar itens na fila, use
Items.poll
.
Você também pode usar
Items.index
para enviar itens para a fila durante a indexação. Itens enviados para a fila durante
indexação não exigem um
type
e recebem automaticamente um status de
ACCEPTED
.
Items.push
A
Items.push
adiciona IDs à fila. Esse método pode ser chamado com uma função
type
que determina o resultado da operação de push. Para conferir uma lista de valores type
, consulte
ao
Campo item.type
em Items.push
.
Enviar um ID novo resulta na inclusão de uma nova entrada com um NEW_ITEM
ItemStatus
o código-fonte é alterado.
O payload opcional sempre é armazenado, tratado como um valor opaco e retornado
de
Items.poll
Quando um item é pesquisado, ele é reservado, o que significa que não pode ser devolvido pelo
outra chamada para
Items.poll
.
Usando
Items.push
com
type
como NOT_MODIFIED
, REPOSITORY_ERROR
ou REQUEUE
, não reserva
entradas consultadas. Para mais informações sobre entradas reservadas ou não,
consulte a seção Items.poll.
Items.push
com hashes
A API Google Cloud Search é compatível com a especificação de valores de hash de metadados e conteúdo
ativado
Items.index
solicitações. Em vez de especificar
type
,
os valores de hash de metadados e/ou conteúdo
podem ser especificadas com uma solicitação de push. A fila de indexação do Cloud Search compara
os valores de hash fornecidos com os valores armazenados disponíveis com o item na
fonte de dados. Se não houver correspondência, a entrada será marcada como MODIFIED
. Se uma entrada
item não existir no índice, o status será NEW_ITEM
.
Items.poll
O método Items.poll recupera as entradas de prioridade mais alta da fila. As solicitações e Os valores de status retornados indicam os status dos filas de prioridade solicitadas ou o status dos IDs retornados.
Por padrão, podem ser retornadas entradas de qualquer seção da fila, com base na prioridade. Cada entrada retornada é reservada e não é retornada por outro
chamadas para
Items.poll
até que um dos seguintes casos seja atendido:
- A reserva expire.
- A entrada é enfileirada novamente por
Items.index
. Items.push
é chamado com umatype
deNOT_MODIFIED
,REPOSITORY_ERROR
ouREQUEUE
.