NAME
App::ElasticSearch::Utilities::Aggregations - Code to simplify creating and working with Elasticsearch aggregations
VERSION
version 8.8
FUNCTIONS
is_single_stat()
Returns true if an aggregation returns a single value.
expand_aggregate_string( token )
Takes a simplified aggregation grammar and expands it the full aggregation hash.
Simple Terms:
field_name
To
{
field_name
=> {
terms
=> {
field
=>
'field_name'
,
size
=> 20,
}
}
}
Alias expansion:
alias=field_name
To
{
alias
=> {
terms
=> {
field
=>
'field_name'
,
size
=> 20,
}
}
}
Parameters:
alias=field_name:10
To
{
alias
=> {
terms
=> {
field
=>
'field_name'
,
size
=> 10,
}
}
}
Parameters, k/v:
alias=field_name:size=13
To
{
alias
=> {
terms
=> {
field
=>
'field_name'
,
size
=> 13,
}
}
}
es_flatten_aggregations()
Takes the aggregations section of the query result and parses it into a flat structure so each row contains all the sub aggregation information.
It returns an array reference, containing arrray references. The individual rows of the array are ordered in a depth first fashion. The array does include a key for every value, so the array can be cast to a hash safely.
Aggregations
List of supported aggregations. Other aggregation may work, but these have defined behavior.
Bucket Aggregations
These aggregations will support sub aggregations.
- terms
-
The default aggregation if none is specified.
field_name
terms:field_name
Results in
{
"field_name"
: {
"terms"
: {
"field"
:
"field_name"
}
}
}
Supports a positional parameter: size
field_name:20
terms:field_name:20
Results in
{
"field_name"
: {
"terms"
: {
"field"
:
"field_name"
,
"size"
: 20
}
}
}
- significant_terms
-
Same as
terms
.significant_terms:field_name:10
Results in:
{
"rare_terms.field_name"
: {
"terms"
: {
"field"
:
"field_name"
,
"size"
: 10
}
}
}
- rare_terms
-
Same as
terms
but the positional parameter is themax_doc_count
.rare_terms:field_name:10
Results in:
{
"rare_terms.field_name"
: {
"terms"
: {
"field"
:
"field_name"
,
"max_doc_count"
: 10
}
}
}
- histogram
-
Creates a histogram for numeric fields. Positional parameter is the interval.
histogram:field_name:10
Results in:
{
"histogram.field_name"
: {
"histogram"
: {
"field"
:
"field_name"
,
"interval"
: 10
}
}
}
- date_histogram
-
Creates a histogram for date fields. Positional parameter is the calendar_interval.
date_histogram:field_name:1h
Results in:
{
"histogram.field_name"
: {
"histogram"
: {
"field"
:
"field_name"
,
"calendar_interval"
:
"1h"
}
}
}
- geohash_grid
-
Creates a geohash grid bucket aggregation. Positional parameter is the precision.
geohash_grid:field_name:6
Results in:
{
"geohash_grid.field_name"
: {
"geohash_grid"
: {
"field"
:
"field_name"
,
"precision"
: 6
}
}
}
- missing
-
Creates a bucket for documents missing the field. No positional parameters.
missing:field_name
Results in:
{
"missing.field_name"
: {
"missing"
: {
"field"
:
"field_name"
}
}
}
Metric Aggregations
Aggregations that generate metrics from enclosing buckets.
- avg, max, min, sum
-
Single stat metric aggregations to generate the various single statistics over the enclosing bucket.
sum:field_name
Results in
{
"sum.field_names"
: {
"sum"
: {
"field"
:
"field_name"
}
}
}
- cardinality
-
Computes the unique count of terms in a field.
cardinality:field_name
Results in
{
"cardinality.field_names"
: {
"cardinality"
: {
"field"
:
"field_name"
}
}
}
- stats
-
Runs the stats aggregation that returns min, max, avg, sum, and count.
stats:field_name
Results in
{
"stats.field_names"
: {
"stats"
: {
"field"
:
"field_name"
}
}
}
- extended_stats
-
Runs the stats aggregation that returns the same data as the
sum
aggregation plus variance, sum of squares, and standard deviation.extended_stats:field_name
Results in
{
"extended_stats.field_names"
: {
"extended_stats"
: {
"field"
:
"field_name"
}
}
}
- percentiles
-
Computes percentiles for the enclosing bucket. The positional parameter is interpretted at the percents computed. If ommitted, the percentiles computed will be: 25, 50, 75, 90.
percentiles:field_name:75,95,99
Results in
{
"percentiles.field_names"
: {
"percentiles"
: {
"field"
:
"field_name"
,
"percents"
: [ 75, 95, 99 ]
}
}
}
- geo_centroid
-
Computes center of a group of geo points. No positional parameters supported.
geo_centroid:field_name
Results in
{
"geo_centroid.field_names"
: {
"geo_centroid"
: {
"field"
:
"field_name"
}
}
}
AUTHOR
Brad Lhotsky <brad@divisionbyzero.net>
COPYRIGHT AND LICENSE
This software is Copyright (c) 2024 by Brad Lhotsky.
This is free software, licensed under:
The (three-clause) BSD License