Academy PRO: Elasticsearch Misc
-
Upload
binary-studio -
Category
Software
-
view
84 -
download
2
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
Client libraries● Java API● elasticsearch.js● Elasticsearch.Net and NEST● Elasticsearch-PHP
Checkout others 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