busca e análise de dados escalável em tempo-real

21
BUSCA E ANÁLISE DE DADOS ESCALÁVEL EM TEMPO-REAL Aécio Santos @aeciosan [email protected]

Upload: aecio-santos

Post on 14-Jul-2015

172 views

Category:

Software


2 download

TRANSCRIPT

Page 1: Busca e análise de dados escalável em tempo-real

BUSCA E ANÁLISE DE DADOS ESCALÁVEL EMTEMPO-REAL

Aécio Santos@aeciosan

[email protected]

Page 2: Busca e análise de dados escalável em tempo-real

Como fazer busca textual e análise de dados em tempo-real emgrandes bases dados?

Page 3: Busca e análise de dados escalável em tempo-real
Page 4: Busca e análise de dados escalável em tempo-real

BUSCA E ANÁLISE DE DADOS ESCALÁVEL EMTEMPO-REAL

Busca por termos, intervalos numéricos, datas, posicãogeográfica, relevância, etcExecução consultas ad-hoc, agregação e visualização de dadosBusca distribuída com replicação e sharding automáticosNear real-time, latência pequena, respostas em poucos ms

Page 5: Busca e análise de dados escalável em tempo-real
Page 6: Busca e análise de dados escalável em tempo-real

APIRESTJavaPythonRubyPHPJavaScript...

Page 7: Busca e análise de dados escalável em tempo-real

INDEXAÇÃO DE DOCUMENTOSAPI

PUT /{index}/{type}/{?id}

Exemplos$ curl ­XPUT 'http://localhost:9200/twitter/tweet/1' ­d '{  "user" : "aeciosan",  "post_date" : "2014­08­28T14:00:00",  "message" : "Testando o ElasticSearch"}'

$ curl ­XPUT 'http://localhost:9200/twitter/user/aeciosan' ­d '{  "user" : "aeciosan",  "bio" : "Software Engineer at Zunnit Technologies"}

Page 8: Busca e análise de dados escalável em tempo-real

RECUPERAÇÃO DE DOCUMENTOSAPI

GET /{index}/{type}/{id}

Exemplocurl ­XGET 'http://localhost:9200/twitter/tweet/1'{  "_index" : "twitter",  "_type" : "tweet",  "_id" : "1",  "_version" : 1,  "found": true,  "_source" : {    "user" : "aeciosan",    "post_date" : "2014­08­28T14:00:00",    "message" : "Testando o ElasticSearch"  }}'

Page 9: Busca e análise de dados escalável em tempo-real

BUSCAAPI

GET /{index}/_search

GET /{index}/{type}/_search

Exemplos$ curl ­XGET 'http://localhost:9200/twitter/_search?q=user:aeciosan'

$ curl ­XGET 'http://localhost:9200/twitter/tweet,user/_search?q=user:aeciosan'

$ curl ­XGET 'http://localhost:9200/_all/tweet/_search?q=message:elasticsearch'

$ curl ­XPOST 'http://localhost:9200/twitter/tweet/_search' ­d '{  "query" : {    "term" : { "message" : "elasticsearch" }  }}'

Page 10: Busca e análise de dados escalável em tempo-real

BUSCAVários de tipos de queries e filtros disponíveis

boolfuzzygeoshapemore like thisrangeregexpwildcard...

Page 11: Busca e análise de dados escalável em tempo-real

BUSCAResposta

{  [...]  "hits": [     {        "_index": "twitter",        "_type": "tweet",        "_id": "1",        "_score": 0.15342641,        "_source": {           "user": "aeciosan",           "post_date": "2014­08­28T14:00:00",           "message": "Testando o ElasticSearch"        }     },     {        "_index": "twitter",        "_type": "tweet",        "_id": "2",        "_score": 0.11506981,        "_source": {           "user": "aeciosan",           "post_date": "2014­08­28T14:01:00",           "message": "Apresentação sobre ElasticSearch no BH­TEC Talks"        }     }  ]}

Page 12: Busca e análise de dados escalável em tempo-real

AGREGAÇÕESComputações sobre os resultados de uma buscaTipos:

MetricsBucketing

Page 13: Busca e análise de dados escalável em tempo-real

EXEMPLO: DADOS698 documentos: dep_federal

POST /eleicoes2014/dep_federal{    "partido": "PARTIDO",    "nome": "NOME",    "numero": 9999,    "coligacao": "PARTIDO1 / PARTIDO2 / PARTIDO3"}

1200 documentos: dep_estadualPOST /eleicoes2014/dep_estadual{    "partido": "PARTIDO",    "nome": "NOME",    "numero": 99999,    "coligacao": "PARTIDO1 / PARTIDO2 / PARTIDO3"}

Page 14: Busca e análise de dados escalável em tempo-real

EXEMPLO 1POST /eleicoes2014/_search?q=nome:joao{   "size": 2,   "aggregations": {       "tipo_de_candidato": {           "terms": {                "field": "_type"            }       }   }}

Page 15: Busca e análise de dados escalável em tempo-real

EXEMPLO 1: RESULTADO{  [...],   "aggregations": {      "tipo_de_candidato": {         "buckets": [            {               "key": "dep_estadual",               "doc_count": 6            },            {               "key": "dep_federal",               "doc_count": 2            }         ]      }   }}

Page 16: Busca e análise de dados escalável em tempo-real

EXEMPLO 2POST /eleicoes2014/_search{ "size": 0, "aggregations": {    "tipo_de_candidato": {     "terms": {        "field": "_type"      },      "aggregations": {        "por_partido": {          "terms": {            "field": "partido",            "size":2          }        },        "por_coligacao": {          "terms": {            "field": "coligacao",            "size":2          }        },        "numero_stats": {          "stats": {            "field": "numero"          }        }      }    } }}

Page 17: Busca e análise de dados escalável em tempo-real

EXEMPLO 2: RESULTADO{  [...]   "aggregations": {      "tipo_de_candidato": {         "buckets": [            {               "key": "dep_estadual",               "doc_count": 1200,               "numero_stats": {                  "count": 1200,                  "min": 10000,                  "max": 90999,                  "avg": 36122.61666666667,                  "sum": 43347140               },               "por_partido": {                  "buckets": [                     {                        "key": "PT do B",                        "doc_count": 85                     },                     {                        "key": "PC do B",                        "doc_count": 41                     }                  ]               },               "por_coligacao": {                  "buckets": [                     {

Page 18: Busca e análise de dados escalável em tempo-real

AGREGAÇÕES DISPONÍVEISminmaxIPv4 rangeDate histogramGeo distance...

Page 19: Busca e análise de dados escalável em tempo-real

VISUALIZAÇÃO DE DADOS: KIBANA

Page 20: Busca e análise de dados escalável em tempo-real

VISUALIZAÇÃO DE DADOS: KIBANA