Esta página do tutorial do Cloud Search mostra como configurar uma fonte de dados e um conector de conteúdo para indexar dados. Para começar do início deste tutorial, consulte o Tutorial para dar os primeiros passos com o Cloud Search.
Criar o conector
Mude o diretório de trabalho para cloud-search-samples/end-to-end/connector e execute este comando:
mvn package -DskipTests
O comando faz o download das dependências necessárias para criar o conector de conteúdo e compila o código.
Criar credenciais da conta de serviço
O conector exige credenciais da conta de serviço para chamar as APIs do Cloud Search. Para criar as credenciais:
- Volte para o console do Google Cloud.
- Na navegação à esquerda, clique em Credenciais. A página "Credenciais" aparece.
- Clique na lista suspensa + CRIAR CREDENCIAIS e selecione Conta de serviço. A página "Criar conta de serviço" aparece.
- No campo Nome da conta de serviço, insira "tutorial".
- Anote o valor do ID da conta de serviço (logo após o nome da conta de serviço). Esse valor será usado mais tarde.
- Clique em CRIAR. A caixa de diálogo "Permissões da conta de serviço (opcional)" aparece.
- Clique em CONTINUAR. A caixa de diálogo "Conceder aos usuários acesso a esta conta de serviço (opcional)" aparece.
- Clique em CONCLUÍDO. A tela "Credenciais" aparece.
- Em "Contas de serviço", clique no e-mail da conta de serviço. A página "Detalhes da conta de serviço" aparece.
- Em "Chaves", clique na lista suspensa ADICIONAR CHAVE e selecione Criar nova chave. A caixa de diálogo "Criar chave privada" aparece.
- Clique em CRIAR.
- (Opcional) Se a caixa de diálogo "Você quer permitir downloads em console.cloud.google.com?" aparecer, clique em Permitir.
- Um arquivo de chave privada é salvo no seu computador. Anote o local do arquivo baixado. Esse arquivo é usado para configurar o conector de conteúdo para que ele possa se autenticar ao chamar as APIs do Google Cloud Search.
Inicializar o suporte de terceiros
Inicialize o suporte de terceiros para o Google Cloud Search antes de chamar qualquer outra API do Cloud Search.
Para inicializar o suporte de terceiros:
- Crie credenciais de aplicativo da Web no projeto da plataforma do Cloud Search. Consulte Criar credenciais. Você precisa do ID e da chave secreta do cliente.
- Receba um token de acesso usando o
OAuth 2.0 Playground:
- Clique em Configuração do OAuth 2.0 (ícone de configurações) e marque Usar suas próprias credenciais do OAuth.
- Insira o ID e a chave secreta do cliente.
- No campo "Escopos", insira
https://www.googleapis.com/auth/cloud_search.settingse clique em Autorizar APIs. - Clique em Trocar código de autorização dos tokens.
Execute este comando curl, substituindo
[YOUR_ACCESS_TOKEN]pelo seu token:curl --request POST \ 'https://cloudsearch.googleapis.com/v1:initializeCustomer' \ --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --data '{}' \ --compressedSe for bem-sucedido, o corpo da resposta vai incluir um
operation. Se falhar, entre em contato com o suporte do Cloud Search.Use
operations.getpara verificar a inicialização:curl 'https://cloudsearch.googleapis.com/v1/operations/<var>operation_name</var>?key=[YOUR_API_KEY]' \ --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \ --header 'Accept: application/json' \ --compressedA inicialização será concluída quando
donefortrue.
Criar a fonte de dados
Em seguida, crie uma fonte de dados no Admin Console. A fonte de dados fornece um namespace para indexar conteúdo usando o conector.
- Abra o Google Admin Console.
- Clique no ícone Apps. A página "Administração de apps" aparece.
- Clique em Google Workspace. A página "Administração de apps do Google Workspace" aparece.
- Role para baixo e clique em Cloud Search. A página "Configurações do Google Workspace" aparece.
- Clique em Fontes de dados de terceiros. A página "Fontes de dados" aparece.
- Clique no círculo amarelo +. A caixa de diálogo "Adicionar nova fonte de dados" aparece.
- No campo Nome de exibição, digite "tutorial".
- No campo Endereços de e-mail da conta de serviço, insira o endereço de e-mail da conta de serviço que você criou na seção anterior. Se você não souber o endereço de e-mail da conta de serviço, procure o valor na página de contas de serviço.
- Clique em ADICIONAR. A caixa de diálogo "A fonte de dados foi criada" aparece.
- Clique em *OK. Anote o ID da fonte da fonte de dados recém-criada. O ID da fonte é usado para configurar o conector de conteúdo.
Gerar um token de acesso pessoal para a API do GitHub
O conector exige acesso autenticado à API do GitHub para ter cota suficiente. Para simplificar, o conector usa tokens de acesso pessoal em vez do OAuth. Os tokens pessoais permitem a autenticação como um usuário com um conjunto limitado de permissões semelhante ao OAuth.
- Faça login no GitHub.
- No canto superior direito, clique na sua foto do perfil. Será exibido um menu suspenso.
- Clique em Configurações.
- Clique em Configurações do desenvolvedor.
- Clique em Tokens de acesso pessoal.
- Clique em Gerar token de acesso pessoal.
- No campo Observação, insira "Tutorial do Cloud Search".
- Marque o escopo public_repo.
- Clique em Gerar token.
- Anote o token gerado. Ele é usado pelo conector para chamar as APIs do GitHub e fornece cota de API para realizar a indexação.
Configurar o conector
Depois de criar as credenciais e a fonte de dados, atualize a configuração do conector para incluir esses valores:
- Na linha de comando, mude o diretório para
cloud-search-samples/end-to-end/connector/. - Abra o arquivo
sample-config.propertiescom um editor de texto. - Defina o parâmetro
api.serviceAccountPrivateKeyFilecomo o caminho do arquivo das credenciais de serviço que você baixou anteriormente. - Defina o parâmetro
api.sourceIdcomo o ID da fonte de dados que você criou anteriormente. - Defina o parâmetro
github.usercomo seu nome de usuário do GitHub. - Defina o parâmetro
github.tokencomo o token de acesso que você criou anteriormente. - Salve o arquivo.
Atualizar o esquema
O conector indexa conteúdo estruturado e não estruturado. Antes de indexar os dados, é necessário atualizar o esquema da fonte de dados. Execute o comando a seguir para atualizar o esquema:
mvn exec:java -Dexec.mainClass=com.google.cloudsearch.tutorial.SchemaTool \
-Dexec.args="-Dconfig=sample-config.properties"
Executar o conector
Para executar o conector e começar a indexação, execute o comando:
mvn exec:java -Dexec.mainClass=com.google.cloudsearch.tutorial.GithubConnector \
-Dexec.args="-Dconfig=sample-config.properties"
A configuração padrão do conector é indexar um único repositório na organização googleworkspace. A indexação do repositório leva cerca de 1 minuto.
Após a indexação inicial, o conector continua a pesquisar mudanças no repositório que precisam ser refletidas no índice do Cloud Search.
Como revisar o código
As seções restantes examinam como o conector é criado.
Como iniciar o aplicativo
O ponto de entrada do conector é a classe GithubConnector. O
main método instancia o IndexingApplication
do SDK e o inicia.
O ListingConnector
fornecido pelo SDK implementa uma estratégia de traversal
que aproveita as filas do Cloud Search
para rastrear o estado dos itens no índice. Ele delega ao GithubRepository, implementado pelo conector de amostra, para acessar o conteúdo do GitHub.
Como percorrer os repositórios do GitHub
Durante as traversals completas, o getIds()
método é chamado para enviar itens que podem precisar ser indexados para a fila.
O conector pode indexar vários repositórios ou organizações. Para minimizar o impacto de uma falha, um repositório do GitHub é percorrido por vez. Um checkpoint é retornado com os resultados da traversal que contém a lista de repositórios a serem indexados em chamadas subsequentes para getIds(). Se ocorrer um erro, a indexação será retomada no repositório atual em vez de começar do início.
O método collectRepositoryItems() processa a traversal de um único repositório do GitHub. Esse método retorna uma coleção de ApiOperations
que representa os itens a serem enviados para a fila. Os itens são enviados como um nome de recurso e um valor de hash que representa o estado atual do item.
O valor de hash é usado em traversals subsequentes dos repositórios do GitHub. Esse valor fornece uma verificação leve para determinar se o conteúdo foi alterado sem precisar fazer upload de conteúdo adicional. O conector enfileira todos os itens. Se o item for novo ou o valor de hash tiver mudado, ele será disponibilizado para pesquisa na fila. Caso contrário, o item será considerado não modificado.
Processar a fila
Depois que a traversal completa é concluída, o conector começa a pesquisar na fila os itens que precisam ser indexados. O getDoc()
método é chamado para cada item extraído da fila. O método lê o item do GitHub e o converte na representação adequada para indexação.
Como o conector está sendo executado em dados ativos que podem ser alterados a qualquer momento, getDoc() também verifica se o item na fila ainda é válido e exclui do índice todos os itens que não existem mais.
Para cada um dos objetos do GitHub que o conector indexa, o método indexItem() correspondente processa a criação da representação do item para o Cloud Search. Por exemplo, para criar a representação de itens de conteúdo:
Em seguida, implante a interface de pesquisa.