O QUE É ELASTICSEARCH?
O ElasticSearch é o principal produto da Elastic Stack, ou ELK Stack. Essa Stack é o conjunto de ferramentas disponíveis pela Elastic para a análise de dados. Com elas podemos realizar a análise de dados, armazenamento, visualização, ingestão, busca, dentre outras funcionalidades. Dentro da Elastic Stack temos o ElasticSearch, o Logstash, o Kibana e o Beats. Cada um tem a sua funcionalidade e importância dentro da Elastic Stack porém estão sempre vinculados ao uso com o ElasticSearch.
COMO É A ESTRUTURA E O FUNCIONAMENTO DO ELASTICSEARCH?
O ElasticSearch trabalha com documentos, cada documento armazena uma informação como se fosse uma linha de uma tabela em um banco relacional. Esses documentos são armazenados nos nodes porém são agrupados em índices (os índices podem ser considerados como as tabelas dos bancos relacionais)
É possível trabalhar com quantos nodes forem necessários ou com quantos quiser, tudo depende da capacidade de armazenamento e disponibilidade de cada node.
Os índices podem ser divididos em shards, os shards são como uma divisão do índice, seria como você ter um índice de 1 terabyte e dividir em dois shards, cada shard vai armazenar 500 gigabytes daquele índice. Por default os índices vêm configurados para ter um único shard, e esse número pode ser incrementado conforme a necessidade. Fatores que podem influenciar na escolha do número de shards é o número de nodes e a capacidade de cada um, o número de queries que o ElasticSearch vai receber, o tamanho do índice, entre outros.
O ElasticSearch também permite realizar a replicação dos dados e ela já vem ativada por default, não sendo necessário nenhuma configuração para já sair usando essa funcionalidade. A replicação é feita a nível dos index e é feita utilizando os shards. Para que seja possível utilizar a replicação de dados é necessário que o cluster tenha dois nodes configurados, assim o ElasticSearch automaticamente cria um réplica de um índice que esteja armazenado no node A no node B, é possível ter quantos shards de réplicas quiser e o ElasticSearch automaticamente “espalha” eles pelos nodes disponíveis, nunca deixando um shard de réplica no mesmo node que o shard principal, assim sempre que um node não estiver disponível é garantido que terá outro node com um shard daquele index disponível.
Configurados os nodes e os index, podemos realizar as consultas no ElasticSearch. o Elastic disponibiliza toda uma API para realizar inserção de índices, update, deleção e é claro as buscas.
Quando armazenamos um índice, é importante definir o tipo de dado contido naquele índice, dados do tipo text são “quebrados” em várias palavras e na hora da busca são analisadas uma a uma, enquanto que dados do tipo keyword são armazenados com uma única palavra. Um campo do tipo text o Tokenizer vai quebrar em várias palavras e assim se você armazenar o nome como “Leonardo de Oliveira Souza” e buscar apenas por “Leonardo Souza” o ElasticSearch vai retornar o “Leonardo de Oliveira Souza”, porém se armazenar como um campo keyword ele não retornará porque o nome não será quebrado em tokens.
E aí, tem alguma dúvida sobre Elasticsearch? Conta para a gente nos comentários!