setup: - do: indices.create: index: test_1 body: settings: number_of_replicas: 0 mappings: doc: properties: int_field: type : integer double_field: type : double string_field: type: keyword - do: bulk: refresh: true body: - index: _index: test_1 _type: doc _id: 1 - int_field: 1 double_field: 1.0 string_field: foo - index: _index: test_1 _type: doc _id: 2 - int_field: 51 double_field: 51.0 string_field: foo - index: _index: test_1 _type: doc _id: 3 - int_field: 101 double_field: 101.0 string_field: foo - index: _index: test_1 _type: doc _id: 4 - int_field: 151 double_field: 151.0 string_field: foo --- "Basic test": - do: search: body: aggs: the_int_avg: avg: field: int_field the_double_avg: avg: field: double_field - match: { hits.total: 4 } - length: { hits.hits: 4 } - match: { aggregations.the_int_avg.value: 76.0 } - match: { aggregations.the_double_avg.value: 76.0 } --- "Only aggs test": - do: search: body: size: 0 aggs: the_int_avg: avg: field: int_field the_double_avg: avg: field: double_field - match: { hits.total: 4 } - length: { hits.hits: 0 } - match: { aggregations.the_int_avg.value: 76.0 } - match: { aggregations.the_double_avg.value: 76.0 } --- "Filtered test": - do: search: body: query: constant_score: filter: range: int_field: gte: 50 aggs: the_int_avg: avg: field: int_field the_double_avg: avg: field: double_field - match: { hits.total: 3 } - length: { hits.hits: 3 } - match: { aggregations.the_int_avg.value: 101.0 } - match: { aggregations.the_double_avg.value: 101.0 } --- "Missing field with missing param": - do: search: body: aggs: the_missing_avg: avg: field: foo missing: 1 - match: { hits.total: 4 } - length: { hits.hits: 4 } - match: { aggregations.the_missing_avg.value: 1 } --- "Missing field without missing param": - do: search: body: aggs: the_missing_avg: avg: field: foo - match: { hits.total: 4 } - length: { hits.hits: 4 } - is_false: aggregations.the_missing_avg.value --- "Metadata test": - do: search: body: aggs: the_int_avg: meta: foo: bar avg: field: int_field - match: { hits.total: 4 } - length: { hits.hits: 4 } - match: { aggregations.the_int_avg.value: 76.0 } - match: { aggregations.the_int_avg.meta.foo: "bar" } --- "Aggregating wrong datatype test": - do: catch: bad_request search: body: aggs: the_string_avg: avg: field: string_field