Aggregations no Elasticsearch
O que podemos fazer com as aggregations no Elasticsearch 2.4. Além de uma rápida passada sobre os conceitos
agenda
-
conceitos básicos
- analysis e analyzers
- facets
- aggregations
- buckets
- metrics
- pipeline
- o que temos hoje no sistema
- o que podemos fazer
Elasticsearch is a search engine based on Lucene. It provides a full-text search engine with an HTTP web interface and schema-free JSON documents.
fonte: Wikipedia - Pode confiar ;)
Schemaless
Document Based
Inverted Index
| id | content |
|---|---|
| 1 | The quick brown fox jumped over the lazy dog |
| 2 | Quick brown foxes leap over lazy dogs in summer |
| term | doc#1 | doc#2 |
|---|---|---|
| Quick | X | |
| The | X | |
| brown | X | X |
| dogs | X | |
| dog | X | |
| fox | X | |
| foxes | X | |
| in | X | |
| jumped | X | |
| lazy | X | X |
| leap | X | |
| over | X | X |
| quick | X | |
| summer | X | |
| the | X |
quick brown
| term | doc#1 | doc#2 |
|---|---|---|
| brown | X | |
| quick | X | X |
| total | 2 | 1 |
Analysis and Analyzers
Analysis
É o processo de quebrar um bloco de texto em diversos termos únicos utilizando-se dos analyzers e aplicando.
Analyzers
É um conjunto de ações utilizados para criar os índices e filtrá-los.
3 Passos
Character Filter
É um conjunto de ações utilizados para criar os índices e filtrá-los.
Banana <b>elétrica</b> & caixa d'água são os produtos da nova geração
Banana elétrica e caixa d’água são os produtos da nova geração
Tokenizer
Cria os tokens utilizando as estratégias especificadas
Banana elétrica e caixa d’água são os produtos da nova geração
Banana | elétrica | e | caixa | d’água | são | os | produtos | da | nova | geração
Token Filters
Aplica algumas regras para melhorar os tokens gerados
Banana | elétrica | e | caixa | d’água | são | os | produtos | da | nova | geração
banana | eletrica | e | caixa | reservatorio | dagua | sao | os | produtos | da | nova | geracao | era
Facets
Facets
Facets provide aggregated data based on a search query. In the simplest case, a terms facet can return facet counts for various facet values for a specific field. Elasticsearch supports more facet implementations, such as statistical or date histogram facets.
Não aceita múltiplos níveis =(
Aggregations
Aggregations
The aggregations framework helps provide aggregated data based on a search query. It is based on simple building blocks called aggregations, that can be composed in order to build complex summaries of the data.
Estrutura
{
"aggregations" : {
"<aggregation_name>" : {
"<aggregation_type>" : {
<aggregation_body>
},
["aggregations" : { [<sub_aggregation>]* } ]
}
[,"<aggregation_name_2>" : { ... } ]*
}
}3 pontos chaves
Buckets
É a criação de um conjunto de documentos, separados por uma ou mais regras.
{
"aggs": {
"favorite_hobbies": {
"terms": {
"field": "hobbie"
}
}
}
}Metrics
São alguns dados matemáticos que podemos computar de um conjunto de documentos.
{
"aggs": {
"age_avg": {
"avg": {
"field": "age"
}
}
}
}Pipeline
Trabalha com a saída geradas pelas outras aggregations e as métricas associadas a elas ao invés de usar os documentos.
{
"aggs" : {
"sales_per_month" : {
"date_histogram" : {
"field" : "date",
"interval" : "month"
},
"aggs": {
"sales": {
"sum": {
"field": "price"
}
}
}
},
"max_monthly_sales": {
"max_bucket": {
"buckets_path": "sales_per_month>sales"
}
}
}
}Um pouco de prática para entender o fluxo
Possibilidades
O que mais podemos fazer com essa tal liberdade aggregation?
Metrics
- soma
- top hits
- percentis
- script
- ...
- média
- min
- max
- estatística
- geolocalização
Buckets
- global
- IPv4 range
- missing
- nested
- reverse nested
- significant terms
- children
- histogramas e range inclusive por data
- filter
- estatística
- geolocalização
Pipeline
Similar aos da Metrics
Alguns exemplos
Como funciona a query da nossa página de listagem de produtos hoje
Vlw! Flw!
Aggregations no Elasticsearch
By Ricardo Plansky Jr.
Aggregations no Elasticsearch
O que podemos fazer com as aggregations no Elasticsearch 2.4. Além de uma rápida passada sobre os conceitos
- 349