Skip to content

Commit 9ece56b

Browse files
committed
Add REST tests for avg/min/max/sum metric aggs (#26225)
Adds some REST tests for avg/min/max/sum metric aggregations Related to #26220
1 parent f35754c commit 9ece56b

File tree

4 files changed

+697
-0
lines changed

4 files changed

+697
-0
lines changed
Lines changed: 176 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,176 @@
1+
setup:
2+
- do:
3+
indices.create:
4+
index: test_1
5+
body:
6+
settings:
7+
number_of_replicas: 0
8+
mappings:
9+
test:
10+
properties:
11+
int_field:
12+
type : integer
13+
double_field:
14+
type : double
15+
string_field:
16+
type: keyword
17+
18+
- do:
19+
bulk:
20+
refresh: true
21+
body:
22+
- index:
23+
_index: test_1
24+
_type: test
25+
_id: 1
26+
- int_field: 1
27+
double_field: 1.0
28+
string_field: foo
29+
- index:
30+
_index: test_1
31+
_type: test
32+
_id: 2
33+
- int_field: 51
34+
double_field: 51.0
35+
string_field: foo
36+
- index:
37+
_index: test_1
38+
_type: test
39+
_id: 3
40+
- int_field: 101
41+
double_field: 101.0
42+
string_field: foo
43+
- index:
44+
_index: test_1
45+
_type: test
46+
_id: 4
47+
- int_field: 151
48+
double_field: 151.0
49+
string_field: foo
50+
51+
---
52+
"Basic test":
53+
54+
- do:
55+
search:
56+
body:
57+
aggs:
58+
the_int_avg:
59+
avg:
60+
field: int_field
61+
the_double_avg:
62+
avg:
63+
field: double_field
64+
65+
- match: { hits.total: 4 }
66+
- length: { hits.hits: 4 }
67+
- match: { aggregations.the_int_avg.value: 76.0 }
68+
- match: { aggregations.the_double_avg.value: 76.0 }
69+
70+
---
71+
"Only aggs test":
72+
73+
- do:
74+
search:
75+
body:
76+
size: 0
77+
aggs:
78+
the_int_avg:
79+
avg:
80+
field: int_field
81+
the_double_avg:
82+
avg:
83+
field: double_field
84+
85+
- match: { hits.total: 4 }
86+
- length: { hits.hits: 0 }
87+
- match: { aggregations.the_int_avg.value: 76.0 }
88+
- match: { aggregations.the_double_avg.value: 76.0 }
89+
90+
---
91+
"Filtered test":
92+
93+
- do:
94+
search:
95+
body:
96+
query:
97+
constant_score:
98+
filter:
99+
range:
100+
int_field:
101+
gte: 50
102+
aggs:
103+
the_int_avg:
104+
avg:
105+
field: int_field
106+
the_double_avg:
107+
avg:
108+
field: double_field
109+
110+
- match: { hits.total: 3 }
111+
- length: { hits.hits: 3 }
112+
- match: { aggregations.the_int_avg.value: 101.0 }
113+
- match: { aggregations.the_double_avg.value: 101.0 }
114+
115+
116+
---
117+
"Missing field with missing param":
118+
119+
- do:
120+
search:
121+
body:
122+
aggs:
123+
the_missing_avg:
124+
avg:
125+
field: foo
126+
missing: 1
127+
128+
- match: { hits.total: 4 }
129+
- length: { hits.hits: 4 }
130+
- match: { aggregations.the_missing_avg.value: 1 }
131+
132+
---
133+
"Missing field without missing param":
134+
135+
- do:
136+
search:
137+
body:
138+
aggs:
139+
the_missing_avg:
140+
avg:
141+
field: foo
142+
143+
- match: { hits.total: 4 }
144+
- length: { hits.hits: 4 }
145+
- is_false: aggregations.the_missing_avg.value
146+
147+
---
148+
"Metadata test":
149+
150+
- do:
151+
search:
152+
body:
153+
aggs:
154+
the_int_avg:
155+
meta:
156+
foo: bar
157+
avg:
158+
field: int_field
159+
160+
- match: { hits.total: 4 }
161+
- length: { hits.hits: 4 }
162+
- match: { aggregations.the_int_avg.value: 76.0 }
163+
- match: { aggregations.the_int_avg.meta.foo: "bar" }
164+
165+
---
166+
"Aggregating wrong datatype test":
167+
168+
- do:
169+
catch: request
170+
search:
171+
body:
172+
aggs:
173+
the_string_avg:
174+
avg:
175+
field: string_field
176+
Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
1+
setup:
2+
- do:
3+
indices.create:
4+
index: test_1
5+
body:
6+
settings:
7+
number_of_replicas: 0
8+
mappings:
9+
test:
10+
properties:
11+
int_field:
12+
type : integer
13+
double_field:
14+
type : double
15+
string_field:
16+
type: keyword
17+
- do:
18+
bulk:
19+
refresh: true
20+
body:
21+
- index:
22+
_index: test_1
23+
_type: test
24+
_id: 1
25+
- int_field: 1
26+
double_field: 1.0
27+
string_field: foo
28+
- index:
29+
_index: test_1
30+
_type: test
31+
_id: 2
32+
- int_field: 51
33+
double_field: 51.0
34+
string_field: foo
35+
- index:
36+
_index: test_1
37+
_type: test
38+
_id: 3
39+
- int_field: 101
40+
double_field: 101.0
41+
string_field: foo
42+
- index:
43+
_index: test_1
44+
_type: test
45+
_id: 4
46+
- int_field: 151
47+
double_field: 151.0
48+
string_field: foo
49+
---
50+
"Basic test":
51+
52+
- do:
53+
search:
54+
body:
55+
aggs:
56+
the_int_max:
57+
max:
58+
field: int_field
59+
the_double_max:
60+
max:
61+
field: double_field
62+
63+
- match: { hits.total: 4 }
64+
- length: { hits.hits: 4 }
65+
- match: { aggregations.the_int_max.value: 151.0 }
66+
- match: { aggregations.the_double_max.value: 151.0 }
67+
68+
---
69+
"Only aggs test":
70+
71+
- do:
72+
search:
73+
body:
74+
size: 0
75+
aggs:
76+
the_int_max:
77+
max:
78+
field: int_field
79+
the_double_max:
80+
max:
81+
field: double_field
82+
83+
- match: { hits.total: 4 }
84+
- length: { hits.hits: 0 }
85+
- match: { aggregations.the_int_max.value: 151.0 }
86+
- match: { aggregations.the_double_max.value: 151.0 }
87+
88+
---
89+
"Filtered test":
90+
91+
- do:
92+
search:
93+
body:
94+
query:
95+
constant_score:
96+
filter:
97+
range:
98+
int_field:
99+
lte: 60
100+
aggs:
101+
the_int_max:
102+
max:
103+
field: int_field
104+
the_double_max:
105+
max:
106+
field: double_field
107+
108+
- match: { hits.total: 2 }
109+
- length: { hits.hits: 2 }
110+
- match: { aggregations.the_int_max.value: 51.0 }
111+
- match: { aggregations.the_double_max.value: 51.0 }
112+
113+
114+
---
115+
"Missing field with missing param":
116+
117+
- do:
118+
search:
119+
body:
120+
aggs:
121+
the_missing_max:
122+
max:
123+
field: foo
124+
missing: 1
125+
126+
- match: { hits.total: 4 }
127+
- length: { hits.hits: 4 }
128+
- match: { aggregations.the_missing_max.value: 1 }
129+
130+
---
131+
"Missing field without missing param":
132+
133+
- do:
134+
search:
135+
body:
136+
aggs:
137+
the_missing_max:
138+
max:
139+
field: foo
140+
141+
- match: { hits.total: 4 }
142+
- length: { hits.hits: 4 }
143+
- is_false: aggregations.the_missing_max.value
144+
145+
---
146+
"Metadata test":
147+
148+
- do:
149+
search:
150+
body:
151+
aggs:
152+
the_int_max:
153+
meta:
154+
foo: bar
155+
max:
156+
field: int_field
157+
158+
- match: { hits.total: 4 }
159+
- length: { hits.hits: 4 }
160+
- match: { aggregations.the_int_max.value: 151.0 }
161+
- match: { aggregations.the_int_max.meta.foo: "bar" }
162+
163+
---
164+
"Aggregating wrong datatype test":
165+
166+
- do:
167+
catch: request
168+
search:
169+
body:
170+
aggs:
171+
the_string_avg:
172+
avg:
173+
field: string_field

0 commit comments

Comments
 (0)