Skip to content
Merged
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 @@ -23,6 +23,7 @@
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.NumericUtils;
import org.elasticsearch.cluster.metadata.IndexMetadata;
import org.elasticsearch.common.breaker.NoopCircuitBreaker;
import org.elasticsearch.common.logging.LogConfigurator;
import org.elasticsearch.common.lucene.Lucene;
Expand Down Expand Up @@ -111,6 +112,15 @@ public class ValuesSourceReaderBenchmark {
BigArrays.NON_RECYCLING_INSTANCE
);

public static IndexSettings defaultIndexSettings() {
IndexMetadata INDEX_METADATA = IndexMetadata.builder("index")
.settings(Settings.builder().put(IndexMetadata.SETTING_VERSION_CREATED, IndexVersion.current()))
.numberOfShards(1)
.numberOfReplicas(0)
.build();
return new IndexSettings(INDEX_METADATA, Settings.EMPTY);
}

static {
// Smoke test all the expected values and force loading subclasses more like prod
selfTest();
Expand Down Expand Up @@ -223,7 +233,7 @@ private static BlockLoader blockLoader(String name) {
Lucene.KEYWORD_ANALYZER,
Lucene.KEYWORD_ANALYZER,
Lucene.KEYWORD_ANALYZER,
new KeywordFieldMapper.Builder(name, IndexVersion.current()).docValues(ft.docValuesType() != DocValuesType.NONE),
new KeywordFieldMapper.Builder(name, defaultIndexSettings()).docValues(ft.docValuesType() != DocValuesType.NONE),
syntheticSource
).blockLoader(new MappedFieldType.BlockLoaderContext() {
@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
import org.apache.lucene.util.BytesRef;
import org.elasticsearch.aggregations.bucket.AggregationTestCase;
import org.elasticsearch.core.CheckedConsumer;
import org.elasticsearch.index.IndexVersion;
import org.elasticsearch.index.mapper.DataStreamTimestampFieldMapper;
import org.elasticsearch.index.mapper.DateFieldMapper;
import org.elasticsearch.index.mapper.KeywordFieldMapper;
Expand Down Expand Up @@ -79,10 +78,10 @@ public void testStandAloneTimeSeriesWithSum() throws IOException {
assertThat(((Sum) ts.getBucketByKey("{dim1=bbb, dim2=zzz}").getAggregations().get("sum")).value(), equalTo(22.0));

},
new KeywordFieldMapper.Builder("dim1", IndexVersion.current()).dimension(true)
new KeywordFieldMapper.Builder("dim1", defaultIndexSettings()).dimension(true)
.build(MapperBuilderContext.root(true, true))
.fieldType(),
new KeywordFieldMapper.Builder("dim2", IndexVersion.current()).dimension(true)
new KeywordFieldMapper.Builder("dim2", defaultIndexSettings()).dimension(true)
.build(MapperBuilderContext.root(true, true))
.fieldType(),
new NumberFieldMapper.NumberFieldType("val1", NumberFieldMapper.NumberType.INTEGER)
Expand Down Expand Up @@ -149,7 +148,7 @@ public void testWithDateHistogramExecutedAsFilterByFilterWithTimeSeriesIndexSear
aggregationBuilder,
TimeSeriesIdFieldMapper.FIELD_TYPE,
new DateFieldMapper.DateFieldType("@timestamp"),
new KeywordFieldMapper.Builder("dim1", IndexVersion.current()).dimension(true)
new KeywordFieldMapper.Builder("dim1", defaultIndexSettings()).dimension(true)
.build(MapperBuilderContext.root(true, true))
.fieldType(),
new NumberFieldMapper.NumberFieldType("val1", NumberFieldMapper.NumberType.INTEGER)
Expand Down Expand Up @@ -202,10 +201,10 @@ public void testMultiBucketAggregationAsSubAggregation() throws IOException {
new MatchAllDocsQuery(),
buildIndex,
verifier,
new KeywordFieldMapper.Builder("dim1", IndexVersion.current()).dimension(true)
new KeywordFieldMapper.Builder("dim1", defaultIndexSettings()).dimension(true)
.build(MapperBuilderContext.root(true, true))
.fieldType(),
new KeywordFieldMapper.Builder("dim2", IndexVersion.current()).dimension(true)
new KeywordFieldMapper.Builder("dim2", defaultIndexSettings()).dimension(true)
.build(MapperBuilderContext.root(true, true))
.fieldType()
);
Expand Down Expand Up @@ -237,10 +236,10 @@ public void testAggregationSize() throws IOException {
new MatchAllDocsQuery(),
buildIndex,
limitedVerifier,
new KeywordFieldMapper.Builder("dim1", IndexVersion.current()).dimension(true)
new KeywordFieldMapper.Builder("dim1", defaultIndexSettings()).dimension(true)
.build(MapperBuilderContext.root(true, true))
.fieldType(),
new KeywordFieldMapper.Builder("dim2", IndexVersion.current()).dimension(true)
new KeywordFieldMapper.Builder("dim2", defaultIndexSettings()).dimension(true)
.build(MapperBuilderContext.root(true, true))
.fieldType()
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import org.elasticsearch.common.settings.Setting;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.core.Tuple;
import org.elasticsearch.index.IndexSettings;
import org.elasticsearch.index.IndexVersion;
import org.elasticsearch.index.IndexVersions;
import org.elasticsearch.index.mapper.BinaryFieldMapper;
Expand Down Expand Up @@ -101,9 +102,7 @@ public class PercolatorFieldMapper extends FieldMapper {

@Override
public FieldMapper.Builder getMergeBuilder() {
return new Builder(leafName(), searchExecutionContext, mapUnmappedFieldsAsText, indexCreatedVersion, clusterTransportVersion).init(
this
);
return new Builder(leafName(), searchExecutionContext, mapUnmappedFieldsAsText, indexSettings, clusterTransportVersion).init(this);
}

static class Builder extends FieldMapper.Builder {
Expand All @@ -113,20 +112,20 @@ static class Builder extends FieldMapper.Builder {
private final Supplier<SearchExecutionContext> searchExecutionContext;
private final boolean mapUnmappedFieldsAsText;

private final IndexVersion indexCreatedVersion;
private final IndexSettings indexSettings;
private final Supplier<TransportVersion> clusterTransportVersion;

Builder(
String fieldName,
Supplier<SearchExecutionContext> searchExecutionContext,
boolean mapUnmappedFieldsAsText,
IndexVersion indexCreatedVersion,
IndexSettings indexSettings,
Supplier<TransportVersion> clusterTransportVersion
) {
super(fieldName);
this.searchExecutionContext = searchExecutionContext;
this.mapUnmappedFieldsAsText = mapUnmappedFieldsAsText;
this.indexCreatedVersion = Objects.requireNonNull(indexCreatedVersion);
this.indexSettings = Objects.requireNonNull(indexSettings);
this.clusterTransportVersion = clusterTransportVersion;
}

Expand All @@ -139,25 +138,17 @@ protected Parameter<?>[] getParameters() {
public PercolatorFieldMapper build(MapperBuilderContext context) {
PercolatorFieldType fieldType = new PercolatorFieldType(context.buildFullName(leafName()), meta.getValue());
context = context.createChildContext(leafName(), null);
KeywordFieldMapper extractedTermsField = createExtractQueryFieldBuilder(
EXTRACTED_TERMS_FIELD_NAME,
context,
indexCreatedVersion
);
KeywordFieldMapper extractedTermsField = createExtractQueryFieldBuilder(EXTRACTED_TERMS_FIELD_NAME, context, indexSettings);
fieldType.queryTermsField = extractedTermsField.fieldType();
KeywordFieldMapper extractionResultField = createExtractQueryFieldBuilder(
EXTRACTION_RESULT_FIELD_NAME,
context,
indexCreatedVersion
);
KeywordFieldMapper extractionResultField = createExtractQueryFieldBuilder(EXTRACTION_RESULT_FIELD_NAME, context, indexSettings);
fieldType.extractionResultField = extractionResultField.fieldType();
BinaryFieldMapper queryBuilderField = createQueryBuilderFieldBuilder(context);
fieldType.queryBuilderField = queryBuilderField.fieldType();
// Range field is of type ip, because that matches closest with BinaryRange field. Otherwise we would
// have to introduce a new field type...
RangeFieldMapper rangeFieldMapper = createExtractedRangeFieldBuilder(RANGE_FIELD_NAME, RangeType.IP, context);
fieldType.rangeField = rangeFieldMapper.fieldType();
NumberFieldMapper minimumShouldMatchFieldMapper = createMinimumShouldMatchField(context, indexCreatedVersion);
NumberFieldMapper minimumShouldMatchFieldMapper = createMinimumShouldMatchField(context, indexSettings);
fieldType.minimumShouldMatchField = minimumShouldMatchFieldMapper.fieldType();
fieldType.mapUnmappedFieldsAsText = mapUnmappedFieldsAsText;

Expand All @@ -172,17 +163,13 @@ public PercolatorFieldMapper build(MapperBuilderContext context) {
rangeFieldMapper,
minimumShouldMatchFieldMapper,
mapUnmappedFieldsAsText,
indexCreatedVersion,
indexSettings,
clusterTransportVersion
);
}

static KeywordFieldMapper createExtractQueryFieldBuilder(
String name,
MapperBuilderContext context,
IndexVersion indexCreatedVersion
) {
KeywordFieldMapper.Builder queryMetadataFieldBuilder = new KeywordFieldMapper.Builder(name, indexCreatedVersion);
static KeywordFieldMapper createExtractQueryFieldBuilder(String name, MapperBuilderContext context, IndexSettings indexSettings) {
KeywordFieldMapper.Builder queryMetadataFieldBuilder = new KeywordFieldMapper.Builder(name, indexSettings);
queryMetadataFieldBuilder.docValues(false);
return queryMetadataFieldBuilder.build(context);
}
Expand All @@ -200,11 +187,11 @@ static RangeFieldMapper createExtractedRangeFieldBuilder(String name, RangeType
return builder.build(context);
}

static NumberFieldMapper createMinimumShouldMatchField(MapperBuilderContext context, IndexVersion indexCreatedVersion) {
static NumberFieldMapper createMinimumShouldMatchField(MapperBuilderContext context, IndexSettings indexSettings) {
NumberFieldMapper.Builder builder = NumberFieldMapper.Builder.docValuesOnly(
MINIMUM_SHOULD_MATCH_FIELD_NAME,
NumberFieldMapper.NumberType.INTEGER,
indexCreatedVersion
indexSettings.getIndexVersionCreated()
);
return builder.build(context);
}
Expand All @@ -219,7 +206,7 @@ public Builder parse(String name, Map<String, Object> node, MappingParserContext
name,
parserContext.searchExecutionContext(),
getMapUnmappedFieldAsText(parserContext.getSettings()),
parserContext.indexVersionCreated(),
parserContext.getIndexSettings(),
parserContext.clusterTransportVersion()
);
}
Expand Down Expand Up @@ -367,7 +354,7 @@ static Tuple<List<BytesRef>, Map<String, List<byte[]>>> extractTermsAndRanges(In
private final NumberFieldMapper minimumShouldMatchFieldMapper;
private final RangeFieldMapper rangeFieldMapper;
private final boolean mapUnmappedFieldsAsText;
private final IndexVersion indexCreatedVersion;
private final IndexSettings indexSettings;
private final Supplier<TransportVersion> clusterTransportVersion;

PercolatorFieldMapper(
Expand All @@ -381,7 +368,7 @@ static Tuple<List<BytesRef>, Map<String, List<byte[]>>> extractTermsAndRanges(In
RangeFieldMapper rangeFieldMapper,
NumberFieldMapper minimumShouldMatchFieldMapper,
boolean mapUnmappedFieldsAsText,
IndexVersion indexCreatedVersion,
IndexSettings indexSettings,
Supplier<TransportVersion> clusterTransportVersion
) {
super(simpleName, mappedFieldType, builderParams);
Expand All @@ -392,7 +379,7 @@ static Tuple<List<BytesRef>, Map<String, List<byte[]>>> extractTermsAndRanges(In
this.minimumShouldMatchFieldMapper = minimumShouldMatchFieldMapper;
this.rangeFieldMapper = rangeFieldMapper;
this.mapUnmappedFieldsAsText = mapUnmappedFieldsAsText;
this.indexCreatedVersion = indexCreatedVersion;
this.indexSettings = indexSettings;
this.clusterTransportVersion = clusterTransportVersion;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -327,11 +327,7 @@ boolean createDynamicField(Mapper.Builder builder, DocumentParserContext context
public boolean newDynamicStringField(DocumentParserContext context, String name) throws IOException {
MapperBuilderContext mapperBuilderContext = context.createDynamicMapperBuilderContext();
if (mapperBuilderContext.parentObjectContainsDimensions()) {
return createDynamicField(
new KeywordFieldMapper.Builder(name, context.indexSettings().getIndexVersionCreated()),
context,
mapperBuilderContext
);
return createDynamicField(new KeywordFieldMapper.Builder(name, context.indexSettings()), context, mapperBuilderContext);
} else {
var indexSettings = context.indexSettings();
return createDynamicField(
Expand All @@ -342,9 +338,7 @@ public boolean newDynamicStringField(DocumentParserContext context, String name)
context.indexAnalyzers(),
SourceFieldMapper.isSynthetic(indexSettings),
false
).addMultiField(
new KeywordFieldMapper.Builder("keyword", context.indexSettings().getIndexVersionCreated(), true).ignoreAbove(256)
),
).addMultiField(new KeywordFieldMapper.Builder("keyword", context.indexSettings(), true).ignoreAbove(256)),
context
);
}
Expand Down
Loading