diff --git a/rest-api-spec/src/main/resources/rest-api-spec/test/search.aggregation/100_avg_metric.yml b/rest-api-spec/src/main/resources/rest-api-spec/test/search.aggregation/100_avg_metric.yml new file mode 100644 index 0000000000000..5aec7f9e67c66 --- /dev/null +++ b/rest-api-spec/src/main/resources/rest-api-spec/test/search.aggregation/100_avg_metric.yml @@ -0,0 +1,176 @@ +setup: + - do: + indices.create: + index: test_1 + body: + settings: + number_of_replicas: 0 + mappings: + test: + properties: + int_field: + type : integer + double_field: + type : double + string_field: + type: keyword + + - do: + bulk: + refresh: true + body: + - index: + _index: test_1 + _type: test + _id: 1 + - int_field: 1 + double_field: 1.0 + string_field: foo + - index: + _index: test_1 + _type: test + _id: 2 + - int_field: 51 + double_field: 51.0 + string_field: foo + - index: + _index: test_1 + _type: test + _id: 3 + - int_field: 101 + double_field: 101.0 + string_field: foo + - index: + _index: test_1 + _type: test + _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: request + search: + body: + aggs: + the_string_avg: + avg: + field: string_field + diff --git a/rest-api-spec/src/main/resources/rest-api-spec/test/search.aggregation/110_max_metric.yml b/rest-api-spec/src/main/resources/rest-api-spec/test/search.aggregation/110_max_metric.yml new file mode 100644 index 0000000000000..f3134f7bc857b --- /dev/null +++ b/rest-api-spec/src/main/resources/rest-api-spec/test/search.aggregation/110_max_metric.yml @@ -0,0 +1,173 @@ +setup: + - do: + indices.create: + index: test_1 + body: + settings: + number_of_replicas: 0 + mappings: + test: + properties: + int_field: + type : integer + double_field: + type : double + string_field: + type: keyword + - do: + bulk: + refresh: true + body: + - index: + _index: test_1 + _type: test + _id: 1 + - int_field: 1 + double_field: 1.0 + string_field: foo + - index: + _index: test_1 + _type: test + _id: 2 + - int_field: 51 + double_field: 51.0 + string_field: foo + - index: + _index: test_1 + _type: test + _id: 3 + - int_field: 101 + double_field: 101.0 + string_field: foo + - index: + _index: test_1 + _type: test + _id: 4 + - int_field: 151 + double_field: 151.0 + string_field: foo +--- +"Basic test": + + - do: + search: + body: + aggs: + the_int_max: + max: + field: int_field + the_double_max: + max: + field: double_field + + - match: { hits.total: 4 } + - length: { hits.hits: 4 } + - match: { aggregations.the_int_max.value: 151.0 } + - match: { aggregations.the_double_max.value: 151.0 } + +--- +"Only aggs test": + + - do: + search: + body: + size: 0 + aggs: + the_int_max: + max: + field: int_field + the_double_max: + max: + field: double_field + + - match: { hits.total: 4 } + - length: { hits.hits: 0 } + - match: { aggregations.the_int_max.value: 151.0 } + - match: { aggregations.the_double_max.value: 151.0 } + +--- +"Filtered test": + + - do: + search: + body: + query: + constant_score: + filter: + range: + int_field: + lte: 60 + aggs: + the_int_max: + max: + field: int_field + the_double_max: + max: + field: double_field + + - match: { hits.total: 2 } + - length: { hits.hits: 2 } + - match: { aggregations.the_int_max.value: 51.0 } + - match: { aggregations.the_double_max.value: 51.0 } + + +--- +"Missing field with missing param": + + - do: + search: + body: + aggs: + the_missing_max: + max: + field: foo + missing: 1 + + - match: { hits.total: 4 } + - length: { hits.hits: 4 } + - match: { aggregations.the_missing_max.value: 1 } + +--- +"Missing field without missing param": + + - do: + search: + body: + aggs: + the_missing_max: + max: + field: foo + + - match: { hits.total: 4 } + - length: { hits.hits: 4 } + - is_false: aggregations.the_missing_max.value + +--- +"Metadata test": + + - do: + search: + body: + aggs: + the_int_max: + meta: + foo: bar + max: + field: int_field + + - match: { hits.total: 4 } + - length: { hits.hits: 4 } + - match: { aggregations.the_int_max.value: 151.0 } + - match: { aggregations.the_int_max.meta.foo: "bar" } + +--- +"Aggregating wrong datatype test": + + - do: + catch: request + search: + body: + aggs: + the_string_avg: + avg: + field: string_field diff --git a/rest-api-spec/src/main/resources/rest-api-spec/test/search.aggregation/120_min_metric.yml b/rest-api-spec/src/main/resources/rest-api-spec/test/search.aggregation/120_min_metric.yml new file mode 100644 index 0000000000000..26444bf0feb4b --- /dev/null +++ b/rest-api-spec/src/main/resources/rest-api-spec/test/search.aggregation/120_min_metric.yml @@ -0,0 +1,174 @@ +setup: + - do: + indices.create: + index: test_1 + body: + settings: + number_of_replicas: 0 + mappings: + test: + properties: + int_field: + type : integer + double_field: + type : double + string_field: + type: keyword + - do: + bulk: + refresh: true + body: + - index: + _index: test_1 + _type: test + _id: 1 + - int_field: 1 + double_field: 1.0 + string_field: foo + - index: + _index: test_1 + _type: test + _id: 2 + - int_field: 51 + double_field: 51.0 + string_field: foo + - index: + _index: test_1 + _type: test + _id: 3 + - int_field: 101 + double_field: 101.0 + string_field: foo + - index: + _index: test_1 + _type: test + _id: 4 + - int_field: 151 + double_field: 151.0 + string_field: foo +--- +"Basic test": + + - do: + search: + body: + aggs: + the_int_min: + min: + field: int_field + the_double_min: + min: + field: double_field + + - match: { hits.total: 4 } + - length: { hits.hits: 4 } + - match: { aggregations.the_int_min.value: 1.0 } + - match: { aggregations.the_double_min.value: 1.0 } + +--- +"Only aggs test": + + - do: + search: + body: + size: 0 + aggs: + the_int_min: + min: + field: int_field + the_double_min: + min: + field: double_field + + - match: { hits.total: 4 } + - length: { hits.hits: 0 } + - match: { aggregations.the_int_min.value: 1.0 } + - match: { aggregations.the_double_min.value: 1.0 } + +--- +"Filtered test": + + - do: + search: + body: + query: + constant_score: + filter: + range: + int_field: + gte: 50 + aggs: + the_int_min: + min: + field: int_field + the_double_min: + min: + field: double_field + + - match: { hits.total: 3 } + - length: { hits.hits: 3 } + - match: { aggregations.the_int_min.value: 51.0 } + - match: { aggregations.the_double_min.value: 51.0 } + + +--- +"Missing field with missing param": + + - do: + search: + body: + aggs: + the_missing_min: + min: + field: foo + missing: 1 + + - match: { hits.total: 4 } + - length: { hits.hits: 4 } + - match: { aggregations.the_missing_min.value: 1.0 } + +--- +"Missing field without missing param": + + - do: + search: + body: + aggs: + the_missing_min: + min: + field: foo + + - match: { hits.total: 4 } + - length: { hits.hits: 4 } + - is_false: aggregations.the_missing_min.value + +--- +"Metadata test": + + - do: + search: + body: + aggs: + the_int_min: + meta: + foo: bar + min: + field: int_field + + - match: { hits.total: 4 } + - length: { hits.hits: 4 } + - match: { aggregations.the_int_min.value: 1.0 } + - match: { aggregations.the_int_min.meta.foo: "bar" } + +--- +"Aggregating wrong datatype test": + + - do: + catch: request + search: + body: + aggs: + the_string_min: + min: + field: string_field + diff --git a/rest-api-spec/src/main/resources/rest-api-spec/test/search.aggregation/130_sum_metric.yml b/rest-api-spec/src/main/resources/rest-api-spec/test/search.aggregation/130_sum_metric.yml new file mode 100644 index 0000000000000..ae26ac7d30c7d --- /dev/null +++ b/rest-api-spec/src/main/resources/rest-api-spec/test/search.aggregation/130_sum_metric.yml @@ -0,0 +1,174 @@ +setup: + - do: + indices.create: + index: test_1 + body: + settings: + number_of_replicas: 0 + mappings: + test: + properties: + int_field: + type : integer + double_field: + type : double + string_field: + type: keyword + - do: + bulk: + refresh: true + body: + - index: + _index: test_1 + _type: test + _id: 1 + - int_field: 1 + double_field: 1.0 + string_field: foo + - index: + _index: test_1 + _type: test + _id: 2 + - int_field: 51 + double_field: 51.0 + string_field: foo + - index: + _index: test_1 + _type: test + _id: 3 + - int_field: 101 + double_field: 101.0 + string_field: foo + - index: + _index: test_1 + _type: test + _id: 4 + - int_field: 151 + double_field: 151.0 + string_field: foo +--- +"Basic test": + + - do: + search: + body: + aggs: + the_int_sum: + sum: + field: int_field + the_double_sum: + sum: + field: double_field + + - match: { hits.total: 4 } + - length: { hits.hits: 4 } + - match: { aggregations.the_int_sum.value: 304.0 } + - match: { aggregations.the_double_sum.value: 304.0 } + +--- +"Only aggs test": + + - do: + search: + body: + size: 0 + aggs: + the_int_sum: + sum: + field: int_field + the_double_sum: + sum: + field: double_field + + - match: { hits.total: 4 } + - length: { hits.hits: 0 } + - match: { aggregations.the_int_sum.value: 304.0 } + - match: { aggregations.the_double_sum.value: 304.0 } + +--- +"Filtered test": + + - do: + search: + body: + query: + constant_score: + filter: + range: + int_field: + gte: 50 + aggs: + the_int_sum: + sum: + field: int_field + the_double_sum: + sum: + field: double_field + + - match: { hits.total: 3 } + - length: { hits.hits: 3 } + - match: { aggregations.the_int_sum.value: 303.0 } + - match: { aggregations.the_double_sum.value: 303.0 } + + +--- +"Missing field with missing param": + + - do: + search: + body: + aggs: + the_missing_sum: + sum: + field: foo + missing: 1 + + - match: { hits.total: 4 } + - length: { hits.hits: 4 } + - match: { aggregations.the_missing_sum.value: 4.0 } + +--- +"Missing field without missing param": + + - do: + search: + body: + aggs: + the_missing_sum: + sum: + field: foo + + - match: { hits.total: 4 } + - length: { hits.hits: 4 } + - match: { aggregations.the_missing_sum.value: 0.0 } + +--- +"Metadata test": + + - do: + search: + body: + aggs: + the_int_sum: + meta: + foo: bar + sum: + field: int_field + + - match: { hits.total: 4 } + - length: { hits.hits: 4 } + - match: { aggregations.the_int_sum.value: 304.0 } + - match: { aggregations.the_int_sum.meta.foo: "bar" } + +--- +"Aggregating wrong datatype test": + + - do: + catch: request + search: + body: + aggs: + the_string_sum: + sum: + field: string_field +