@Override public final XContentBuilder internalXContent(XContentBuilder builder, Params params) throws IOException { builder.startObject(); if (fields != null) { for (Map.Entry<String, MultiValuesSourceFieldConfig> fieldEntry : fields.entrySet()) { builder.field(fieldEntry.getKey(), fieldEntry.getValue()); } } if (format != null) { builder.field(CommonFields.FORMAT.getPreferredName(), format); } if (valueType != null) { builder.field(CommonFields.VALUE_TYPE.getPreferredName(), valueType.getPreferredName()); } doXContentBody(builder, params); builder.endObject(); return builder; }
public static <VS extends ValuesSource, T> void declareField(String fieldName, AbstractObjectParser<? extends MultiValuesSourceAggregationBuilder<VS, ?>, T> objectParser, boolean scriptable, boolean timezoneAware) { objectParser.declareField((o, fieldConfig) -> o.field(fieldName, fieldConfig.build()), (p, c) -> MultiValuesSourceFieldConfig.PARSER.apply(scriptable, timezoneAware).parse(p, null), new ParseField(fieldName), ObjectParser.ValueType.OBJECT); } }
@Override protected final MultiValuesSourceAggregatorFactory<VS, ?> doBuild(SearchContext context, AggregatorFactory<?> parent, AggregatorFactories.Builder subFactoriesBuilder) throws IOException { ValueType finalValueType = this.valueType != null ? this.valueType : targetValueType; Map<String, ValuesSourceConfig<VS>> configs = new HashMap<>(fields.size()); fields.forEach((key, value) -> { ValuesSourceConfig<VS> config = ValuesSourceConfig.resolve(context.getQueryShardContext(), finalValueType, value.getFieldName(), value.getScript(), value.getMissing(), value.getTimeZone(), format); configs.put(key, config); }); DocValueFormat docValueFormat = resolveFormat(format, finalValueType); return innerBuild(context, configs, docValueFormat, parent, subFactoriesBuilder); }
protected MultiValuesSourceAggregationBuilder(StreamInput in, ValueType targetValueType) throws IOException { super(in); assert false == serializeTargetValueType() : "Wrong read constructor called for subclass that provides its targetValueType"; this.targetValueType = targetValueType; read(in); }
@Override protected final void doWriteTo(StreamOutput out) throws IOException { if (serializeTargetValueType()) { out.writeOptionalWriteable(targetValueType); } out.writeMap(fields, StreamOutput::writeString, (o, value) -> value.writeTo(o)); out.writeOptionalWriteable(valueType); out.writeOptionalString(format); innerWriteTo(out); }
@Override protected final int doHashCode() { return Objects.hash(fields, format, targetValueType, valueType, innerHashCode()); }
protected MultiValuesSourceAggregationBuilder(StreamInput in, ValueType targetValueType) throws IOException { super(in); assert false == serializeTargetValueType() : "Wrong read constructor called for subclass that provides its targetValueType"; this.targetValueType = targetValueType; read(in); }
@Override protected final void doWriteTo(StreamOutput out) throws IOException { if (serializeTargetValueType()) { out.writeOptionalWriteable(targetValueType); } out.writeMap(fields, StreamOutput::writeString, (o, value) -> value.writeTo(o)); out.writeOptionalWriteable(valueType); out.writeOptionalString(format); innerWriteTo(out); }
@Override protected final int doHashCode() { return Objects.hash(fields, format, targetValueType, valueType, innerHashCode()); }
protected MultiValuesSourceAggregationBuilder(StreamInput in, ValueType targetValueType) throws IOException { super(in); assert false == serializeTargetValueType() : "Wrong read constructor called for subclass that provides its targetValueType"; this.targetValueType = targetValueType; read(in); }
@Override protected final void doWriteTo(StreamOutput out) throws IOException { if (serializeTargetValueType()) { out.writeOptionalWriteable(targetValueType); } out.writeMap(fields, StreamOutput::writeString, (o, value) -> value.writeTo(o)); out.writeOptionalWriteable(valueType); out.writeOptionalString(format); innerWriteTo(out); }
@Override protected final MultiValuesSourceAggregatorFactory<VS, ?> doBuild(SearchContext context, AggregatorFactory<?> parent, AggregatorFactories.Builder subFactoriesBuilder) throws IOException { ValueType finalValueType = this.valueType != null ? this.valueType : targetValueType; Map<String, ValuesSourceConfig<VS>> configs = new HashMap<>(fields.size()); fields.forEach((key, value) -> { ValuesSourceConfig<VS> config = ValuesSourceConfig.resolve(context.getQueryShardContext(), finalValueType, value.getFieldName(), value.getScript(), value.getMissing(), value.getTimeZone(), format); configs.put(key, config); }); DocValueFormat docValueFormat = resolveFormat(format, finalValueType); return innerBuild(context, configs, docValueFormat, parent, subFactoriesBuilder); }
@Override protected final int doHashCode() { return Objects.hash(fields, format, targetValueType, valueType, innerHashCode()); }
public static <VS extends ValuesSource, T> void declareField(String fieldName, AbstractObjectParser<? extends MultiValuesSourceAggregationBuilder<VS, ?>, T> objectParser, boolean scriptable, boolean timezoneAware) { objectParser.declareField((o, fieldConfig) -> o.field(fieldName, fieldConfig.build()), (p, c) -> MultiValuesSourceFieldConfig.PARSER.apply(scriptable, timezoneAware).parse(p, null), new ParseField(fieldName), ObjectParser.ValueType.OBJECT); } }
@Override public final XContentBuilder internalXContent(XContentBuilder builder, Params params) throws IOException { builder.startObject(); if (fields != null) { builder.field(CommonFields.FIELDS.getPreferredName(), fields); } if (format != null) { builder.field(CommonFields.FORMAT.getPreferredName(), format); } if (valueType != null) { builder.field(CommonFields.VALUE_TYPE.getPreferredName(), valueType.getPreferredName()); } doXContentBody(builder, params); builder.endObject(); return builder; }
@Override protected final MultiValuesSourceAggregatorFactory<VS, ?> doBuild(SearchContext context, AggregatorFactory<?> parent, AggregatorFactories.Builder subFactoriesBuilder) throws IOException { ValueType finalValueType = this.valueType != null ? this.valueType : targetValueType; Map<String, ValuesSourceConfig<VS>> configs = new HashMap<>(fields.size()); fields.forEach((key, value) -> { ValuesSourceConfig<VS> config = ValuesSourceConfig.resolve(context.getQueryShardContext(), finalValueType, value.getFieldName(), value.getScript(), value.getMissing(), value.getTimeZone(), format); configs.put(key, config); }); DocValueFormat docValueFormat = resolveFormat(format, finalValueType); return innerBuild(context, configs, docValueFormat, parent, subFactoriesBuilder); }
public static <VS extends ValuesSource, T> void declareField(String fieldName, AbstractObjectParser<? extends MultiValuesSourceAggregationBuilder<VS, ?>, T> objectParser, boolean scriptable, boolean timezoneAware) { objectParser.declareField((o, fieldConfig) -> o.field(fieldName, fieldConfig.build()), (p, c) -> MultiValuesSourceFieldConfig.PARSER.apply(scriptable, timezoneAware).parse(p, null), new ParseField(fieldName), ObjectParser.ValueType.OBJECT); } }
@Override public final XContentBuilder internalXContent(XContentBuilder builder, Params params) throws IOException { builder.startObject(); if (fields != null) { builder.field(CommonFields.FIELDS.getPreferredName(), fields); } if (format != null) { builder.field(CommonFields.FORMAT.getPreferredName(), format); } if (valueType != null) { builder.field(CommonFields.VALUE_TYPE.getPreferredName(), valueType.getPreferredName()); } doXContentBody(builder, params); builder.endObject(); return builder; }