Academy PRO: Elasticsearch Misc

24
Elasticsearch Misc Binary Studio Academy PRO 2016 binary- studio.com

Transcript of Academy PRO: Elasticsearch Misc

Page 1: Academy PRO: Elasticsearch Misc

Elasticsearch MiscBinary Studio Academy PRO 2016

binary-studio.com

Page 2: Academy PRO: Elasticsearch Misc

Data aggregatio

ns

Page 3: Academy PRO: Elasticsearch Misc

Data aggregations

● Metrics● Bucketing● Pipeline (experimental)

Page 4: Academy PRO: Elasticsearch Misc

Metrics aggregation● avg (average value by field)

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

Page 5: Academy PRO: Elasticsearch Misc

Metrics aggregation example

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

Page 6: Academy PRO: Elasticsearch Misc

Bucket aggregation● children

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

Page 7: Academy PRO: Elasticsearch Misc

Bucket aggregation histogram

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

Page 8: Academy PRO: Elasticsearch Misc

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

Page 9: Academy PRO: Elasticsearch Misc

Pipeline aggregation (experimental)● Avg bucket

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

Page 10: Academy PRO: Elasticsearch Misc

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

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

Page 11: Academy PRO: Elasticsearch Misc

Does it support sql-like JOINS?

Page 12: Academy PRO: Elasticsearch Misc

Nope

Page 13: Academy PRO: Elasticsearch Misc

Relationshipshandling

Page 14: Academy PRO: Elasticsearch Misc

Relationships handling

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

Page 15: Academy PRO: Elasticsearch Misc

Elasticsearch

usage

Page 16: Academy PRO: Elasticsearch Misc

Elasticsearch usages

● Enterprise search● Analytics

Page 17: Academy PRO: Elasticsearch Misc

ELKstack

Page 18: Academy PRO: Elasticsearch Misc

ELK stack

Page 19: Academy PRO: Elasticsearch Misc

ELK stack data flow

Page 20: Academy PRO: Elasticsearch Misc

Client libraries

Page 22: Academy PRO: Elasticsearch Misc

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

Page 23: Academy PRO: Elasticsearch Misc

$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

Page 24: Academy PRO: Elasticsearch Misc

That’sall