Filas de indexação do Google Cloud Search

Com o SDK do Connector e a API REST do Cloud Search, é possível criar filas de indexação do Cloud Search, que são usadas para realizar 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 de estado extras para uma integração eficiente, como checkpoints, tokens de alteração etc.

Status e prioridade

A prioridade de um documento na fila é baseada no código ItemStatus dele. Veja a seguir os possíveis códigos ItemStatus 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 tem sido modificado no repositório desde a última indexação.

  • NEW_ITEM: item que ainda não foi indexado.

  • ACCEPTED: documento que foi indexado anteriormente e não foi alterado no repositório 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.

Operações de fila (SDK do Connector)

O SDK do Content Connector fornece as operações para enviar itens para uma fila, bem como extraí-los dela.

Para empacotar e enviar um item para uma fila, use a classe Builder pushItems.

Não é necessário realizar qualquer ação específica para extrair itens de uma fila para processamento. O SDK automaticamente extrai os itens da fila, em ordem de prioridade, usando o método getDoc da classe Repository.

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.

Também é possível usar Items.index para enviar itens para a fila durante a indexação. Tais itens não exigem um type e recebem automaticamente o status ACCEPTED.

Items.push

O método Items.push adiciona IDs à fila. Esse método pode ser chamado com um valor de type específico, que determina o resultado da operação de envio. Para ver a lista de valores de type, consulte o campo item.type no método Items.push.

Enviar um ID novo resulta na inclusão de uma nova entrada com um código NEW_ITEM de ItemStatus.

O payload opcional sempre é armazenado, tratado como um valor opaco e retornado de Items.poll.

Quando um item é pesquisado, ele é reservado. Isso significa que ele não pode ser retornado por outra chamada para Items.poll. Usar Items.push com type como NOT_MODIFIED, REPOSITORY_ERROR ou REQUEUE cancela a reserva das entradas pesquisadas. Para mais informações sobre entradas reservadas ou não, consulte a seção Items.poll.

Items.push com hashes

A API REST do Cloud Search é compatível com a especificação de valores de hash de metadados e conteúdo nas solicitações Items.index. Em vez de especificar o type, especifique os valores de hash de metadados e/ou conteúdo com uma solicitação de envio. A fila de indexação do Cloud Search compara os valores de hash fornecidos com aqueles armazenados que estão disponíveis com o item na origem de dados. Se não houver correspondência, a entrada será marcada como MODIFIED. Se um item correspondente 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. Os valores de status solicitados e retornados indicam os status das filas de prioridade solicitadas ou os 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 outras chamadas para Items.poll até que um dos seguintes casos ocorra:

  • A reserva expire.
  • A entrada seja enfileirada novamente por Items.index.
  • Items.push seja chamado com um valor de type de NOT_MODIFIED, REPOSITORY_ERROR ou REQUEUE.