3
respostas

Pesquisa com joins

Olá Thadeu Russo, Estou analisando o elastic para utilização em um projeto, porém estou com dificuldades para utilizar "joins". Seria possível eu relacionar 2 types com base em algum atributo, por exemplo, através de uma search, retornar os dados de uma pessoa e do curso que ela está participando, onde o relacionamento seria um atributo, por exemplo idCurso, um retorno como:

{
  "nome":"José Araujo",
  "curso": {
    "nome": "elastic"
  }
}

Obrigado!

3 respostas

Boa noite Adriel, do jeito que vc falou, estilo um join tradicional, pelo menos pela documentação do elastic search não vai rolar... A própria documentação sugere outras formas, acho que vale a pena dar uma olhada => https://www.elastic.co/guide/en/elasticsearch/reference/current/joining-queries.html

Adriel, queria ter dar outra perspectiva para o problema que tem já que é muito comum as pessoas olharem o elastic search e tentarem mapear comportamento de bancos SQL nele.

O que te impede de ter um índice com todos os cursos, um com todos os alunos e um com todos os alunos e seus cursos? Desde modo você não precisa de join algum, suas buscas serão extremamente rápidas e você consegue pesquisar utilizando mais de um atributo. Lembre-se que o Elasticsearch lida com documentos e não registros e é otimizado para tal. Você ter um índice com a informação denormalizada deixa seu problema trivial e faz com que você tire bem mais do Elasticsearch.

@Alberto Souza, Obrigado pelas dicas.

@Thadeu Russo, atualmente, trabalho com mapas de dados e utilizo o MongoDB para persistir os dados.

Porém para volumes grandes, estava com problema de consumo, assim decidi mudar minha arquitetura e passei a analisar os bancos NoSQL para ver qual teria melhor performance.

Todos os meus dados são armazenados em mapas, porém o usuário pode realizar uma pesquisa que faça a junção das informações em um único mapa (Relatórios e etc).

Acredito que sua sugestão possa resolver este problema, vou analisar.

Muito obrigado pelo suporte!!!

Abraço!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software