Agora que fizemos a instalação e garantimos que o nosso Elasticsearch está operacional, vamos entender na prática o que é um index, type e um document. Para isto, vamos começar a colocar alguns dados no nosso Elasticsearch ! Execute o comando abaixo:
curl -XPUT -H "Content-Type: application/json" http://localhost:9200/mycompany/funcionarios/1 -d '
{
"nome": "João Silva",
"idade": 19,
"endereco": "Avenida da Magia",
"hobbies": ["Tocar guitarra", "Acampar com a familia"],
"interesses": "musica"
}'
Provavelmente você recebeu uma resposta parecida com esta:
{"_index":"mycompany","_type":"funcionarios","_id":"1","_version":1,"result":"created","_shards":{"total":2,"__successful__":1,"failed":0},"created":true}
Isto significa que o nosso documento JSON foi indexado com sucesso. O verbo PUT utilizado, basicamente diz para o Elasticsearch: "guarde este documento NESTA url" (o POST se assemelha em funcionalidade, porém dizendo a frase: "guarde o documento ABAIXO desta url". Entenderemos melhor a diferença posteriormente).
Para facilitar o entedimento do conceito de index, type e document, vamos fazer uma analogia com um banco de dados SQL padrão:
MySQL | Banco de Dados | Tabela | Chave Primária | Linha | Coluna |
---|---|---|---|---|---|
Elasticsearch | Index | Type | Id | Document | Field |
------------- | mycompany | funcionarios | 1 | Documento JSON | nome, idade... |
OBS: Os termos "indexar" e "index" possuem significados diferentes no universo do Elasticsearch, e também se diferenciam do conceito de índices utilizados em Banco de Dados. Indexar no Elasticsearch é o mesmo que adicionar um documento JSON (como realizar um INSERT), e index é uma forma de separar logicamente dados de diferentes propósitos.
Ok, temos o nosso primeiro funcionário João Silva indexado no nosso index mycompany ! Vamos fazer a nossa primeira consulta:
curl -XGET http://localhost:9200/mycompany/funcionarios/_search?pretty
Com o comando acima, chamamos a API padrão de buscas do Elasticsearch _search (o parâmetro ?pretty é opcional e só serve para formatar a resposta em JSON). Como não passamos nenhum parâmetro, a API sempre nos retorna os 10 primeiros resultados encontrados, que neste caso nos trouxe apenas o João (we're hiring). Sinta-se livre para criar e consultar mais funcionários para exercitar a sintáxe :) .
Próximo: Tipos e Formas de Pesquisa