Este projeto foi desenvolvido durante a resolução do desafio proposto pela start-up Akiry com o intuito de promover uma compreensão maior de como funciona o desenvolvimento back-end utilizando as ferramentas descritas abaixo.
Servidor de busca de dados sobre filmes. Onde é possível cadastrar informações e fazer buscas personalizadas
- Node.js versão 8.11.3 ou superior.
- Elasticsearch versão 6.3.1 ou superior.
-
Para o exemplo foi utilizado a base MovieLens 100k (ml100k), com dados de 100 mil filmes e reviews.
-
Mais especificamente, apenas o arquivo u.item foi utilizado, já que ele contem os campos "title", "year" e "genre" dos filmes.
-
Para converter o arquivo para o formato JSON se utiliza o executavel conversor.exe discriminado em main.c
-
Execute conversor.exe na mesmo diretório do arquivo u.item e um arquivo com nome de movie.json será criado. Posteriormente esse arquivo será utilizado para povoar o nosso servidor de buscas
-
- Clone o repositório
- Execute o elasticsearch
- Execute o kibana (opcional)
- Abra a pasta "Akiry_server/app" no seu terminal
- Execute os seguintes comandos:
npm init
npm install
npm start
A aplicação é composta pelas seguintes rotas que podem ser testadas no Postman:
-
POST /movies
Deve receber no request body um array de objetos JSON no seguinte formato:
[ { "title": "Title 1", "year": 1998, "genres": [ "Comedy", "Action" ] }, { "title": "Title 2", ... }, ... ]
- Copie e utilize o conteúdo do arquivo movie.json
- Dessa forma os dados estão indexados no elasticsearch, como pode se observar em
http://localhost:5601
caso esteja utilizando kibana.
-
GET /movie
Esta rota deve receber uma query com os campos
field
eq
. O campofield
determina o campo em que se está realizando a busca, eq
contém o valor que se está buscando. A query possibilita buscas pelos seguintes campos:-
Título: o valor de
field
deverá sertitle
e o valor deq
deverá ser o título. O servidor realizará uma busca pelos filmes com o título fornecido.- Exemplo:
localhost:8080/movie?field=title&q=Batman
deverá fazer uma busca por filmes com "Batman" no título.
- Exemplo:
-
Id: o valor de
field
deverá serid
e o valor deq
deverá ser o id. Caso exista o filme com o id fornecido, servidor retornará o filme em formato JSON. Caso ele não exista, o retorno é uma array vazia.- Exemplo:
localhost:8080/movie?field=id&q=1012
deverá retornar o filme de id1012
, supondo que ele existe.
- Exemplo:
-
Gênero: o valor de field deverá ser
genre
e o valor deq
deverá ser o gênero;q
pode ter múltiplos valores, significando múltiplos gêneros. O servidor retornará os filmes que se encaixem nos gêneros fornecidos pela query.- Exemplo: se eu estiver em busca de filmes de comédia romântica, usaria a rota
localhost:8080/video?field=genres&q=Action&q=Adventure
.
- Exemplo: se eu estiver em busca de filmes de comédia romântica, usaria a rota
-