Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
import org.elasticsearch.index.mapper.DocumentParserContext;
import org.elasticsearch.index.mapper.FieldMapper;
import org.elasticsearch.index.mapper.IgnoreMalformedStoredValues;
import org.elasticsearch.index.mapper.IndexType;
import org.elasticsearch.index.mapper.MappedFieldType;
import org.elasticsearch.index.mapper.Mapper;
import org.elasticsearch.index.mapper.MapperBuilderContext;
Expand Down Expand Up @@ -253,11 +252,11 @@ public AggregateMetricDoubleFieldMapper build(MapperBuilderContext context) {

AggregateMetricDoubleFieldType metricFieldType = new AggregateMetricDoubleFieldType(
context.buildFullName(leafName()),
meta.getValue(),
timeSeriesMetric.getValue()
timeSeriesMetric.getValue(),
defaultMetric.getValue(),
metricFields,
meta.getValue()
);
metricFieldType.setMetricFields(metricFields);
metricFieldType.setDefaultMetric(defaultMetric.getValue());

return new AggregateMetricDoubleFieldMapper(leafName(), metricFieldType, metricMappers, builderParams(this, context), this);
}
Expand All @@ -270,19 +269,21 @@ public AggregateMetricDoubleFieldMapper build(MapperBuilderContext context) {

public static final class AggregateMetricDoubleFieldType extends SimpleMappedFieldType {

private EnumMap<Metric, NumberFieldMapper.NumberFieldType> metricFields;

private Metric defaultMetric;

private final EnumMap<Metric, NumberFieldMapper.NumberFieldType> metricFields;
private final Metric defaultMetric;
private final MetricType metricType;

public AggregateMetricDoubleFieldType(String name) {
this(name, Collections.emptyMap(), null);
}

public AggregateMetricDoubleFieldType(String name, Map<String, String> meta, MetricType metricType) {
super(name, IndexType.points(true, true), false, meta);
public AggregateMetricDoubleFieldType(
String name,
MetricType metricType,
Metric defaultMetric,
EnumMap<Metric, NumberFieldMapper.NumberFieldType> metricFields,
Map<String, String> meta
) {
super(name, metricFields.get(defaultMetric).indexType(), false, meta);
this.metricType = metricType;
this.defaultMetric = defaultMetric;
this.metricFields = metricFields;
}

/**
Expand Down Expand Up @@ -311,29 +312,10 @@ public TextSearchInfo getTextSearchInfo() {
return TextSearchInfo.SIMPLE_MATCH_WITHOUT_TERMS;
}

private void setMetricFields(EnumMap<Metric, NumberFieldMapper.NumberFieldType> metricFields) {
this.metricFields = metricFields;
}

public Map<Metric, NumberFieldMapper.NumberFieldType> getMetricFields() {
return Collections.unmodifiableMap(metricFields);
}

public void addMetricField(Metric m, NumberFieldMapper.NumberFieldType subfield) {
if (metricFields == null) {
metricFields = new EnumMap<>(AggregateMetricDoubleFieldMapper.Metric.class);
}

if (name() == null) {
throw new IllegalArgumentException("Field of type [" + typeName() + "] must have a name before adding a subfield");
}
metricFields.put(m, subfield);
}

public void setDefaultMetric(Metric defaultMetric) {
this.defaultMetric = defaultMetric;
}

Metric getDefaultMetric() {
return defaultMetric;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,9 @@
import org.elasticsearch.xpack.aggregatemetric.mapper.AggregateMetricDoubleFieldMapper.Metric;

import java.io.IOException;
import java.util.EnumMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;

import static java.util.Collections.singleton;
Expand Down Expand Up @@ -117,18 +119,16 @@ public void testQueryFiltering() throws IOException {
* @return the created field type
*/
private AggregateMetricDoubleFieldType createDefaultFieldType(String fieldName) {
AggregateMetricDoubleFieldType fieldType = new AggregateMetricDoubleFieldType(fieldName);

EnumMap<Metric, NumberFieldMapper.NumberFieldType> metricFields = new EnumMap<>(Metric.class);
for (Metric m : List.of(Metric.value_count, Metric.sum)) {
String subfieldName = subfieldName(fieldName, m);
NumberFieldMapper.NumberFieldType subfield = new NumberFieldMapper.NumberFieldType(
subfieldName,
NumberFieldMapper.NumberType.DOUBLE
);
fieldType.addMetricField(m, subfield);
metricFields.put(m, subfield);
}
fieldType.setDefaultMetric(Metric.sum);
return fieldType;
return new AggregateMetricDoubleFieldType(fieldName, null, Metric.sum, metricFields, Map.of());
}

private void testCase(Query query, CheckedConsumer<RandomIndexWriter, IOException> buildIndex, Consumer<InternalAvg> verify)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,9 @@
import org.elasticsearch.xpack.aggregatemetric.mapper.AggregateMetricDoubleFieldMapper.Metric;

import java.io.IOException;
import java.util.EnumMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;

import static java.util.Collections.singleton;
Expand Down Expand Up @@ -117,18 +119,16 @@ public void testQueryFiltering() throws IOException {
* @return the created field type
*/
private AggregateMetricDoubleFieldType createDefaultFieldType(String fieldName) {
AggregateMetricDoubleFieldType fieldType = new AggregateMetricDoubleFieldType(fieldName);

EnumMap<Metric, NumberFieldMapper.NumberFieldType> metricFields = new EnumMap<>(Metric.class);
for (Metric m : List.of(Metric.min, Metric.max)) {
String subfieldName = subfieldName(fieldName, m);
NumberFieldMapper.NumberFieldType subfield = new NumberFieldMapper.NumberFieldType(
subfieldName,
NumberFieldMapper.NumberType.DOUBLE
);
fieldType.addMetricField(m, subfield);
metricFields.put(m, subfield);
}
fieldType.setDefaultMetric(Metric.min);
return fieldType;
return new AggregateMetricDoubleFieldType(fieldName, null, Metric.min, metricFields, Map.of());
}

private void testCase(Query query, CheckedConsumer<RandomIndexWriter, IOException> buildIndex, Consumer<Max> verify)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,9 @@
import org.elasticsearch.xpack.aggregatemetric.mapper.AggregateMetricDoubleFieldMapper.Metric;

import java.io.IOException;
import java.util.EnumMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;

import static java.util.Collections.singleton;
Expand Down Expand Up @@ -117,18 +119,16 @@ public void testQueryFiltering() throws IOException {
* @return the created field type
*/
private AggregateMetricDoubleFieldType createDefaultFieldType(String fieldName) {
AggregateMetricDoubleFieldType fieldType = new AggregateMetricDoubleFieldType(fieldName);

EnumMap<Metric, NumberFieldMapper.NumberFieldType> metricFields = new EnumMap<>(Metric.class);
for (Metric m : List.of(Metric.min, Metric.max)) {
String subfieldName = subfieldName(fieldName, m);
NumberFieldMapper.NumberFieldType subfield = new NumberFieldMapper.NumberFieldType(
subfieldName,
NumberFieldMapper.NumberType.DOUBLE
);
fieldType.addMetricField(m, subfield);
metricFields.put(m, subfield);
}
fieldType.setDefaultMetric(Metric.min);
return fieldType;
return new AggregateMetricDoubleFieldType(fieldName, null, Metric.min, metricFields, Map.of());
}

private void testCase(Query query, CheckedConsumer<RandomIndexWriter, IOException> buildIndex, Consumer<Min> verify)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,9 @@
import org.elasticsearch.xpack.aggregatemetric.mapper.AggregateMetricDoubleFieldMapper.Metric;

import java.io.IOException;
import java.util.EnumMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;

import static java.util.Collections.singleton;
Expand Down Expand Up @@ -117,18 +119,16 @@ public void testQueryFiltering() throws IOException {
* @return the created field type
*/
private AggregateMetricDoubleFieldType createDefaultFieldType(String fieldName) {
AggregateMetricDoubleFieldType fieldType = new AggregateMetricDoubleFieldType(fieldName);

EnumMap<Metric, NumberFieldMapper.NumberFieldType> metricFields = new EnumMap<>(Metric.class);
for (Metric m : List.of(Metric.value_count, Metric.sum)) {
String subfieldName = subfieldName(fieldName, m);
NumberFieldMapper.NumberFieldType subfield = new NumberFieldMapper.NumberFieldType(
subfieldName,
NumberFieldMapper.NumberType.DOUBLE
);
fieldType.addMetricField(m, subfield);
metricFields.put(m, subfield);
}
fieldType.setDefaultMetric(Metric.sum);
return fieldType;
return new AggregateMetricDoubleFieldType(fieldName, null, Metric.sum, metricFields, Map.of());
}

private void testCase(Query query, CheckedConsumer<RandomIndexWriter, IOException> buildIndex, Consumer<Sum> verify)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,9 @@
import org.elasticsearch.xpack.aggregatemetric.mapper.AggregateMetricDoubleFieldMapper.Metric;

import java.io.IOException;
import java.util.EnumMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;

import static java.util.Collections.singleton;
Expand Down Expand Up @@ -116,18 +118,16 @@ public void testQueryFiltering() throws IOException {
* @return the created field type
*/
private AggregateMetricDoubleFieldType createDefaultFieldType(String fieldName) {
AggregateMetricDoubleFieldType fieldType = new AggregateMetricDoubleFieldType(fieldName);

EnumMap<Metric, NumberFieldMapper.NumberFieldType> metricFields = new EnumMap<>(Metric.class);
for (Metric m : List.of(Metric.value_count, Metric.sum)) {
String subfieldName = subfieldName(fieldName, m);
NumberFieldMapper.NumberFieldType subfield = new NumberFieldMapper.NumberFieldType(
subfieldName,
NumberFieldMapper.NumberType.DOUBLE
);
fieldType.addMetricField(m, subfield);
metricFields.put(m, subfield);
}
fieldType.setDefaultMetric(Metric.sum);
return fieldType;
return new AggregateMetricDoubleFieldType(fieldName, null, Metric.sum, metricFields, Map.of());
}

private void testCase(Query query, CheckedConsumer<RandomIndexWriter, IOException> buildIndex, Consumer<InternalValueCount> verify)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@

import java.io.IOException;
import java.util.Collections;
import java.util.EnumMap;
import java.util.List;
import java.util.Map;

Expand All @@ -46,20 +47,16 @@
public class AggregateMetricDoubleFieldTypeTests extends FieldTypeTestCase {

protected AggregateMetricDoubleFieldType createDefaultFieldType(String name, Map<String, String> meta, Metric defaultMetric) {
AggregateMetricDoubleFieldType fieldType = new AggregateMetricDoubleFieldType(name, meta, null);
for (AggregateMetricDoubleFieldMapper.Metric m : List.of(
AggregateMetricDoubleFieldMapper.Metric.min,
AggregateMetricDoubleFieldMapper.Metric.max
)) {
String subfieldName = subfieldName(fieldType.name(), m);
EnumMap<Metric, NumberFieldMapper.NumberFieldType> metricFields = new EnumMap<>(Metric.class);
for (Metric m : List.of(Metric.min, Metric.max)) {
String subfieldName = subfieldName(name, m);
NumberFieldMapper.NumberFieldType subfield = new NumberFieldMapper.NumberFieldType(
subfieldName,
NumberFieldMapper.NumberType.DOUBLE
);
fieldType.addMetricField(m, subfield);
metricFields.put(m, subfield);
}
fieldType.setDefaultMetric(defaultMetric);
return fieldType;
return new AggregateMetricDoubleFieldType(name, null, defaultMetric, metricFields, meta);
}

public void testTermQuery() {
Expand Down