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 Google 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 baixa as dependências necessárias para criar o conector de conteúdo e compila o código.
Criar credenciais de conta de serviço
O conector exige credenciais de 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 "Credencial" é exibida.
- Clique na lista suspensa + CRIAR CREDENCIAIS e selecione Conta de serviço. A página "Criar conta de serviço" é exibida.
- 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)" vai aparecer.
- Clique em CONCLUÍDO. A tela "Credenciais" vai aparecer.
- 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 particular" vai aparecer.
- Clique em CRIAR.
- (Opcional) Se a caixa de diálogo "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
Antes de chamar qualquer outra API do Cloud Search, é preciso inicializar o suporte de terceiros para o Google Cloud Search.
Para inicializar o suporte a terceiros no Cloud Search:
O projeto da plataforma Cloud Search contém credenciais de conta de serviço. No entanto, para inicializar o suporte a terceiros, é necessário criar credenciais de aplicativo da Web. Para instruções sobre como criar credenciais de aplicativo da Web, consulte Criar credenciais. Depois de concluir essa etapa, você terá um arquivo de ID e chave secreta do cliente.
Use o OAuth 2 Playground do Google para receber um token de acesso:
- Clique em "Configurações" e marque Usar suas próprias credenciais de autenticação.
- Insira o ID e a chave secreta do cliente da etapa 1.
- Clique em Fechar.
- No campo de escopos, digite
https://www.googleapis.com/auth/cloud_search.settingse clique em Autorizar. O OAuth 2 Playground retorna um código de autorização. - Clique em Trocar código de autorização dos tokens. Um token é retornado.
Para inicializar o suporte a terceiros no Cloud Search, use o seguinte comando curl. Substitua
[YOUR_ACCESS_TOKEN]pelo token obtido na etapa 2.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 funcionar, o corpo da resposta vai ter uma instância de
operation. Por exemplo:{ name: "operations/customers/01b3fqdm/lro/AOIL6eBv7fEfiZ_hUSpm8KQDt1Mnd6dj5Ru3MXf-jri4xK6Pyb2-Lwfn8vQKg74pgxlxjrY" }Se não funcionar, entre em contato com o suporte do Cloud Search.
Use operations.get para verificar se o suporte a terceiros foi inicializado:
curl \ 'https://cloudsearch.googleapis.com/v1/operations/customers/01b3fqdm/lro/AOIL6eBv7fEfiZ_hUSpm8KQDt1Mnd6dj5Ru3MXf-jri4xK6Pyb2-Lwfn8vQKg74pgxlxjrY?key= [YOUR_API_KEY]' \ --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \ --header 'Accept: application/json' \ --compressedQuando a inicialização de terceiros é concluída, ela contém o campo
donedefinido comotrue. Exemplo:{ name: "operations/customers/01b3fqdm/lro/AOIL6eBv7fEfiZ_hUSpm8KQDt1Mnd6dj5Ru3MXf-jri4xK6Pyb2-Lwfn8vQKg74pgxlxjrY" done: true }
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" é exibida.
- Clique em Google Workspace. A página "Administração de apps do Google Workspace" vai aparecer.
- Role a tela para baixo e clique em Cloud Search. A página "Configurações do Google Workspace" vai aparecer.
- Clique em Origens de dados de terceiros. A página "Fontes de dados" é exibida.
- Clique no + amarelo redondo. A caixa de diálogo "Adicionar nova fonte de dados" vai aparecer.
- 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 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 pessoais 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".
- Verifique 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 estes 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, atualize o esquema da fonte de dados. Execute o seguinte comando 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 iniciar 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 um minuto.
Após a indexação inicial, o conector continua pesquisando 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.
Iniciando o aplicativo
O ponto de entrada do conector é a classe GithubConnector. O método
main instancia e inicia o IndexingApplication
do SDK.
O ListingConnector
fornecido pelo SDK implementa uma estratégia de travessia
que aproveita as filas do Cloud Search
para rastrear o estado dos itens no índice. Ele delega a GithubRepository,
implementado pelo conector de amostra, para acessar conteúdo do GitHub.
Como percorrer os repositórios do GitHub
Durante as travessias completas, o método getIds()
é chamado para inserir na fila os itens que podem precisar ser indexados.
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 ponto de verificação é retornado com os resultados da travessia, contendo 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 zero.
O método collectRepositoryItems() processa a travessia 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 travessias subsequentes dos repositórios do GitHub. Esse valor oferece uma verificação simples para determinar se o conteúdo mudou sem precisar fazer upload de mais conteúdo. O conector enfileira todos os itens sem distinção. Se o item for novo ou o valor de hash tiver mudado, ele será disponibilizado para sondagem na fila. Caso contrário, o item será considerado não modificado.
Processando a fila
Depois que a traversal completa é concluída, o conector começa a fazer polling da
fila para itens que precisam ser indexados. O método getDoc()
é 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 é executado com dados ativos que podem ser alterados a qualquer momento, o getDoc() também verifica se o item na fila ainda é válido e exclui do índice os itens que não existem mais.
Para cada um dos objetos do GitHub indexados pelo conector, 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.