Este documento apresenta uma introdução ao Elasticsearch, cobrindo sua visão, histórico, conceitos-chave, instalação, buscas, clientes, arquitetura e considerações sobre desempenho. É dado ênfase aos processos de indexação, busca, clientes Java e arquitetura distribuída do Elasticsearch.
Introduction of Business Use-Case and Business Flowin Requirement DevelopmentKent Ishizawa
オープンコミュニティ「要求開発アライアンス」(http://www.openthology.org)の2010年6月定例会発表資料です。
Open Community "Requirement Development Alliance" 2010/06 regular meeting of the presentation materials.
Introduction of Business Use-Case and Business Flowin Requirement DevelopmentKent Ishizawa
オープンコミュニティ「要求開発アライアンス」(http://www.openthology.org)の2010年6月定例会発表資料です。
Open Community "Requirement Development Alliance" 2010/06 regular meeting of the presentation materials.
Using JSON Web Tokens for REST Authentication Mediacurrent
This session will provide an introduction to JSON Web Tokens (JWT) (https://jwt.io/introduction/), advantages over other authentication methods, and how to use it to authenticate requests to Drupal REST resources. After this session, attendees will have a better understanding of how JWTs work and will be able to set up and use JWT for authenticating REST requests in Drupal.
Les Hazlewood, Stormpath co-founder and CTO and the Apache Shiro PMC Chair demonstrates how to design a beautiful REST + JSON API. Includes the principles of RESTful design, how REST differs from XML, tips for increasing adoption of your API, and security concerns.
Presentation video: https://www.youtube.com/watch?v=5WXYw4J4QOU
More info: http://www.stormpath.com/blog/designing-rest-json-apis
Further reading: http://www.stormpath.com/blog
Sign up for Stormpath: https://api.stormpath.com/register
Stormpath is a user management and authentication service for developers. By offloading user management and authentication to Stormpath, developers can bring applications to market faster, reduce development costs, and protect their users. Easy and secure, the flexible cloud service can manage millions of users with a scalable pricing model.
Como o elasticsearch salvou minhas buscasWaldemar Neto
Como o elasticsearch salvou minhas buscas foi uma talk no evento The Developers conference em Florianopolis Santa Catarina.
Onde falo sobre o elasticsearch e tambem sobre a implementação em um caso de uso normal.
Using JSON Web Tokens for REST Authentication Mediacurrent
This session will provide an introduction to JSON Web Tokens (JWT) (https://jwt.io/introduction/), advantages over other authentication methods, and how to use it to authenticate requests to Drupal REST resources. After this session, attendees will have a better understanding of how JWTs work and will be able to set up and use JWT for authenticating REST requests in Drupal.
Les Hazlewood, Stormpath co-founder and CTO and the Apache Shiro PMC Chair demonstrates how to design a beautiful REST + JSON API. Includes the principles of RESTful design, how REST differs from XML, tips for increasing adoption of your API, and security concerns.
Presentation video: https://www.youtube.com/watch?v=5WXYw4J4QOU
More info: http://www.stormpath.com/blog/designing-rest-json-apis
Further reading: http://www.stormpath.com/blog
Sign up for Stormpath: https://api.stormpath.com/register
Stormpath is a user management and authentication service for developers. By offloading user management and authentication to Stormpath, developers can bring applications to market faster, reduce development costs, and protect their users. Easy and secure, the flexible cloud service can manage millions of users with a scalable pricing model.
Como o elasticsearch salvou minhas buscasWaldemar Neto
Como o elasticsearch salvou minhas buscas foi uma talk no evento The Developers conference em Florianopolis Santa Catarina.
Onde falo sobre o elasticsearch e tambem sobre a implementação em um caso de uso normal.
DevCommerce Conference 2016: Big data com Elastic SearchiMasters
Roger Mattos, Co-Founder & CTO da Social Miner e
Leandro Lustosa, Engenheiro de Software na Social Miner, palestraram sobre "Big data com Elastic Search", no DevCommerce Conference 2016.
O DevCommerce Conference 2016 aconteceu nos dias 06 e 07 de junho de 2016, no Hotel Tivoli em São Paulo-SP http://devcommerce2016.imasters.com.br/
Apresentado na Campus Party de Recife - Essa palestra tem como objetivo apresentar o Elasticsearch, um poderoso mecanismo de indexação e busca textual, através de um exemplo prático que explorar também o Logstash e o Kibana. O Logstash foi projetado para facilitar a interpretação de logs de distintas fontes e formatos, e sua indexação no Elasticsearch. O Kibana, simplifica a análise dos logs armazenados no Elasticsearch através da criação de dashboards e gráficos. Juntos essas ferramentas formam o ELK, cujo caso de uso principal é gerenciar logs de sistemas de uma maneira simples e eficiente. Assim, nessa palestra serão apresentados os conceitos principais do Elasticsearch e como os componentes ELK se encaixam numa aplicação prática.
Quando uma aplicação começa a ficar grande e complexa, fazer buscas nos seus models torna-se uma tarefa complicada. Efetuar as buscas diretamente no banco de dados é um processo lento, ineficiente e que permite pouca ou nenhuma maleabilidade sobre a forma com que a busca é feita. Surge então o ElasticSearch, uma engine de busca utilizada por empresas como Github, Twitter e 4square para indexar e buscar literalmente milhões de documentos em tempo real. Nessa palestra, explicarei quando, como e porque utilizar o ElasticSearch para facilmente indexar e efetuar buscas complexas nos seus models.
Analisando eventos de forma inteligente para detecção de intrusos usando ELKSegInfo
Palestra ministrada na 12ª edição do H2HC (Hackers To Hackers Conference)
Analisando eventos de forma inteligente para Detecção de Intrusos usando ELK (Elasticsearch, Logstash, Kibana)
Logs, logs e mais logs é o que mais encontramos no nosso dia a dia, seja simples informações do sistema, como produtos e caixa mágicas. A grande questão é como usar essas informações de forma inteligente para que isso não se transforme num lixão eletrônico apenas, ou seja, não somente um monte de dados crus e sim dados trabalhados com a sua necessidade.
A ideia dessa palestra é demonstrar como podemos com open source, utilizando ou não produtos comerciais e um pouco de análise podemos obter ótimos resultados, criando um ciclo para adição de fonte de dados úteis, extraindo dela o máximo possível para detectar ameaças relativas ao seu ambiente.
Apresentação realizada no dia 8/11/2014 no evento TchêLinux Bento Gonçalves edição 2014 - http://bento.tchelinux.org
Falei sobre os conceitos de bases de dados NoSQL, cases, comparações com o modelo relacional, expressões SQL x MongoDB (orientado à documentos), instalação, recursos do MongoDB, operações via console, modelagem (abordagem embedded), driver PHP, anatomia do código PHP, CRUD (Create, Read, Update and Delete), ObjectId, operadores, segurança, persistência de objetos, tratamento de arrays (documentos aninhados), índices (performance), projeção, agregação, hospedagem, ferramentas de administração e programa de certificação.
Apresentação introdutória sobre a MEAN Stack, contando com o desenvolvimento, passo-a-passo, de uma aplicação simples.
Apresentação para o JSDay Campina Grande.
Muitas vezes quando desenvolvemos aplicações de escaláveis hoje em dia, acabamos atrelando parte deles a uma nuvem especifica. Porém isso traz problemas para como vendor lock-in, dificuldade de rodar em ambiente local, falta de portabilidade e entre outros problemas. E existem serviços em comum que são acessados em nuvem como Banco de Dados, Filas de Mensageria, Armazenamento de arquivo, logs, tracing e que poderiam ser abstraídos e preferencialmente intercambiáveis entre nuvens. Nessa palestra quero mostrar como desenvolver apps mais portáveis e ainda assim mantendo as vantagem de se rodar em nuvem.
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Daniel Makiyama
Slides de curso de Férias ministrado na FEI em 07/2014. 20 horas de pura introdução ao mundo do entity framework code first e Asp.Net MVC 5 com o Visual Studio Express 2013
A stack Spring ganhou bastante popularidade por causa do seu modelo de programação intuitivo, baseado em anotações e em assinaturas de métodos bem flexíveis. Nesta palestra vamos entender como usar os verbos HTTP e a stack do Spring para construir APIs RESTfu
O termo NewSQL inclui bancos de dados que prometem a escalabilidade dos NoSQL e transações ACID e linguagem SQL dos bancos de dados tradicionais. O VoltDB, desenvolvido pela equipe de Michael Stonebraker, é o principal exemplo dessa vertente. Essa palestra apresenta a experiência de uso do VoltDB, descreve benefícios de desafios do seu uso, e compara essa solução com outras ferramentas como o Apache Ignite.
Essa apresentação discute o processo de decisão realizado pela Socialbase durante a escolha do melhor framework/serviço de aprendizado de máquina. Entre as questões avaliadas estão: feature, escalabilidade, curva de aprendizado, custos e segurança.
Apresentado com Narlei Moreira e Igor Siciliani no TDC Floripa 2018.
Oficina apresentada na Escola Reginal de Banco de Dados em 2018. Essa oficina apresentou como combinar Spark, VoltDB e Elasticsearch, três tecnologias que materializam os conceitos de Big Data para alcançar velocidade de processamento para um grande volume de dados. Usando um exemplo em informação geográficas, o participante aprenderá como processar dados em tempo real usando Apache Spark, criar visualizações através do Elasticsearch e disponibilizar esses dados de forma escalável em uma ferramenta NewSQL usando o VoltDB.
Os bancos de dados NoSQL, outrora uma tendência, são atualmente a realidade no que diz respeito ao armazenamento dos grandes volumes de dados gerenciados pelas aplicações de Big Data. Contudo, a Big Data, traz também outros desafios como o acesso integrado e em tempo real a fontes variadas de informação. Embora sejam relativamente recentes na história da Ciência da Computação, em muitos aspectos os NoSQL são suportados por uma longa tradição de conceitos e ferramentas. Este fato é especialmente visível na integração de NoSQL, onde as ideias bem conhecidas, tais como federação, integração e migração ainda são válidas. Nesse sentido, esse trabalho comparou as obras mais recentes que lidam com o acesso integrado vários bancos de dados NoSQL. Tais trabalhos propõem diferentes níveis de solução, que vão desde simples integrações em nível de código até criação de modelos integrados, contudo há uma lacuna no que diz respeito ao acesso integrado, semântico e em tempo real aos repositórios NoSQL. A partir desta análise, é proposto middleware chamado Rendezvous que oferece acesso integrado considerando uma visão semântica dos dados - usando os padrões RDF e SPARQL - pertencentes a qualquer um dos principais modelos de dados NoSQL – chave-valor, colunar, documento e grafos – e permite acesso em tempo real os dados gerenciados pelo middleware Rendezvous.
4. Visão
•“flexible and powerful open source,
distributed real-time search and
analytics engine for the cloudcool. bonsai
cool”
5. Histórico
•Primeira versão lançada em 2010
•Pelo Israelense Shay Banon (https://twitter.com/kimchy)
•Código aberto em:
•https://github.com/elasticsearch/elasticsearch
•Suportado pela empresa Elasticsearch, com sede em Amsterdam
•A Elasticsearch também suporta o Kibana e o Logstash
6. Conceitos básicos
•Um mecanismo de busca textual
•Não é um banco de dados tradicional, pois:
•Não usa SQL
•Não suporta transações
•Não possui mecanismos de autenticação
•...
•É baseado no Apache Lucene, um framework Java que facilita busca
em textos
7. Conceitos básicos
•Alguns dos conceitos do ES são derivados do Lucene
•Índice (como um banco de dados)
•Documento, um texto formatado em JSON
•Campo
•Mapeamento
8. Conceitos básicos – comparação com BDR
Lucene Banco de dados relacional (BDR)
Índice (Index) Esquema
Type Tabela
Documento (JSON) Linha
Campo (Field) Coluna
Mapeamento (Mapping) Estrutura da tabela
Query DSL SQL
9. Instalação
•A instalação do ES é bastante simples:
•Baixar o zip do site:
•http://www.elasticsearch.org/overview/elkdownloads/
•Deszipar e executar:
•bin/elasticsearch
•Como serviço no Linux:
•apt-get –install elasticsearch
•yum install elasticsearch
•Para verificar se está executando:
•sudo /etc/init.d/elasticsearch start
•curl http://127.0.0.1:9200
•sudo /etc/init.d/elasticsearch stop
10. Instalação
•/etc/elasticsearch/bin: contém os scripts binários para iniciar e parar
cada nó, usando o comando /bin/elasticsearch start;
•/etc/elasticsearch/conf: contém arquivos de configuração, como o
elasticsearch.yml e o logging.yml;
•/etc/default/elasticseach: que contém as variáveis de ambiente como
tamanho de heap, e quantidade de descritores de arquivos;
•/var/lib/elasticsearch/data: onde se localiza os arquivos de dados
para cada índice, shard alocado para cada nó;
•/var/log/elasticsearch: onde fica os arquivos de log, incluindo o log de
uso e o slowlog;
•/usr/share/elasticsearch/plugins: onde localiza-se os arquivos de
plug-n, sendo que cada plug-in fica contido em um subdiretório
11. Comandos básicos
•O que podemos fazer com o ES?
•Criar índice
•Criar mapeamento
•Inserir documento
•Recuperar documento
•Alterar documento
•Excluir documento
12. Vamos usar o Sense
•Ótimo plugin para testar comandos:
13. Criar um índice
•Forma mais simples:
•PUT /goodname
•Podemos também adicionar configurações na criação desse índice:
PUT / goodname/{
"number_of_shards": 5,
"number_of_replicas": 1,
"analysis": {
"analyzer": {
"sinonimo": {
"tokenizer": "whitespace",
"filter": [ "lowercase", "filtro_sinonimo"]
},
...
14. Criar mapeamento
•Exemplo de criação de índice e de mapeamento:
POST /goodname/processo/_mapping
{
"processo": {
...(mostrar arquivo)
}
}
15. Indexar documentos
POST /goodname/processo/1
{
“numero" : “49484/2010",
“interessado" : “CAMARA MUNICIPAL DE NOVA OLIMPIA",
“descricao" : “REPRESENTACAO REF IRREGULARIDADES DA ATUAL
GESTAO, NO QUE SE REFERE AO USO INDEVIDO DE CARRO PARA ATENDER
INTERESSES PESSOAIS/MULTAS DE TRANSITO RECOLHIDAS COM RECURSOS
PUBLICOS, ETC"
}
POST /goodname/processo/2
{
“numero" : “154440/2002",
“relator" : “ANTONIO JOAQUIM",
“descricao" : “CONTRATO Nº 023/C/2002, A PRESTACAO DE
SERVICOS DE MAO DE OBRA NOS CARROS OFICIAIS DA SEDUC NO VALOR DE R$
30. Clientes
•O cliente Java permite, por exemplo:
•Realizar buscas
•Criar índice
•Criar mapeamentos
•Verificar estado dos nós
•Realizar atividades de manutenção
31. Criar um cliente
•Definir
•Nome do cluster
•Endereços de rede
•IMPORTANTE:
•Todos nós do cluster devem ser adicionados ao cliente, isto garante:
•Round-Robin
•O cliente irá procurar os nós disponíveis
36. Curator
•É um script escrito em python, que permite gerenciar os índices do ES
•https://github.com/elasticsearch/curator
•Instalação:
•Instalar pip, gerenciador de pacotes do python, se a máquina tem Python
2.7.9 ou mais novo, o pip já está instalador
•# yum -y install python-pip
•Executar
•pip install elasticsearch-curator
•Configurar o comando de exclusão abaixo para ser executado diariamente
•curator delete --older-than 7 --prefix .marvel-
•
38. Exemplo de Arquitetura Bulkload
Batch/
Scheduler
ES
1. Extração de arquivos
2. Executa
comando
3. Chamadas
bulk
39. Exemplo de Arquitetura com Java e BD
Navegador
Navegador
Navegador
Java
ES
1. HTTP
2. HTTP
3. Broadcast para o cluster:
A.Repassa a consulta para
todos os nós
B.Recebe resultados e
ordena de acordo com
score
C.Retorna para o cliente
4. IDs
5. Consulta
por IDs
6. Retorna
valores
completos
7. HTTP
40. Considerações sobre arquitetura
•Número de threads
•# nó: 3x4 (processadores): 12
•# cluster: 12x4: 48
•For count/search operations. Defaults to fixed with a size of 3x # of available processors,
queue_size of 1000.
•Thread pool
•http://10.2.0.242:9200/_cat/thread_pool
•http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/cat-thread-
pool.html
•Para recuperar as configurações
•http://10.2.0.242:9200/_cluster/settings
•Modificar apenas o tamanho da fila
PUT _cluster/settings
{
"persistent": {},
41. Considerações sobre arquitetura
•Balanceamento de shards:
•Com os valores padrão o cluster pode entrar em um estado no qual alguns
nós possuem mais shards primários que outros, como ilustrado pelo HEAD.
Nesse caso, os nós 1 e 4 vão receber muito menos chamados que os nós 2 e
3, pois não possuem nós primários.
•Para alterar isso, devemos modificar os padrões de alocação da
seguinte forma:
PUT _cluster/settings
{
"persistent": {},
"transient": {
"threadpool.search.queue_size":2000,
“cluster.routing.allocation.balance.shard”:0.8,
“cluster.routing.allocation.balance.index”:0.2
“cluster.routing.allocation.balance.primary”:0.8,
42. Considerações sobre arquitetura
•Gargalos possíveis:
•Aumentar paralelismo e concorrência:
•Número de shards
•Número de réplicas
•Aumentar o intervalo de refresh
•Criar índices diários
•Warmers
•Routing ou índice por cliente
•Slowlog
•Curator e Marvel
43. Considerações sobre arquitetura
•Index alias
•Manualmente
•PUT /nome_index_v1/_alias/nome_index/
•Java
•client.admin().indices().prepareAliases().addAlias("nome_index_v1",
"nome_index").execute().get();
44. Conclusões
•Rápida evolução
•Setembro/2014: 1.3.1
•Janeiro/2015: 1.4.2
•Instalar Inquisitor e BigDesk em produção
•Analisar desempenho de forma contínua
•Ferramentas como o Marvel
•Outras ferramentas interessantes do Elasticsearch
•Agregação
•Percolation
•Gargalo:
•Bulkload
•Uso do banco de dados
•Uso de Redis