diff --git a/benchmarks/src/main/java/org/elasticsearch/benchmark/script/ScriptScoreBenchmark.java b/benchmarks/src/main/java/org/elasticsearch/benchmark/script/ScriptScoreBenchmark.java index d0308d2166bfa..430a212c5e9b3 100644 --- a/benchmarks/src/main/java/org/elasticsearch/benchmark/script/ScriptScoreBenchmark.java +++ b/benchmarks/src/main/java/org/elasticsearch/benchmark/script/ScriptScoreBenchmark.java @@ -79,7 +79,7 @@ public class ScriptScoreBenchmark { private final ScriptModule scriptModule = new ScriptModule(Settings.EMPTY, pluginsService.filterPlugins(ScriptPlugin.class)); private final Map fieldTypes = Map.ofEntries( - Map.entry("n", new NumberFieldType("n", NumberType.LONG, false, false, true, true, null, Map.of(), null)) + Map.entry("n", new NumberFieldType("n", NumberType.LONG, false, false, true, true, null, Map.of(), null, false)) ); private final IndexFieldDataCache fieldDataCache = new IndexFieldDataCache.None(); private final CircuitBreakerService breakerService = new NoneCircuitBreakerService(); diff --git a/docs/reference/mapping/types/keyword.asciidoc b/docs/reference/mapping/types/keyword.asciidoc index b32c04d43ef79..b20ccf536f944 100644 --- a/docs/reference/mapping/types/keyword.asciidoc +++ b/docs/reference/mapping/types/keyword.asciidoc @@ -152,4 +152,3 @@ The following parameters are accepted by `keyword` fields: include::constant-keyword.asciidoc[] include::wildcard.asciidoc[] - diff --git a/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/TokenCountFieldMapper.java b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/TokenCountFieldMapper.java index 793d60ffdfb9f..f526af95a0b73 100644 --- a/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/TokenCountFieldMapper.java +++ b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/TokenCountFieldMapper.java @@ -77,7 +77,7 @@ static class TokenCountFieldType extends NumberFieldMapper.NumberFieldType { TokenCountFieldType(String name, boolean isSearchable, boolean isStored, boolean hasDocValues, Number nullValue, Map meta) { - super(name, NumberFieldMapper.NumberType.INTEGER, isSearchable, isStored, hasDocValues, false, nullValue, meta, null); + super(name, NumberFieldMapper.NumberType.INTEGER, isSearchable, isStored, hasDocValues, false, nullValue, meta, null, false); } @Override diff --git a/server/src/main/java/org/elasticsearch/index/mapper/IpFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/IpFieldMapper.java index 677a0f9f7fb74..5dc7a6cea5c78 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/IpFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/IpFieldMapper.java @@ -72,6 +72,8 @@ public static class Builder extends FieldMapper.Builder { private final Parameter onScriptError = Parameter.onScriptErrorParam(m -> toType(m).onScriptError, script); private final Parameter> meta = Parameter.metaParam(); + private final Parameter dimension + = Parameter.boolParam("dimension", false, m -> toType(m).dimension, false); private final boolean ignoreMalformedByDefault; private final Version indexCreatedVersion; @@ -93,6 +95,11 @@ Builder nullValue(String nullValue) { return this; } + public Builder dimension(boolean dimension) { + this.dimension.setValue(dimension); + return this; + } + private InetAddress parseNullValue() { String nullValueAsString = nullValue.getValue(); if (nullValueAsString == null) { @@ -124,14 +131,14 @@ private FieldValues scriptValues() { @Override protected List> getParameters() { - return List.of(indexed, hasDocValues, stored, ignoreMalformed, nullValue, script, onScriptError, meta); + return List.of(indexed, hasDocValues, stored, ignoreMalformed, nullValue, script, onScriptError, meta, dimension); } @Override public IpFieldMapper build(ContentPath contentPath) { return new IpFieldMapper(name, new IpFieldType(buildFullName(contentPath), indexed.getValue(), stored.getValue(), - hasDocValues.getValue(), parseNullValue(), scriptValues(), meta.getValue()), + hasDocValues.getValue(), parseNullValue(), scriptValues(), meta.getValue(), dimension.getValue()), multiFieldsBuilder.build(this, contentPath), copyTo.build(), this); } @@ -146,16 +153,18 @@ public static final class IpFieldType extends SimpleMappedFieldType { private final InetAddress nullValue; private final FieldValues scriptValues; + private final boolean isDimension; public IpFieldType(String name, boolean indexed, boolean stored, boolean hasDocValues, - InetAddress nullValue, FieldValues scriptValues, Map meta) { + InetAddress nullValue, FieldValues scriptValues, Map meta, boolean isDimension) { super(name, indexed, stored, hasDocValues, TextSearchInfo.SIMPLE_MATCH_WITHOUT_TERMS, meta); this.nullValue = nullValue; this.scriptValues = scriptValues; + this.isDimension = isDimension; } public IpFieldType(String name) { - this(name, true, false, true, null, null, Collections.emptyMap()); + this(name, true, false, true, null, null, Collections.emptyMap(), false); } @Override @@ -364,12 +373,20 @@ public DocValueFormat docValueFormat(@Nullable String format, ZoneId timeZone) { } return DocValueFormat.IP; } + + /** + * @return true if field has been marked as a dimension field + */ + public boolean isDimension() { + return isDimension; + } } private final boolean indexed; private final boolean hasDocValues; private final boolean stored; private final boolean ignoreMalformed; + private final boolean dimension; private final InetAddress nullValue; private final String nullValueAsString; @@ -399,6 +416,7 @@ private IpFieldMapper( this.script = builder.script.get(); this.scriptValues = builder.scriptValues(); this.scriptCompiler = builder.scriptCompiler; + this.dimension = builder.dimension.getValue(); } boolean ignoreMalformed() { @@ -468,7 +486,7 @@ protected void indexScriptValues(SearchLookup searchLookup, LeafReaderContext re @Override public FieldMapper.Builder getMergeBuilder() { - return new Builder(simpleName(), scriptCompiler, ignoreMalformedByDefault, indexCreatedVersion).init(this); + return new Builder(simpleName(), scriptCompiler, ignoreMalformedByDefault, indexCreatedVersion).dimension(dimension).init(this); } } diff --git a/server/src/main/java/org/elasticsearch/index/mapper/KeywordFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/KeywordFieldMapper.java index 18f16493fc2f2..a5c010764d0d9 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/KeywordFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/KeywordFieldMapper.java @@ -112,6 +112,7 @@ public static class Builder extends FieldMapper.Builder { private final Parameter