Skip to content

Commit 1e8fcef

Browse files
committed
Replace agg_metric_double points with skippers
1 parent 3e49cd6 commit 1e8fcef

File tree

3 files changed

+55
-1
lines changed

3 files changed

+55
-1
lines changed

server/src/main/java/org/elasticsearch/index/mapper/NumberFieldMapper.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,11 @@ public Builder coerce(boolean coerce) {
214214
return this;
215215
}
216216

217+
public Builder index(boolean index) {
218+
this.indexed.setValue(index);
219+
return this;
220+
}
221+
217222
public Builder docValues(boolean hasDocValues) {
218223
this.hasDocValues.setValue(hasDocValues);
219224
return this;

x-pack/plugin/mapper-aggregate-metric/src/main/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateMetricDoubleFieldMapper.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.elasticsearch.common.time.DateMathParser;
2121
import org.elasticsearch.common.util.BigArrays;
2222
import org.elasticsearch.index.IndexSettings;
23+
import org.elasticsearch.index.IndexVersions;
2324
import org.elasticsearch.index.fielddata.FieldDataContext;
2425
import org.elasticsearch.index.fielddata.IndexFieldData;
2526
import org.elasticsearch.index.fielddata.ScriptDocValues;
@@ -232,13 +233,19 @@ public AggregateMetricDoubleFieldMapper build(MapperBuilderContext context) {
232233
ScriptCompiler.NONE,
233234
indexSettings
234235
).allowMultipleValues(false).ignoreMalformed(false).coerce(false);
236+
if (indexSettings.getIndexVersionCreated().onOrAfter(IndexVersions.STANDARD_INDEXES_USE_SKIPPERS)) {
237+
builder.index(false);
238+
}
235239
} else {
236240
builder = new NumberFieldMapper.Builder(
237241
fieldName,
238242
NumberFieldMapper.NumberType.DOUBLE,
239243
ScriptCompiler.NONE,
240244
indexSettings
241245
).allowMultipleValues(false).ignoreMalformed(false).coerce(true);
246+
if (indexSettings.getIndexVersionCreated().onOrAfter(IndexVersions.STANDARD_INDEXES_USE_SKIPPERS)) {
247+
builder.index(false);
248+
}
242249
}
243250
NumberFieldMapper fieldMapper = builder.build(context);
244251
metricMappers.put(m, fieldMapper);

x-pack/plugin/mapper-aggregate-metric/src/test/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateMetricDoubleFieldMapperTests.java

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,15 @@
88

99
import org.apache.lucene.search.FieldExistsQuery;
1010
import org.apache.lucene.search.Query;
11+
import org.elasticsearch.cluster.metadata.IndexMetadata;
1112
import org.elasticsearch.common.Strings;
1213
import org.elasticsearch.core.CheckedConsumer;
14+
import org.elasticsearch.index.IndexMode;
15+
import org.elasticsearch.index.IndexSettings;
16+
import org.elasticsearch.index.IndexVersions;
1317
import org.elasticsearch.index.mapper.DocumentMapper;
1418
import org.elasticsearch.index.mapper.DocumentParsingException;
19+
import org.elasticsearch.index.mapper.IndexType;
1520
import org.elasticsearch.index.mapper.LuceneDocument;
1621
import org.elasticsearch.index.mapper.MappedFieldType;
1722
import org.elasticsearch.index.mapper.Mapper;
@@ -20,6 +25,7 @@
2025
import org.elasticsearch.index.mapper.MapperTestCase;
2126
import org.elasticsearch.index.mapper.ParsedDocument;
2227
import org.elasticsearch.plugins.Plugin;
28+
import org.elasticsearch.test.index.IndexVersionUtils;
2329
import org.elasticsearch.xcontent.XContentBuilder;
2430
import org.elasticsearch.xcontent.XContentFactory;
2531
import org.elasticsearch.xcontent.json.JsonXContent;
@@ -626,6 +632,42 @@ protected List<SortShortcutSupport> getSortShortcutSupport() {
626632

627633
@Override
628634
protected boolean supportsDocValuesSkippers() {
629-
return false;
635+
return false; // can't configure `index` so normal test doesn't work
636+
}
637+
638+
public void testIndexTypes() throws Exception {
639+
{
640+
var indexSettings = getIndexSettingsBuilder().put(IndexSettings.MODE.getKey(), IndexMode.TIME_SERIES.getName())
641+
.put(IndexMetadata.INDEX_ROUTING_PATH.getKey(), "dimension_field")
642+
.build();
643+
MapperService mapperService = createMapperService(indexSettings, fieldMapping(this::minimalMapping));
644+
MappedFieldType ft = mapperService.fieldType("field");
645+
assertIndexType(ft, IndexType.skippers());
646+
}
647+
{
648+
var oldVersion = IndexVersionUtils.randomPreviousCompatibleVersion(random(), IndexVersions.STANDARD_INDEXES_USE_SKIPPERS);
649+
MapperService mapperService = createMapperService(oldVersion, fieldMapping(this::minimalMapping));
650+
MappedFieldType ft = mapperService.fieldType("field");
651+
assertIndexType(ft, IndexType.points(true, true));
652+
}
653+
{
654+
MapperService mapperService = createMapperService(
655+
IndexVersions.STANDARD_INDEXES_USE_SKIPPERS,
656+
fieldMapping(this::minimalMapping)
657+
);
658+
MappedFieldType ft = mapperService.fieldType("field");
659+
assertIndexType(ft, IndexType.skippers());
660+
}
630661
}
662+
663+
private void assertIndexType(MappedFieldType ft, IndexType indexType) {
664+
assertThat(ft, instanceOf(AggregateMetricDoubleFieldMapper.AggregateMetricDoubleFieldType.class));
665+
AggregateMetricDoubleFieldMapper.AggregateMetricDoubleFieldType aft =
666+
(AggregateMetricDoubleFieldMapper.AggregateMetricDoubleFieldType) ft;
667+
assertThat(aft.indexType(), equalTo(indexType));
668+
for (MappedFieldType subField : aft.getMetricFields().values()) {
669+
assertThat(subField.indexType(), equalTo(indexType));
670+
}
671+
}
672+
631673
}

0 commit comments

Comments
 (0)