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