Recentemente eu criei um artigo apresentando o Elasticsearch. Hoje irei demonstrar como criar um ambiente com Elasticsearch utilizando o Docker. Caso tenha interesse em ler meu primeiro artigo, segue o link:
O primeiro passo será baixar a imagem do Elastic. Para isso, abra um terminal no seu computador e execute o comando abaixo:
docker pull docker.elastic.co/elasticsearch/elasticsearch
Assim que o comando finalizar, execute docker images para verificar se a imagem está no seu host. Abaixo você tem uma imagem demonstrando esse passo:

Agora, para rodar o Elastic em um container, execute o comando abaixo no seu terminal:
docker run --restart=always -d --name elasticsearch -p 9200:9200 -e "http.host=0.0.0.0" -e "transport.host=127.0.0.1" docker.elastic.co/elasticsearch/elasticsearch:5.5.2
Analisando a instrução acima, você tem:
- — restart=always: para que o seu container suba sempre que o Docker daemon parar por algum motivo
- -d: para que ele rode em background
- — name elasticsearch: nome do container
- -p 9200:9200: portas mapeadas do nosso host com o container
Agora execute docker ps no seu terminal para verificar se o seu container foi criado corretamente. Abaixo você tem uma imagem demonstrando esse passo:

Caso tudo esteja OK, abra no seu navegador o endereço http://localhost:9200/. Serão solicitados os dados abaixo de acesso:
user: elastic
password: changeme
Após o login você irá receber as informações abaixo, referentes a sua implementação:
Manipulando dados no Elasticsearch
Como mencionado no passo anterior, o Elastic nos permite trabalhar com apis Rest. Para que você possa ter um overview completo, vamos utilizar o curl para inserir e listar alguns dados.
Abra um terminal no seu computador e execute o comando abaixo:
curl -u elastic:changeme -XGET 'http://localhost:9200/'
Ele deve retornar os mesmos dados do passo anterior no browser.

Agora vamos enviar os nossos primeiros registros para o Elastic. Para isso, execute o comando abaixo no seu terminal:
curl -u elastic:changeme -XPUT http://localhost:9200/person/users/1?pretty -d '{ "firstname" : "Thiago", "lastname" : "Adriano" }'
Analisando o trecho de código acima e tendo como base o inicio deste artigo, você tem:
- /person: será o seu index (no modelo relacional o seu banco de dados)
- /users: será o seu type (no modelo relacional a sua tabela)
Abaixo você tem uma imagem demonstrando esse passo:

Para retornar esse registro, execute o comando abaixo no seu terminal:
curl -u elastic:changeme -XGET http://localhost:9200/person/users/1?pretty
Abaixo você tem uma imagem demonstrando esse passo:

Para deletar esse registro, execute o comando abaixo no seu terminal:
curl -u elastic:changeme -XDELETE http://localhost:9200/person/users/1?pretty
Bom, com isso nós finalizamos mais um artigo. Espero que tenham gostado, e até a próxima, pessoal!