Skip to content

Commit c55a9e7

Browse files
author
Przemysław Witek
authored
[Transform] Integration test for the case of empty key in the terms agg in transform (#90941)
1 parent 7d2f51b commit c55a9e7

1 file changed

Lines changed: 108 additions & 0 deletions

File tree

x-pack/plugin/transform/qa/single-node-tests/src/javaRestTest/java/org/elasticsearch/xpack/transform/integration/TransformPivotRestSpecialCasesIT.java

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,114 @@ public void testRestrictiveBucketSelector() throws Exception {
252252
verifyDestIndexHitsCount(indexName, "special_pivot_bucket_selector-10000", 10000, 41);
253253
}
254254

255+
public void testEmptyKeyInTermsAgg() throws Exception {
256+
String indexName = REVIEWS_INDEX_NAME;
257+
258+
{
259+
final Request request = new Request("PUT", indexName + "/_doc/strange-business-id-1");
260+
request.addParameter("refresh", "true");
261+
request.setJsonEntity("""
262+
{
263+
"user_id": "user_0",
264+
"business_id": ""
265+
}""");
266+
client().performRequest(request);
267+
}
268+
{
269+
final Request request = new Request("PUT", indexName + "/_doc/strange-business-id-2");
270+
request.addParameter("refresh", "true");
271+
request.setJsonEntity("""
272+
{
273+
"user_id": "user_0",
274+
"business_id": "business_x."
275+
}""");
276+
client().performRequest(request);
277+
}
278+
{
279+
final Request request = new Request("PUT", indexName + "/_doc/strange-business-id-3");
280+
request.addParameter("refresh", "true");
281+
request.setJsonEntity("""
282+
{
283+
"user_id": "user_0",
284+
"business_id": ".business_y"
285+
}""");
286+
client().performRequest(request);
287+
}
288+
{
289+
final Request request = new Request("PUT", indexName + "/_doc/strange-business-id-4");
290+
request.addParameter("refresh", "true");
291+
request.setJsonEntity("""
292+
{
293+
"user_id": "user_0",
294+
"business_id": "..."
295+
}""");
296+
client().performRequest(request);
297+
}
298+
299+
String transformIndex = "empty-terms-agg-key";
300+
String transformId = "empty-terms-agg-key";
301+
final Request createTransformRequest = new Request("PUT", getTransformEndpoint() + transformId);
302+
final String config = formatted("""
303+
{
304+
"source": {
305+
"index": "%s"
306+
},
307+
"dest": {
308+
"index": "%s"
309+
},
310+
"pivot": {
311+
"group_by": {
312+
"reviewer": {
313+
"terms": {
314+
"field": "user_id"
315+
}
316+
}
317+
},
318+
"aggregations": {
319+
"businesses": {
320+
"terms": {
321+
"field": "business_id"
322+
}
323+
}
324+
}
325+
}
326+
}""", indexName, transformIndex);
327+
createTransformRequest.setJsonEntity(config);
328+
Map<String, Object> createTransformResponse = entityAsMap(client().performRequest(createTransformRequest));
329+
assertThat(createTransformResponse.get("acknowledged"), equalTo(Boolean.TRUE));
330+
startAndWaitForTransform(transformId, transformIndex);
331+
assertTrue(indexExists(transformIndex));
332+
Map<String, Object> searchResult = getAsMap(transformIndex + "/_search?q=reviewer:user_0");
333+
long count = (Integer) XContentMapValues.extractValue("hits.total.value", searchResult);
334+
assertThat(count, is(equalTo(1L)));
335+
assertThat(XContentMapValues.extractValue("hits.hits._source.reviewer", searchResult), is(equalTo(List.of("user_0"))));
336+
assertThat(
337+
XContentMapValues.extractValue("hits.hits._source.businesses", searchResult),
338+
is(equalTo(List.of(Map.of("business_0", 278, "", 1, "business_x.", 1, ".business_y", 1, "...", 1))))
339+
);
340+
341+
{
342+
final Request request = new Request("DELETE", indexName + "/_doc/strange-business-id-1");
343+
request.addParameter("refresh", "true");
344+
client().performRequest(request);
345+
}
346+
{
347+
final Request request = new Request("DELETE", indexName + "/_doc/strange-business-id-2");
348+
request.addParameter("refresh", "true");
349+
client().performRequest(request);
350+
}
351+
{
352+
final Request request = new Request("DELETE", indexName + "/_doc/strange-business-id-3");
353+
request.addParameter("refresh", "true");
354+
client().performRequest(request);
355+
}
356+
{
357+
final Request request = new Request("DELETE", indexName + "/_doc/strange-business-id-4");
358+
request.addParameter("refresh", "true");
359+
client().performRequest(request);
360+
}
361+
}
362+
255363
private void verifyDestIndexHitsCount(String sourceIndex, String transformId, int maxPageSearchSize, long expectedDestIndexCount)
256364
throws Exception {
257365
String transformIndex = transformId;

0 commit comments

Comments
 (0)