Add valuesField in PercentilesAggregationBuilder streamInput constructor (#2308)

Signed-off-by: Subhobrata Dey <sbcd90@gmail.com>
This commit is contained in:
Subhobrata Dey 2022-03-07 08:51:49 -08:00 committed by GitHub
parent 4395ed560f
commit e1fd4b75b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 44 additions and 3 deletions

View File

@ -163,7 +163,7 @@ public abstract class AbstractPercentilesAggregationBuilder<T extends AbstractPe
this.valuesField = clone.valuesField;
}
AbstractPercentilesAggregationBuilder(StreamInput in) throws IOException {
AbstractPercentilesAggregationBuilder(StreamInput in, ParseField valuesField) throws IOException {
super(in);
values = in.readDoubleArray();
keyed = in.readBoolean();
@ -175,6 +175,7 @@ public abstract class AbstractPercentilesAggregationBuilder<T extends AbstractPe
PercentilesMethod method = PercentilesMethod.readFromStream(in);
percentilesConfig = PercentilesConfig.fromLegacy(method, compression, numberOfSignificantValueDigits);
}
this.valuesField = valuesField;
}
@Override

View File

@ -82,7 +82,7 @@ public class PercentileRanksAggregationBuilder extends AbstractPercentilesAggreg
}
public PercentileRanksAggregationBuilder(StreamInput in) throws IOException {
super(in);
super(in, VALUES_FIELD);
}
private PercentileRanksAggregationBuilder(

View File

@ -80,7 +80,7 @@ public class PercentilesAggregationBuilder extends AbstractPercentilesAggregatio
}
public PercentilesAggregationBuilder(StreamInput in) throws IOException {
super(in);
super(in, PERCENTS_FIELD);
}
public static AggregationBuilder parse(String aggregationName, XContentParser parser) throws IOException {

View File

@ -118,6 +118,46 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase {
}
}
public void testSerializationWithPercentilesQueryObject() throws IOException {
String restContent = "{\n"
+ " \"aggregations\": {"
+ " \"percentiles_duration\": {\n"
+ " \"percentiles\" : {\n"
+ " \"field\": \"duration\"\n"
+ " }\n"
+ " }\n"
+ " }\n"
+ "}\n";
String expectedContent = "{\"aggregations\":{"
+ "\"percentiles_duration\":{"
+ "\"percentiles\":{"
+ "\"field\":\"duration\","
+ "\"percents\":[1.0,5.0,25.0,50.0,75.0,95.0,99.0],"
+ "\"keyed\":true,"
+ "\"tdigest\":{"
+ "\"compression\":100.0"
+ "}"
+ "}"
+ "}"
+ "}}";
try (XContentParser parser = createParser(JsonXContent.jsonXContent, restContent)) {
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(parser);
try (BytesStreamOutput output = new BytesStreamOutput()) {
searchSourceBuilder.writeTo(output);
try (StreamInput in = new NamedWriteableAwareStreamInput(output.bytes().streamInput(), namedWriteableRegistry)) {
SearchSourceBuilder deserializedBuilder = new SearchSourceBuilder(in);
String actualContent = deserializedBuilder.toString();
assertEquals(expectedContent, actualContent);
assertEquals(searchSourceBuilder.hashCode(), deserializedBuilder.hashCode());
assertNotSame(searchSourceBuilder, deserializedBuilder);
}
}
}
}
public void testShallowCopy() {
for (int i = 0; i < 10; i++) {
SearchSourceBuilder original = createSearchSourceBuilder();