1679 lines
26 KiB
TypeScript
1679 lines
26 KiB
TypeScript
'use strict'
|
|
|
|
import { test } from 'tap'
|
|
import { A } from '../../dsl'
|
|
|
|
const shorthandError = new Error('This method does not support shorthand options')
|
|
|
|
test('A is a function that generates the final aggs object', t => {
|
|
t.type(A, 'function')
|
|
|
|
t.test('Basic', t => {
|
|
t.deepEqual(A({ a: 1 }, { b: 2 }, { c: 3 }), {
|
|
aggs: {
|
|
a: 1,
|
|
b: 2,
|
|
c: 3
|
|
}
|
|
})
|
|
t.end()
|
|
})
|
|
|
|
t.test('Should discard falsy values', t => {
|
|
t.deepEqual(A({ a: 1 }, false, { b: 2 }, null, { c: 3 }), {
|
|
aggs: {
|
|
a: 1,
|
|
b: 2,
|
|
c: 3
|
|
}
|
|
})
|
|
t.end()
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('A.aggs is a method to add nested aggregations', t => {
|
|
t.test('Plain agg', t => {
|
|
const main = A.main.terms('foo')
|
|
|
|
t.deepEqual(main, {
|
|
main: { terms: { field: 'foo' } }
|
|
})
|
|
|
|
const agg1 = A.sumAgg.sum('bar')
|
|
const agg2 = A.avgAgg.avg('baz')
|
|
|
|
A.main.aggs(main, agg1, agg2)
|
|
|
|
t.deepEqual(main, {
|
|
main: {
|
|
terms: { field: 'foo' },
|
|
aggs: {
|
|
sumAgg: { sum: { field: 'bar' } },
|
|
avgAgg: { avg: { field: 'baz' } }
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
t.test('Already nested agg', t => {
|
|
const main = A.main.terms('foo', A.statsAgg.stats('faz'))
|
|
|
|
t.deepEqual(main, {
|
|
main: {
|
|
terms: { field: 'foo' },
|
|
aggs: {
|
|
statsAgg: { stats: { field: 'faz' } }
|
|
}
|
|
}
|
|
})
|
|
|
|
const agg1 = A.sumAgg.sum('bar')
|
|
const agg2 = A.avgAgg.avg('baz')
|
|
|
|
A.main.aggs(main, agg1, agg2)
|
|
|
|
t.deepEqual(main, {
|
|
main: {
|
|
terms: { field: 'foo' },
|
|
aggs: {
|
|
statsAgg: { stats: { field: 'faz' } },
|
|
sumAgg: { sum: { field: 'bar' } },
|
|
avgAgg: { avg: { field: 'baz' } }
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
t.test('Should filter falsy aggs', t => {
|
|
const main = A.main.terms('foo')
|
|
|
|
t.deepEqual(main, {
|
|
main: { terms: { field: 'foo' } }
|
|
})
|
|
|
|
const agg1 = A.sumAgg.sum('bar')
|
|
const agg2 = A.avgAgg.avg('baz')
|
|
|
|
A.main.aggs(main, agg1, null, agg2, false)
|
|
|
|
t.deepEqual(main, {
|
|
main: {
|
|
terms: { field: 'foo' },
|
|
aggs: {
|
|
sumAgg: { sum: { field: 'bar' } },
|
|
avgAgg: { avg: { field: 'baz' } }
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('avg', t => {
|
|
t.deepEqual(A.aggName.avg({ field: 'foo' }), {
|
|
aggName: {
|
|
avg: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.avg('foo'), {
|
|
aggName: {
|
|
avg: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('weightedAvg', t => {
|
|
t.deepEqual(A.aggName.weightedAvg({ field: 'foo' }), {
|
|
aggName: {
|
|
weighted_avg: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.throws(
|
|
() => A.aggName.weightedAvg('foo'),
|
|
shorthandError
|
|
)
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('cardinality', t => {
|
|
t.deepEqual(A.aggName.cardinality({ field: 'foo' }), {
|
|
aggName: {
|
|
cardinality: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.cardinality('foo'), {
|
|
aggName: {
|
|
cardinality: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('extendedStats', t => {
|
|
t.deepEqual(A.aggName.extendedStats({ field: 'foo' }), {
|
|
aggName: {
|
|
extended_stats: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.extendedStats('foo'), {
|
|
aggName: {
|
|
extended_stats: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('geoBounds', t => {
|
|
t.deepEqual(A.aggName.geoBounds({ field: 'foo' }), {
|
|
aggName: {
|
|
geo_bounds: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.geoBounds('foo'), {
|
|
aggName: {
|
|
geo_bounds: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('geoCentroid', t => {
|
|
t.deepEqual(A.aggName.geoCentroid({ field: 'foo' }), {
|
|
aggName: {
|
|
geo_centroid: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.geoCentroid('foo'), {
|
|
aggName: {
|
|
geo_centroid: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('max', t => {
|
|
t.deepEqual(A.aggName.max({ field: 'foo' }), {
|
|
aggName: {
|
|
max: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.max('foo'), {
|
|
aggName: {
|
|
max: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('min', t => {
|
|
t.deepEqual(A.aggName.min({ field: 'foo' }), {
|
|
aggName: {
|
|
min: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.min('foo'), {
|
|
aggName: {
|
|
min: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('percentiles', t => {
|
|
t.deepEqual(A.aggName.percentiles({ field: 'foo' }), {
|
|
aggName: {
|
|
percentiles: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.percentiles('foo'), {
|
|
aggName: {
|
|
percentiles: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('percentileRanks', t => {
|
|
t.deepEqual(A.aggName.percentileRanks({ field: 'foo' }), {
|
|
aggName: {
|
|
percentile_ranks: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.throws(
|
|
() => A.aggName.percentileRanks('foo'),
|
|
shorthandError
|
|
)
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('scriptedMetric', t => {
|
|
t.deepEqual(A.aggName.scriptedMetric({ field: 'foo' }), {
|
|
aggName: {
|
|
scripted_metric: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.throws(
|
|
() => A.aggName.scriptedMetric('foo'),
|
|
shorthandError
|
|
)
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('stats', t => {
|
|
t.deepEqual(A.aggName.stats({ field: 'foo' }), {
|
|
aggName: {
|
|
stats: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.stats('foo'), {
|
|
aggName: {
|
|
stats: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('sum', t => {
|
|
t.deepEqual(A.aggName.sum({ field: 'foo' }), {
|
|
aggName: {
|
|
sum: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.sum('foo'), {
|
|
aggName: {
|
|
sum: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('topHits', t => {
|
|
t.deepEqual(A.aggName.topHits({ field: 'foo' }), {
|
|
aggName: {
|
|
top_hits: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.throws(
|
|
() => A.aggName.topHits('foo'),
|
|
shorthandError
|
|
)
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('valueCount', t => {
|
|
t.deepEqual(A.aggName.valueCount({ field: 'foo' }), {
|
|
aggName: {
|
|
value_count: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.valueCount('foo'), {
|
|
aggName: {
|
|
value_count: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('medianAbsoluteDeviation', t => {
|
|
t.deepEqual(A.aggName.medianAbsoluteDeviation({ field: 'foo' }), {
|
|
aggName: {
|
|
median_absolute_deviation: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.medianAbsoluteDeviation('foo'), {
|
|
aggName: {
|
|
median_absolute_deviation: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('adjacencyMatrix', t => {
|
|
t.deepEqual(A.aggName.adjacencyMatrix({ field: 'foo' }), {
|
|
aggName: {
|
|
adjacency_matrix: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.throws(
|
|
() => A.aggName.adjacencyMatrix('foo'),
|
|
shorthandError
|
|
)
|
|
|
|
const agg = A.aggName.adjacencyMatrix(
|
|
{ field: 'foo' },
|
|
A.sumAgg.sum('bar'),
|
|
A.avgAgg.avg('baz')
|
|
)
|
|
t.deepEqual(agg, {
|
|
aggName: {
|
|
adjacency_matrix: {
|
|
field: 'foo'
|
|
},
|
|
aggs: {
|
|
sumAgg: {
|
|
sum: { field: 'bar' }
|
|
},
|
|
avgAgg: {
|
|
avg: { field: 'baz' }
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('autoDateHistogram', t => {
|
|
t.deepEqual(A.aggName.autoDateHistogram({ field: 'foo' }), {
|
|
aggName: {
|
|
auto_date_histogram: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.autoDateHistogram('foo'), {
|
|
aggName: {
|
|
auto_date_histogram: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
const agg = A.aggName.autoDateHistogram(
|
|
{ field: 'foo' },
|
|
A.sumAgg.sum('bar'),
|
|
A.avgAgg.avg('baz')
|
|
)
|
|
t.deepEqual(agg, {
|
|
aggName: {
|
|
auto_date_histogram: {
|
|
field: 'foo'
|
|
},
|
|
aggs: {
|
|
sumAgg: {
|
|
sum: { field: 'bar' }
|
|
},
|
|
avgAgg: {
|
|
avg: { field: 'baz' }
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('children', t => {
|
|
t.deepEqual(A.aggName.children({ type: 'foo' }), {
|
|
aggName: {
|
|
children: {
|
|
type: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.children('foo'), {
|
|
aggName: {
|
|
children: {
|
|
type: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
const agg = A.aggName.children(
|
|
{ field: 'foo' },
|
|
A.sumAgg.sum('bar'),
|
|
A.avgAgg.avg('baz')
|
|
)
|
|
t.deepEqual(agg, {
|
|
aggName: {
|
|
children: {
|
|
field: 'foo'
|
|
},
|
|
aggs: {
|
|
sumAgg: {
|
|
sum: { field: 'bar' }
|
|
},
|
|
avgAgg: {
|
|
avg: { field: 'baz' }
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('composite', t => {
|
|
t.deepEqual(A.aggName.composite({ field: 'foo' }), {
|
|
aggName: {
|
|
composite: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.throws(
|
|
() => A.aggName.composite('foo'),
|
|
shorthandError
|
|
)
|
|
|
|
const agg = A.aggName.composite(
|
|
{ field: 'foo' },
|
|
A.sumAgg.sum('bar'),
|
|
A.avgAgg.avg('baz')
|
|
)
|
|
t.deepEqual(agg, {
|
|
aggName: {
|
|
composite: {
|
|
field: 'foo'
|
|
},
|
|
aggs: {
|
|
sumAgg: {
|
|
sum: { field: 'bar' }
|
|
},
|
|
avgAgg: {
|
|
avg: { field: 'baz' }
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('dateHistogram', t => {
|
|
t.deepEqual(A.aggName.dateHistogram({ field: 'foo' }), {
|
|
aggName: {
|
|
date_histogram: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.throws(
|
|
() => A.aggName.dateHistogram('foo'),
|
|
shorthandError
|
|
)
|
|
|
|
const agg = A.aggName.dateHistogram(
|
|
{ field: 'foo' },
|
|
A.sumAgg.sum('bar'),
|
|
A.avgAgg.avg('baz')
|
|
)
|
|
t.deepEqual(agg, {
|
|
aggName: {
|
|
date_histogram: {
|
|
field: 'foo'
|
|
},
|
|
aggs: {
|
|
sumAgg: {
|
|
sum: { field: 'bar' }
|
|
},
|
|
avgAgg: {
|
|
avg: { field: 'baz' }
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('dateRange', t => {
|
|
t.deepEqual(A.aggName.dateRange({ field: 'foo' }), {
|
|
aggName: {
|
|
date_range: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.throws(
|
|
() => A.aggName.dateRange('foo'),
|
|
shorthandError
|
|
)
|
|
|
|
const agg = A.aggName.dateRange(
|
|
{ field: 'foo' },
|
|
A.sumAgg.sum('bar'),
|
|
A.avgAgg.avg('baz')
|
|
)
|
|
t.deepEqual(agg, {
|
|
aggName: {
|
|
date_range: {
|
|
field: 'foo'
|
|
},
|
|
aggs: {
|
|
sumAgg: {
|
|
sum: { field: 'bar' }
|
|
},
|
|
avgAgg: {
|
|
avg: { field: 'baz' }
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('diversifiedSampler', t => {
|
|
t.deepEqual(A.aggName.diversifiedSampler({ field: 'foo' }), {
|
|
aggName: {
|
|
diversified_sampler: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.diversifiedSampler('foo'), {
|
|
aggName: {
|
|
diversified_sampler: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
const agg = A.aggName.diversifiedSampler(
|
|
{ field: 'foo' },
|
|
A.sumAgg.sum('bar'),
|
|
A.avgAgg.avg('baz')
|
|
)
|
|
t.deepEqual(agg, {
|
|
aggName: {
|
|
diversified_sampler: {
|
|
field: 'foo'
|
|
},
|
|
aggs: {
|
|
sumAgg: {
|
|
sum: { field: 'bar' }
|
|
},
|
|
avgAgg: {
|
|
avg: { field: 'baz' }
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('filter', t => {
|
|
t.deepEqual(A.aggName.filter({ field: 'foo' }), {
|
|
aggName: {
|
|
filter: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.throws(
|
|
() => A.aggName.filter('foo'),
|
|
shorthandError
|
|
)
|
|
|
|
const agg = A.aggName.filter(
|
|
{ field: 'foo' },
|
|
A.sumAgg.sum('bar'),
|
|
A.avgAgg.avg('baz')
|
|
)
|
|
t.deepEqual(agg, {
|
|
aggName: {
|
|
filter: {
|
|
field: 'foo'
|
|
},
|
|
aggs: {
|
|
sumAgg: {
|
|
sum: { field: 'bar' }
|
|
},
|
|
avgAgg: {
|
|
avg: { field: 'baz' }
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('filters', t => {
|
|
t.deepEqual(A.aggName.filters({ field: 'foo' }), {
|
|
aggName: {
|
|
filters: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.throws(
|
|
() => A.aggName.filters('foo'),
|
|
shorthandError
|
|
)
|
|
|
|
const agg = A.aggName.filters(
|
|
{ field: 'foo' },
|
|
A.sumAgg.sum('bar'),
|
|
A.avgAgg.avg('baz')
|
|
)
|
|
t.deepEqual(agg, {
|
|
aggName: {
|
|
filters: {
|
|
field: 'foo'
|
|
},
|
|
aggs: {
|
|
sumAgg: {
|
|
sum: { field: 'bar' }
|
|
},
|
|
avgAgg: {
|
|
avg: { field: 'baz' }
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('geoDistance', t => {
|
|
t.deepEqual(A.aggName.geoDistance({ field: 'foo' }), {
|
|
aggName: {
|
|
geo_distance: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.throws(
|
|
() => A.aggName.geoDistance('foo'),
|
|
shorthandError
|
|
)
|
|
|
|
const agg = A.aggName.geoDistance(
|
|
{ field: 'foo' },
|
|
A.sumAgg.sum('bar'),
|
|
A.avgAgg.avg('baz')
|
|
)
|
|
t.deepEqual(agg, {
|
|
aggName: {
|
|
geo_distance: {
|
|
field: 'foo'
|
|
},
|
|
aggs: {
|
|
sumAgg: {
|
|
sum: { field: 'bar' }
|
|
},
|
|
avgAgg: {
|
|
avg: { field: 'baz' }
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('geohashGrid', t => {
|
|
t.deepEqual(A.aggName.geohashGrid({ field: 'foo' }), {
|
|
aggName: {
|
|
geohash_grid: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.geohashGrid('foo'), {
|
|
aggName: {
|
|
geohash_grid: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
const agg = A.aggName.geohashGrid(
|
|
{ field: 'foo' },
|
|
A.sumAgg.sum('bar'),
|
|
A.avgAgg.avg('baz')
|
|
)
|
|
t.deepEqual(agg, {
|
|
aggName: {
|
|
geohash_grid: {
|
|
field: 'foo'
|
|
},
|
|
aggs: {
|
|
sumAgg: {
|
|
sum: { field: 'bar' }
|
|
},
|
|
avgAgg: {
|
|
avg: { field: 'baz' }
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('geotileGrid', t => {
|
|
t.deepEqual(A.aggName.geotileGrid({ field: 'foo' }), {
|
|
aggName: {
|
|
geotile_grid: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.geotileGrid('foo'), {
|
|
aggName: {
|
|
geotile_grid: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
const agg = A.aggName.geotileGrid(
|
|
{ field: 'foo' },
|
|
A.sumAgg.sum('bar'),
|
|
A.avgAgg.avg('baz')
|
|
)
|
|
t.deepEqual(agg, {
|
|
aggName: {
|
|
geotile_grid: {
|
|
field: 'foo'
|
|
},
|
|
aggs: {
|
|
sumAgg: {
|
|
sum: { field: 'bar' }
|
|
},
|
|
avgAgg: {
|
|
avg: { field: 'baz' }
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('global', t => {
|
|
t.deepEqual(A.aggName.global({}), {
|
|
aggName: {
|
|
global: {}
|
|
}
|
|
})
|
|
|
|
t.throws(
|
|
() => A.aggName.global('foo'),
|
|
shorthandError
|
|
)
|
|
|
|
const agg = A.aggName.global(
|
|
{ field: 'foo' },
|
|
A.sumAgg.sum('bar'),
|
|
A.avgAgg.avg('baz')
|
|
)
|
|
t.deepEqual(agg, {
|
|
aggName: {
|
|
global: {
|
|
field: 'foo'
|
|
},
|
|
aggs: {
|
|
sumAgg: {
|
|
sum: { field: 'bar' }
|
|
},
|
|
avgAgg: {
|
|
avg: { field: 'baz' }
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('histogram', t => {
|
|
t.deepEqual(A.aggName.histogram({ field: 'foo' }), {
|
|
aggName: {
|
|
histogram: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.throws(
|
|
() => A.aggName.histogram('foo'),
|
|
shorthandError
|
|
)
|
|
|
|
const agg = A.aggName.histogram(
|
|
{ field: 'foo' },
|
|
A.sumAgg.sum('bar'),
|
|
A.avgAgg.avg('baz')
|
|
)
|
|
t.deepEqual(agg, {
|
|
aggName: {
|
|
histogram: {
|
|
field: 'foo'
|
|
},
|
|
aggs: {
|
|
sumAgg: {
|
|
sum: { field: 'bar' }
|
|
},
|
|
avgAgg: {
|
|
avg: { field: 'baz' }
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('ipRange', t => {
|
|
t.deepEqual(A.aggName.ipRange({ field: 'foo' }), {
|
|
aggName: {
|
|
ip_range: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.throws(
|
|
() => A.aggName.ipRange('foo'),
|
|
shorthandError
|
|
)
|
|
|
|
const agg = A.aggName.ipRange(
|
|
{ field: 'foo' },
|
|
A.sumAgg.sum('bar'),
|
|
A.avgAgg.avg('baz')
|
|
)
|
|
t.deepEqual(agg, {
|
|
aggName: {
|
|
ip_range: {
|
|
field: 'foo'
|
|
},
|
|
aggs: {
|
|
sumAgg: {
|
|
sum: { field: 'bar' }
|
|
},
|
|
avgAgg: {
|
|
avg: { field: 'baz' }
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('missing', t => {
|
|
t.deepEqual(A.aggName.missing({ field: 'foo' }), {
|
|
aggName: {
|
|
missing: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.missing('foo'), {
|
|
aggName: {
|
|
missing: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
const agg = A.aggName.missing(
|
|
{ field: 'foo' },
|
|
A.sumAgg.sum('bar'),
|
|
A.avgAgg.avg('baz')
|
|
)
|
|
t.deepEqual(agg, {
|
|
aggName: {
|
|
missing: {
|
|
field: 'foo'
|
|
},
|
|
aggs: {
|
|
sumAgg: {
|
|
sum: { field: 'bar' }
|
|
},
|
|
avgAgg: {
|
|
avg: { field: 'baz' }
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('nested', t => {
|
|
t.deepEqual(A.aggName.nested({ path: 'foo' }), {
|
|
aggName: {
|
|
nested: {
|
|
path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.nested('foo'), {
|
|
aggName: {
|
|
nested: {
|
|
path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
const agg = A.aggName.nested(
|
|
{ field: 'foo' },
|
|
A.sumAgg.sum('bar'),
|
|
A.avgAgg.avg('baz')
|
|
)
|
|
t.deepEqual(agg, {
|
|
aggName: {
|
|
nested: {
|
|
field: 'foo'
|
|
},
|
|
aggs: {
|
|
sumAgg: {
|
|
sum: { field: 'bar' }
|
|
},
|
|
avgAgg: {
|
|
avg: { field: 'baz' }
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('parent', t => {
|
|
t.deepEqual(A.aggName.parent({ type: 'foo' }), {
|
|
aggName: {
|
|
parent: {
|
|
type: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.parent('foo'), {
|
|
aggName: {
|
|
parent: {
|
|
type: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
const agg = A.aggName.parent(
|
|
{ field: 'foo' },
|
|
A.sumAgg.sum('bar'),
|
|
A.avgAgg.avg('baz')
|
|
)
|
|
t.deepEqual(agg, {
|
|
aggName: {
|
|
parent: {
|
|
field: 'foo'
|
|
},
|
|
aggs: {
|
|
sumAgg: {
|
|
sum: { field: 'bar' }
|
|
},
|
|
avgAgg: {
|
|
avg: { field: 'baz' }
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('range', t => {
|
|
t.deepEqual(A.aggName.range({ field: 'foo' }), {
|
|
aggName: {
|
|
range: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.throws(
|
|
() => A.aggName.range('foo'),
|
|
shorthandError
|
|
)
|
|
|
|
const agg = A.aggName.range(
|
|
{ field: 'foo' },
|
|
A.sumAgg.sum('bar'),
|
|
A.avgAgg.avg('baz')
|
|
)
|
|
t.deepEqual(agg, {
|
|
aggName: {
|
|
range: {
|
|
field: 'foo'
|
|
},
|
|
aggs: {
|
|
sumAgg: {
|
|
sum: { field: 'bar' }
|
|
},
|
|
avgAgg: {
|
|
avg: { field: 'baz' }
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('reverseNested', t => {
|
|
t.deepEqual(A.aggName.reverseNested({ field: 'foo' }), {
|
|
aggName: {
|
|
reverse_nested: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.throws(
|
|
() => A.aggName.reverseNested('foo'),
|
|
shorthandError
|
|
)
|
|
|
|
const agg = A.aggName.reverseNested(
|
|
{ field: 'foo' },
|
|
A.sumAgg.sum('bar'),
|
|
A.avgAgg.avg('baz')
|
|
)
|
|
t.deepEqual(agg, {
|
|
aggName: {
|
|
reverse_nested: {
|
|
field: 'foo'
|
|
},
|
|
aggs: {
|
|
sumAgg: {
|
|
sum: { field: 'bar' }
|
|
},
|
|
avgAgg: {
|
|
avg: { field: 'baz' }
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('sampler', t => {
|
|
t.deepEqual(A.aggName.sampler({ shard_size: 42 }), {
|
|
aggName: {
|
|
sampler: {
|
|
shard_size: 42
|
|
}
|
|
}
|
|
})
|
|
|
|
t.throws(
|
|
() => A.aggName.sampler('foo'),
|
|
shorthandError
|
|
)
|
|
|
|
const agg = A.aggName.sampler(
|
|
{ field: 'foo' },
|
|
A.sumAgg.sum('bar'),
|
|
A.avgAgg.avg('baz')
|
|
)
|
|
t.deepEqual(agg, {
|
|
aggName: {
|
|
sampler: {
|
|
field: 'foo'
|
|
},
|
|
aggs: {
|
|
sumAgg: {
|
|
sum: { field: 'bar' }
|
|
},
|
|
avgAgg: {
|
|
avg: { field: 'baz' }
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('significantTerms', t => {
|
|
t.deepEqual(A.aggName.significantTerms({ field: 'foo' }), {
|
|
aggName: {
|
|
significant_terms: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.significantTerms('foo'), {
|
|
aggName: {
|
|
significant_terms: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
const agg = A.aggName.significantTerms(
|
|
{ field: 'foo' },
|
|
A.sumAgg.sum('bar'),
|
|
A.avgAgg.avg('baz')
|
|
)
|
|
t.deepEqual(agg, {
|
|
aggName: {
|
|
significant_terms: {
|
|
field: 'foo'
|
|
},
|
|
aggs: {
|
|
sumAgg: {
|
|
sum: { field: 'bar' }
|
|
},
|
|
avgAgg: {
|
|
avg: { field: 'baz' }
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('significantText', t => {
|
|
t.deepEqual(A.aggName.significantText({ field: 'foo' }), {
|
|
aggName: {
|
|
significant_text: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.significantText('foo'), {
|
|
aggName: {
|
|
significant_text: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
const agg = A.aggName.significantText(
|
|
{ field: 'foo' },
|
|
A.sumAgg.sum('bar'),
|
|
A.avgAgg.avg('baz')
|
|
)
|
|
t.deepEqual(agg, {
|
|
aggName: {
|
|
significant_text: {
|
|
field: 'foo'
|
|
},
|
|
aggs: {
|
|
sumAgg: {
|
|
sum: { field: 'bar' }
|
|
},
|
|
avgAgg: {
|
|
avg: { field: 'baz' }
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('terms', t => {
|
|
t.deepEqual(A.aggName.terms({ field: 'foo' }), {
|
|
aggName: {
|
|
terms: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.terms('foo'), {
|
|
aggName: {
|
|
terms: {
|
|
field: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
const agg = A.aggName.terms(
|
|
{ field: 'foo' },
|
|
A.sumAgg.sum('bar'),
|
|
A.avgAgg.avg('baz')
|
|
)
|
|
t.deepEqual(agg, {
|
|
aggName: {
|
|
terms: {
|
|
field: 'foo'
|
|
},
|
|
aggs: {
|
|
sumAgg: {
|
|
sum: { field: 'bar' }
|
|
},
|
|
avgAgg: {
|
|
avg: { field: 'baz' }
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('avgBucket', t => {
|
|
t.deepEqual(A.aggName.avgBucket({ buckets_path: 'foo' }), {
|
|
aggName: {
|
|
avg_bucket: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.avgBucket('foo'), {
|
|
aggName: {
|
|
avg_bucket: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('derivative', t => {
|
|
t.deepEqual(A.aggName.derivative({ buckets_path: 'foo' }), {
|
|
aggName: {
|
|
derivative: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.derivative('foo'), {
|
|
aggName: {
|
|
derivative: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('maxBucket', t => {
|
|
t.deepEqual(A.aggName.maxBucket({ buckets_path: 'foo' }), {
|
|
aggName: {
|
|
max_bucket: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.maxBucket('foo'), {
|
|
aggName: {
|
|
max_bucket: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('minBucket', t => {
|
|
t.deepEqual(A.aggName.minBucket({ buckets_path: 'foo' }), {
|
|
aggName: {
|
|
min_bucket: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.minBucket('foo'), {
|
|
aggName: {
|
|
min_bucket: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('sumBucket', t => {
|
|
t.deepEqual(A.aggName.sumBucket({ buckets_path: 'foo' }), {
|
|
aggName: {
|
|
sum_bucket: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.sumBucket('foo'), {
|
|
aggName: {
|
|
sum_bucket: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('statsBucket', t => {
|
|
t.deepEqual(A.aggName.statsBucket({ buckets_path: 'foo' }), {
|
|
aggName: {
|
|
stats_bucket: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.statsBucket('foo'), {
|
|
aggName: {
|
|
stats_bucket: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('extendedStatsBucket', t => {
|
|
t.deepEqual(A.aggName.extendedStatsBucket({ buckets_path: 'foo' }), {
|
|
aggName: {
|
|
extended_stats_bucket: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.extendedStatsBucket('foo'), {
|
|
aggName: {
|
|
extended_stats_bucket: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('percentilesBucket', t => {
|
|
t.deepEqual(A.aggName.percentilesBucket({ buckets_path: 'foo' }), {
|
|
aggName: {
|
|
percentiles_bucket: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.percentilesBucket('foo'), {
|
|
aggName: {
|
|
percentiles_bucket: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('movingAvg', t => {
|
|
t.deepEqual(A.aggName.movingAvg({ buckets_path: 'foo' }), {
|
|
aggName: {
|
|
moving_avg: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.movingAvg('foo'), {
|
|
aggName: {
|
|
moving_avg: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('movingFn', t => {
|
|
t.deepEqual(A.aggName.movingFn({ buckets_path: 'foo' }), {
|
|
aggName: {
|
|
moving_fn: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.throws(
|
|
() => A.aggName.movingFn('foo'),
|
|
shorthandError
|
|
)
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('cumulativeSum', t => {
|
|
t.deepEqual(A.aggName.cumulativeSum({ buckets_path: 'foo' }), {
|
|
aggName: {
|
|
cumulative_sum: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.cumulativeSum('foo'), {
|
|
aggName: {
|
|
cumulative_sum: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('bucketScript', t => {
|
|
t.deepEqual(A.aggName.bucketScript({ buckets_path: 'foo' }), {
|
|
aggName: {
|
|
bucket_script: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.throws(
|
|
() => A.aggName.bucketScript('foo'),
|
|
shorthandError
|
|
)
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('bucketSelector', t => {
|
|
t.deepEqual(A.aggName.bucketSelector({ buckets_path: 'foo' }), {
|
|
aggName: {
|
|
bucket_selector: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.throws(
|
|
() => A.aggName.bucketSelector('foo'),
|
|
shorthandError
|
|
)
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('bucketSort', t => {
|
|
t.deepEqual(A.aggName.bucketSort({ buckets_path: 'foo' }), {
|
|
aggName: {
|
|
bucket_sort: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.throws(
|
|
() => A.aggName.bucketSort('foo'),
|
|
shorthandError
|
|
)
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('serialDiff', t => {
|
|
t.deepEqual(A.aggName.serialDiff({ buckets_path: 'foo' }), {
|
|
aggName: {
|
|
serial_diff: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.serialDiff('foo'), {
|
|
aggName: {
|
|
serial_diff: {
|
|
buckets_path: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|
|
|
|
test('matrixStats', t => {
|
|
t.deepEqual(A.aggName.matrixStats({ fields: 'foo' }), {
|
|
aggName: {
|
|
matrix_stats: {
|
|
fields: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.deepEqual(A.aggName.matrixStats('foo'), {
|
|
aggName: {
|
|
matrix_stats: {
|
|
fields: 'foo'
|
|
}
|
|
}
|
|
})
|
|
|
|
t.end()
|
|
})
|