Academy PRO: Elasticsearch Misc

Post on 14-Apr-2017

84 views 2 download

Transcript of Academy PRO: Elasticsearch Misc

Elasticsearch MiscBinary Studio Academy PRO 2016

binary-studio.com

Data aggregatio

ns

Data aggregations

● Metrics● Bucketing● Pipeline (experimental)

Metrics aggregation● avg (average value by field)

● cardinality (approximate count of distinct values)● stats● geo● sum● min● max● value_count

Metrics aggregation example

curl localhost:9200/github/repository/_search?pretty -d '{ "aggs" : { "stats_watchers" : { "stats" : { "field" : "watchers_count" } } } }'

Bucket aggregation● children

● date_range● date_histogram● filter(s)● histogram● geo● global● range● ip● terms● nested

Bucket aggregation histogram

curl localhost:9200/github/repository/_search?pretty -d '{ "aggs" : { "prices" : { "histogram" : { "field" : "forks_count", "interval" : 1000 } } } }'

Bucket aggregation termscurl localhost:9200/github/repository/_search?pretty -d '{ "aggs" : { "language" : { "terms" : { "field" : "language" } } } }'

Pipeline aggregation (experimental)● Avg bucket

● Derivative● Max bucket● Min bucket● Sum bucket● Stats bucket● Moving avg bucket● Percentiles bucket

Pipeline aggregation examplecurl localhost:9200/github/repository/_search?pretty -d '{

"aggs" : { "language_term" : { "terms" : { "field" : "language" } }, "language_avg":{ "stats_bucket": { "buckets_path": "language_term" } } } }'

Does it support sql-like JOINS?

Nope

Relationshipshandling

Relationships handling

• Application-side joins• Data denormalization• Nested objects• Parent/child relationships (1:M)

Elasticsearch

usage

Elasticsearch usages

● Enterprise search● Analytics

ELKstack

ELK stack

ELK stack data flow

Client libraries

var elasticsearch = require('elasticsearch');var client = new elasticsearch.Client({ host: 'localhost:9200'});

client.search({ index: 'github', type: 'repository', body: { query: { term: { language: 'C++' } } }}).then(function (resp) { var hits = resp.hits.hits;}, function (err) { console.trace(err.message);});

JSstarter

$clientBuilder = Elasticsearch\ClientBuilder::create();$clientBuilder->setHosts(['localhost:9200']);$client = $clientBuilder->build();$params = [ 'index' => 'github', 'type' => 'repository', 'body' => [ 'query' => [ 'term' => [ 'language' => 'C++' ] ] ]];$response = $client->search($params);print_r($response);

PHPstarter

That’sall