Recentemente, quando estava explorando nossa documentação para me familiarizar com os recursos do Elasticsearch Connector 4.2, deparei-me com uma configuração chamada Pipeline. Fiquei curioso para explorar e entender o que isso significa e qual é a finalidade dessa solução. Ao fazer isso, experimentei o conector e sua configuração e gostaria de compartilhar minha experiência neste post.


Visão geral

Nesta postagem, abordaremos a replicação e a transformação de da amostra de viagem Conjunto de dados de referência do Couchbase para o Elasticsearch usando o conector do Elasticsearch e um pipeline de nó de ingestão do Elasticsearch.

Vamos dar uma olhada rápida nos diferentes componentes que usaremos ao longo desta postagem do blog.

Couchbase  é um banco de dados de documentos JSON distribuído e de código aberto. Ele expõe um armazenamento de valores-chave com escalonamento horizontal, com cache gerenciado para operações de dados em sub-milissegundos, indexadores criados especificamente para consultas eficientes e um mecanismo de consulta avançado para executar consultas do tipo SQL.

Elasticsearch é um banco de dados NoSQL distribuído de texto completo com um poderoso mecanismo de busca e análise no coração do Elastic Stack. O Elasticsearch armazena documentos em índices (às vezes chamados de Indices?) que são análogos a tabelas no mundo sql.

Pipeline de nó de ingestão é uma ferramenta poderosa que o Elasticsearch oferece para pré-processar seus documentos antes de serem indexados. Um pipeline de nó de ingestão consiste em um ou mais processadores que são executados na ordem em que são declarados. O Elasticsearch vem com um conjunto de processadores prontos para uso, mas você também pode criar um processador personalizado conforme necessário. Para obter uma lista de todos os processadores, visite a documentação aqui.

Conector Elasticsearch é uma ferramenta criada pelo Couchbase que permite a replicação de dados do Couchbase para o Elasticsearch.

Kibana é uma interface de usuário gratuita e aberta que permite visualizar os dados do Elasticsearch e navegar no Elastic Stack. O Kibana também permite o gerenciamento e a avaliação de pipelines de nós de ingestão.

Pré-requisitos e premissas

Esta postagem pressupõe que você tenha um conhecimento básico de todos os componentes listados acima e que esteja usando um computador com macOS para percorrer a ilustração.

      • Instale e configure o Couchbase Server com um conjunto de dados de amostra de viagem seguindo as instruções aqui.
      • Instalar um compatível versão do java.

Começar a usar

Abra uma nova janela de terminal e navegue até o seu diretório de usuário localizado em /Users/. Crie um novo diretório chamado Conectores. Vamos nos referir a isso como "BASE_DIR" para o restante da postagem.

 

Instalar e iniciar o Elasticsearch e o Kibana

    1. Baixar a versão mais recente do Elasticsearch e do Kibana e movê-los para o BASE_DIR. Você deverá ver dois arquivos Elasticsearch--darwin-x86_64.tar.gz e kibana--darwin-x86_64.tar.tz.
    2. Descompacte os arquivos baixados e renomeie o diretório para es e kibana

  Abra um novo terminal e navegue até BASE_DIR e depois tdigite os seguintes comandos (uma de cada vez) 

       3. Iniciar o Elasticsearch

Abra uma nova janela de terminal e navegue até o diretório BASE_DIR/es então tdigite o seguinte comando

Agora, abra um navegador da Web e navegue até http://localhost:9200Você deverá ver uma resposta como a abaixo, indicando que o servidor Elasticsearch está disponível.

Elasticsearch server status

4. Iniciar o Kibana

Abra uma nova janela de terminal e navegue até o diretório BASE_DIR/kibana  então tdigite o seguinte comando

Para ver o Kibana em ação, abra um navegador da Web e navegue até http://localhost:5601 .

Kibana status

Instalar o conector do Elasticsearch

    1. Baixar a versão mais recente do conector Elasticsearch e mova-o para o diretório BASE_DIR. No momento em que este post foi escrito, a versão mais recente do conector disponível era a 4.2.2. Você deve ter baixado um arquivo que se parece com couchbase-elasticsearch-connector-<version>.zip.
    2. Descompacte o arquivo baixado e renomeie o diretório para cbes.

Abra um novo terminal e navegue até BASE_DIR  e tdigite os seguintes comandos (uma de cada vez). Quando solicitado, digite "A" para descompactar os arquivos

Agora vamos explorar alguns dos diretórios importantes dentro de cbes

cbes installation

caixa - contém todos os utilitários de linha de comando necessários para ajudar a gerenciar os conectores.

configuração - contém o arquivo de configuração básico que pode ser usado como referência.

segredos - contém credenciais para conexão com os servidores Couchbase e Elasticsearch.

Criar pipeline de nó de ingestão do Elasticsearch

Vamos construir nosso pipeline. Vamos chamá-lo de "landmark-pipeline". Nosso pipeline irá

        • Inserir um novo campo last_update_time que será a data-hora atual.           
        • Converter os dados em UPPERCASE para o campo nome.

Usaremos dois dos processadores existentes para criar nosso pipeline de ingestão.

Processador de scripts : Executa qualquer script definido pelo linguagem de script indolor.

Processador de letras maiúsculas : Converte o valor do campo especificado em UPPERCASE

1. Abra uma nova janela de terminal e execute o seguinte comando

    O comando curl acima cria e salva uma definição de pipeline no banco de dados do Elasticsearch.
2. Abra um navegador da Web e navegue até o Kibana em http://localhost:5601. Você deve conseguir ver o pipeline que acabou de criar em Discover ->        Ingerir pipelines de nós.

Ingest Node Pipeline installed

Configurar o conector do Elasticsearch

1. Abra uma nova janela de terminal e navegue até BASE_DIR/cbes/config
2. Copie o arquivo example-connector.toml e nomeá-lo como default-connector.toml executando o seguinte comando

O Connector pressupõe a existência de um arquivo de configuração default-connector.toml e lê esse arquivo para qualquer configuração. No entanto, você também pode especificar a configuração ao implantar o conector usando a opção de linha de comando - -config. Para esta postagem, usaremos a configuração padrão.

3. Abra default-connector.toml no editor de sua escolha e modifique as seguintes definições de configuração. aqui.

 Se você quiser pular esta etapa, um arquivo de configuração modificado completo pode ser encontrado aqui.  

Dica: se esta é a primeira vez que você trabalha com o formato de arquivo de configuração TOML, consulte o excelente artigo de Nate Finch Introdução ao TOMLou o especificação oficial

 a ) Sob o [grupo] defina a chave de nome como "landmark-example-group"

               b) Sob o [elasticsearch.docStructure] defina a chave documentContentAtTopLevel como "true"  

c) Remover qualquer [[elasticsearch.type]] e substituir pelo seguinte.    

Elasticsearch Configuration

Implantar o conector do Elasticsearch

Está tudo pronto. Agora é hora de ver tudo isso em ação.

Os conectores do Elasticsearch podem ser implantados de três modos diferentes 

Solo : Esse é o modo mais simples, em que o conector é executado como um processo autônomo. O modo solo é preferível em um ambiente de baixo tráfego ou em um ambiente de desenvolvimento.

Distribuído : Nesse modo, vários conectores são executados como processos diferentes. Em um cenário em que o tráfego é de moderado a alto, esse modo é recomendado. Ao contrário do modo solo, em que apenas um processo dedicado faz todo o trabalho, em um modo distribuído há mais de um processo e cada conector é configurado independentemente para compartilhar a carga de trabalho.

Modo de operações autônomas : Isso pode ser considerado como um modo distribuído gerenciado por um serviço coordenado. O serviço coordenado cuida da descoberta do serviço e do gerenciamento da configuração. Ao contrário do modo distribuído, em que os processos precisam ser interrompidos e reiniciados antes de adicionar e remover um processo conector, o serviço coordenado distribui automaticamente a carga de trabalho quando um processo de trabalho é adicionado ou removido, mesmo em casos de falha.

Para esta postagem, implantaremos o conector em um modo Solo. Antes de iniciar o conector, vamos verificar a contagem de documentos na origem no Couchbase.

1. Abra um navegador da Web e navegue até o cluster do Couchbase, por exemplo http://127.0.0.1:8091/ui/index.html

Vá para o menu Query (Consulta) e execute a seguinte consulta

Essa consulta deve retornar a contagem de documentos no intervalo de amostras de viagens em que a chave do documento começa com "landmark_". No nosso caso, a contagem é de 4.495 documentos.

Couchbase Querybench Editor

2. Vamos iniciar nosso conector.

Abra uma nova janela de terminal e navegue até BASE_DIR/cbes diretório e tdigite o seguinte comando

O conector deve começar a copiar documentos (onde a chave do documento começa com "landmark_") do Couchbase amostra de viagem no Elasticsearch. Enquanto isso acontece, o pipeline do nó de ingestão converterá os valores do nome em maiúsculas e também criará um campo last_update_time.

3. Agora vamos verificar se as transformações desejadas foram aplicadas quando os documentos foram replicados.

Abra um novo navegador e navegue até o Kibana em http://localhost:5601

        • Navegue até Descubra -> Padrões de índice e Defina um padrão de índice. Você deverá ver a opção landmark.
        • Em seguida, navegue até Gerenciamento de índices em Descobrir -> Gerenciamento de índices. Ele deve mostrar a contagem de documentos desejada (4495).
        • Para ver o documento real com a transformação, abra uma nova janela do navegador e navegue até o Kibana em http://localhost:5601. Navegue até Discover e, no lado direito, em _source, você deverá ver ">" símbolo. Clique nele e, em seguida, clique em JSON. Você deverá ver o documento como abaixo

Results

Repetir 

Se você quiser tentar o mesmo exemplo com o mesmo conjunto de dados, mas com um processador diferente, ou se tiver encontrado um erro e quiser começar tudo de novo, é muito simples. Tudo o que você precisa fazer é 

      1. Interromper o processo que está executando o Kibana (pressione control + C) 
      2. Exclua todos os dados do Elasticsearch iniciando um novo terminal e digite o seguinte comando

   3. Interrompa o processo que está executando o conector do Elasticsearch (pressione control + C) 
   4. Cponto de verificação do conector lear, iniciando um novo terminal e digite o seguinte comando   

            5. Reinicie o Kibana, modifique o pipeline, modifique a configuração do conector conforme desejado e reinicie o conector.

Conclusão

Examinamos como usar o conector Couchbase Elasticsearch para replicar um conjunto de dados do Couchbase para o Elasticsearch em um modo solo usando um pipeline de nó de ingestão. Agora você está pronto para explorar diferentes processadores de pipeline e definições de configuração no conector Elasticsearch.

Finalmente, um "MUITO OBRIGADO" Aos meus colegas Matt Ingenthron, David Nault e Jared Casey por me ajudarem a chegar à linha de chegada deste blog!

Se você gostou deste post ou tem alguma dúvida, deixe seus comentários.

 

Autor

Postado por Arun Vijayraghavan

Arun Vijayraghavan é o principal gerente de produtos de SDK e conectores da Couchbase. Como líder de produto obcecado pelo cliente, ele se esforça para moldar o futuro dos produtos, tomando decisões críticas entre desempenho, recursos e tempo de colocação no mercado. Ele tem uma capacidade comprovada e um histórico estabelecido de mais de 20 anos de fornecimento de orientação estratégica a empresas para lançar plataformas de desenvolvedores e novos produtos, a fim de reunir a visão única de maximizar o valor comercial do produto. Arun tem dois mestrados em Física e Tecnologia da Informação.

Deixar uma resposta