Skip to content

Commit 5b5aa6e

Browse files
committed
Move non-core mappers to a module. (#26549)
Today we have all non-plugin mappers in core. I'd like to start moving those that neither map to json datatypes nor are very frequently used like `date` or `ip` to a module. This commit creates a new module called `mappers-extra` and moves the `scaled_float` and `token_count` mappers to it. I'd like to eventually move `range` fields there but it's more complicated due to their intimate relationship with range queries. Relates #10368
1 parent d97c357 commit 5b5aa6e

File tree

53 files changed

+692
-332
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+692
-332
lines changed

buildSrc/src/main/resources/checkstyle_suppressions.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -596,7 +596,6 @@
596596
<suppress files="core[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]index[/\\]mapper[/\\]PathMapperTests.java" checks="LineLength" />
597597
<suppress files="core[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]index[/\\]mapper[/\\]RoutingFieldMapperTests.java" checks="LineLength" />
598598
<suppress files="core[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]index[/\\]mapper[/\\]SourceFieldMapperTests.java" checks="LineLength" />
599-
<suppress files="core[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]index[/\\]mapper[/\\]TokenCountFieldMapperIntegrationIT.java" checks="LineLength" />
600599
<suppress files="core[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]index[/\\]mapper[/\\]UpdateMappingOnClusterIT.java" checks="LineLength" />
601600
<suppress files="core[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]index[/\\]mapper[/\\]UpdateMappingTests.java" checks="LineLength" />
602601
<suppress files="core[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]index[/\\]query[/\\]BoolQueryBuilderTests.java" checks="LineLength" />

core/src/main/java/org/elasticsearch/index/mapper/CustomDocValuesField.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828

2929
import java.io.Reader;
3030

31-
// used for binary and geo fields
32-
abstract class CustomDocValuesField implements IndexableField {
31+
// used for binary, geo and range fields
32+
public abstract class CustomDocValuesField implements IndexableField {
3333

3434
public static final FieldType TYPE = new FieldType();
3535
static {
@@ -39,7 +39,7 @@ abstract class CustomDocValuesField implements IndexableField {
3939

4040
private final String name;
4141

42-
CustomDocValuesField(String name) {
42+
protected CustomDocValuesField(String name) {
4343
this.name = name;
4444
}
4545

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

Lines changed: 41 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,7 @@
6262
/** A {@link FieldMapper} for numeric types: byte, short, int, long, float and double. */
6363
public class NumberFieldMapper extends FieldMapper {
6464

65-
// this is private since it has a different default
66-
static final Setting<Boolean> COERCE_SETTING =
65+
public static final Setting<Boolean> COERCE_SETTING =
6766
Setting.boolSetting("index.mapping.coerce", true, Property.IndexScope);
6867

6968
public static class Defaults {
@@ -162,7 +161,7 @@ public Mapper.Builder<?,?> parse(String name, Map<String, Object> node,
162161
public enum NumberType {
163162
HALF_FLOAT("half_float", NumericType.HALF_FLOAT) {
164163
@Override
165-
Float parse(Object value, boolean coerce) {
164+
public Float parse(Object value, boolean coerce) {
166165
final float result;
167166

168167
if (value instanceof Number) {
@@ -178,20 +177,20 @@ Float parse(Object value, boolean coerce) {
178177
}
179178

180179
@Override
181-
Float parse(XContentParser parser, boolean coerce) throws IOException {
180+
public Float parse(XContentParser parser, boolean coerce) throws IOException {
182181
float parsed = parser.floatValue(coerce);
183182
validateParsed(parsed);
184183
return parsed;
185184
}
186185

187186
@Override
188-
Query termQuery(String field, Object value) {
187+
public Query termQuery(String field, Object value) {
189188
float v = parse(value, false);
190189
return HalfFloatPoint.newExactQuery(field, v);
191190
}
192191

193192
@Override
194-
Query termsQuery(String field, List<Object> values) {
193+
public Query termsQuery(String field, List<Object> values) {
195194
float[] v = new float[values.size()];
196195
for (int i = 0; i < values.size(); ++i) {
197196
v[i] = parse(values.get(i), false);
@@ -200,7 +199,7 @@ Query termsQuery(String field, List<Object> values) {
200199
}
201200

202201
@Override
203-
Query rangeQuery(String field, Object lowerTerm, Object upperTerm,
202+
public Query rangeQuery(String field, Object lowerTerm, Object upperTerm,
204203
boolean includeLower, boolean includeUpper,
205204
boolean hasDocValues) {
206205
float l = Float.NEGATIVE_INFINITY;
@@ -254,7 +253,7 @@ private void validateParsed(float value) {
254253
},
255254
FLOAT("float", NumericType.FLOAT) {
256255
@Override
257-
Float parse(Object value, boolean coerce) {
256+
public Float parse(Object value, boolean coerce) {
258257
final float result;
259258

260259
if (value instanceof Number) {
@@ -270,20 +269,20 @@ Float parse(Object value, boolean coerce) {
270269
}
271270

272271
@Override
273-
Float parse(XContentParser parser, boolean coerce) throws IOException {
272+
public Float parse(XContentParser parser, boolean coerce) throws IOException {
274273
float parsed = parser.floatValue(coerce);
275274
validateParsed(parsed);
276275
return parsed;
277276
}
278277

279278
@Override
280-
Query termQuery(String field, Object value) {
279+
public Query termQuery(String field, Object value) {
281280
float v = parse(value, false);
282281
return FloatPoint.newExactQuery(field, v);
283282
}
284283

285284
@Override
286-
Query termsQuery(String field, List<Object> values) {
285+
public Query termsQuery(String field, List<Object> values) {
287286
float[] v = new float[values.size()];
288287
for (int i = 0; i < values.size(); ++i) {
289288
v[i] = parse(values.get(i), false);
@@ -292,7 +291,7 @@ Query termsQuery(String field, List<Object> values) {
292291
}
293292

294293
@Override
295-
Query rangeQuery(String field, Object lowerTerm, Object upperTerm,
294+
public Query rangeQuery(String field, Object lowerTerm, Object upperTerm,
296295
boolean includeLower, boolean includeUpper,
297296
boolean hasDocValues) {
298297
float l = Float.NEGATIVE_INFINITY;
@@ -344,27 +343,27 @@ private void validateParsed(float value) {
344343
},
345344
DOUBLE("double", NumericType.DOUBLE) {
346345
@Override
347-
Double parse(Object value, boolean coerce) {
346+
public Double parse(Object value, boolean coerce) {
348347
double parsed = objectToDouble(value);
349348
validateParsed(parsed);
350349
return parsed;
351350
}
352351

353352
@Override
354-
Double parse(XContentParser parser, boolean coerce) throws IOException {
353+
public Double parse(XContentParser parser, boolean coerce) throws IOException {
355354
double parsed = parser.doubleValue(coerce);
356355
validateParsed(parsed);
357356
return parsed;
358357
}
359358

360359
@Override
361-
Query termQuery(String field, Object value) {
360+
public Query termQuery(String field, Object value) {
362361
double v = parse(value, false);
363362
return DoublePoint.newExactQuery(field, v);
364363
}
365364

366365
@Override
367-
Query termsQuery(String field, List<Object> values) {
366+
public Query termsQuery(String field, List<Object> values) {
368367
double[] v = new double[values.size()];
369368
for (int i = 0; i < values.size(); ++i) {
370369
v[i] = parse(values.get(i), false);
@@ -373,7 +372,7 @@ Query termsQuery(String field, List<Object> values) {
373372
}
374373

375374
@Override
376-
Query rangeQuery(String field, Object lowerTerm, Object upperTerm,
375+
public Query rangeQuery(String field, Object lowerTerm, Object upperTerm,
377376
boolean includeLower, boolean includeUpper,
378377
boolean hasDocValues) {
379378
double l = Double.NEGATIVE_INFINITY;
@@ -425,7 +424,7 @@ private void validateParsed(double value) {
425424
},
426425
BYTE("byte", NumericType.BYTE) {
427426
@Override
428-
Byte parse(Object value, boolean coerce) {
427+
public Byte parse(Object value, boolean coerce) {
429428
double doubleValue = objectToDouble(value);
430429

431430
if (doubleValue < Byte.MIN_VALUE || doubleValue > Byte.MAX_VALUE) {
@@ -443,7 +442,7 @@ Byte parse(Object value, boolean coerce) {
443442
}
444443

445444
@Override
446-
Short parse(XContentParser parser, boolean coerce) throws IOException {
445+
public Short parse(XContentParser parser, boolean coerce) throws IOException {
447446
int value = parser.intValue(coerce);
448447
if (value < Byte.MIN_VALUE || value > Byte.MAX_VALUE) {
449448
throw new IllegalArgumentException("Value [" + value + "] is out of range for a byte");
@@ -452,17 +451,17 @@ Short parse(XContentParser parser, boolean coerce) throws IOException {
452451
}
453452

454453
@Override
455-
Query termQuery(String field, Object value) {
454+
public Query termQuery(String field, Object value) {
456455
return INTEGER.termQuery(field, value);
457456
}
458457

459458
@Override
460-
Query termsQuery(String field, List<Object> values) {
459+
public Query termsQuery(String field, List<Object> values) {
461460
return INTEGER.termsQuery(field, values);
462461
}
463462

464463
@Override
465-
Query rangeQuery(String field, Object lowerTerm, Object upperTerm,
464+
public Query rangeQuery(String field, Object lowerTerm, Object upperTerm,
466465
boolean includeLower, boolean includeUpper,
467466
boolean hasDocValues) {
468467
return INTEGER.rangeQuery(field, lowerTerm, upperTerm, includeLower, includeUpper, hasDocValues);
@@ -481,7 +480,7 @@ Number valueForSearch(Number value) {
481480
},
482481
SHORT("short", NumericType.SHORT) {
483482
@Override
484-
Short parse(Object value, boolean coerce) {
483+
public Short parse(Object value, boolean coerce) {
485484
double doubleValue = objectToDouble(value);
486485

487486
if (doubleValue < Short.MIN_VALUE || doubleValue > Short.MAX_VALUE) {
@@ -499,22 +498,22 @@ Short parse(Object value, boolean coerce) {
499498
}
500499

501500
@Override
502-
Short parse(XContentParser parser, boolean coerce) throws IOException {
501+
public Short parse(XContentParser parser, boolean coerce) throws IOException {
503502
return parser.shortValue(coerce);
504503
}
505504

506505
@Override
507-
Query termQuery(String field, Object value) {
506+
public Query termQuery(String field, Object value) {
508507
return INTEGER.termQuery(field, value);
509508
}
510509

511510
@Override
512-
Query termsQuery(String field, List<Object> values) {
511+
public Query termsQuery(String field, List<Object> values) {
513512
return INTEGER.termsQuery(field, values);
514513
}
515514

516515
@Override
517-
Query rangeQuery(String field, Object lowerTerm, Object upperTerm,
516+
public Query rangeQuery(String field, Object lowerTerm, Object upperTerm,
518517
boolean includeLower, boolean includeUpper,
519518
boolean hasDocValues) {
520519
return INTEGER.rangeQuery(field, lowerTerm, upperTerm, includeLower, includeUpper, hasDocValues);
@@ -533,7 +532,7 @@ Number valueForSearch(Number value) {
533532
},
534533
INTEGER("integer", NumericType.INT) {
535534
@Override
536-
Integer parse(Object value, boolean coerce) {
535+
public Integer parse(Object value, boolean coerce) {
537536
double doubleValue = objectToDouble(value);
538537

539538
if (doubleValue < Integer.MIN_VALUE || doubleValue > Integer.MAX_VALUE) {
@@ -551,12 +550,12 @@ Integer parse(Object value, boolean coerce) {
551550
}
552551

553552
@Override
554-
Integer parse(XContentParser parser, boolean coerce) throws IOException {
553+
public Integer parse(XContentParser parser, boolean coerce) throws IOException {
555554
return parser.intValue(coerce);
556555
}
557556

558557
@Override
559-
Query termQuery(String field, Object value) {
558+
public Query termQuery(String field, Object value) {
560559
if (hasDecimalPart(value)) {
561560
return Queries.newMatchNoDocsQuery("Value [" + value + "] has a decimal part");
562561
}
@@ -565,7 +564,7 @@ Query termQuery(String field, Object value) {
565564
}
566565

567566
@Override
568-
Query termsQuery(String field, List<Object> values) {
567+
public Query termsQuery(String field, List<Object> values) {
569568
int[] v = new int[values.size()];
570569
int upTo = 0;
571570

@@ -586,7 +585,7 @@ Query termsQuery(String field, List<Object> values) {
586585
}
587586

588587
@Override
589-
Query rangeQuery(String field, Object lowerTerm, Object upperTerm,
588+
public Query rangeQuery(String field, Object lowerTerm, Object upperTerm,
590589
boolean includeLower, boolean includeUpper,
591590
boolean hasDocValues) {
592591
int l = Integer.MIN_VALUE;
@@ -644,7 +643,7 @@ public List<Field> createFields(String name, Number value,
644643
},
645644
LONG("long", NumericType.LONG) {
646645
@Override
647-
Long parse(Object value, boolean coerce) {
646+
public Long parse(Object value, boolean coerce) {
648647
if (value instanceof Long) {
649648
return (Long)value;
650649
}
@@ -665,12 +664,12 @@ Long parse(Object value, boolean coerce) {
665664
}
666665

667666
@Override
668-
Long parse(XContentParser parser, boolean coerce) throws IOException {
667+
public Long parse(XContentParser parser, boolean coerce) throws IOException {
669668
return parser.longValue(coerce);
670669
}
671670

672671
@Override
673-
Query termQuery(String field, Object value) {
672+
public Query termQuery(String field, Object value) {
674673
if (hasDecimalPart(value)) {
675674
return Queries.newMatchNoDocsQuery("Value [" + value + "] has a decimal part");
676675
}
@@ -679,7 +678,7 @@ Query termQuery(String field, Object value) {
679678
}
680679

681680
@Override
682-
Query termsQuery(String field, List<Object> values) {
681+
public Query termsQuery(String field, List<Object> values) {
683682
long[] v = new long[values.size()];
684683
int upTo = 0;
685684

@@ -700,7 +699,7 @@ Query termsQuery(String field, List<Object> values) {
700699
}
701700

702701
@Override
703-
Query rangeQuery(String field, Object lowerTerm, Object upperTerm,
702+
public Query rangeQuery(String field, Object lowerTerm, Object upperTerm,
704703
boolean includeLower, boolean includeUpper,
705704
boolean hasDocValues) {
706705
long l = Long.MIN_VALUE;
@@ -773,13 +772,13 @@ public final String typeName() {
773772
final NumericType numericType() {
774773
return numericType;
775774
}
776-
abstract Query termQuery(String field, Object value);
777-
abstract Query termsQuery(String field, List<Object> values);
778-
abstract Query rangeQuery(String field, Object lowerTerm, Object upperTerm,
775+
public abstract Query termQuery(String field, Object value);
776+
public abstract Query termsQuery(String field, List<Object> values);
777+
public abstract Query rangeQuery(String field, Object lowerTerm, Object upperTerm,
779778
boolean includeLower, boolean includeUpper,
780779
boolean hasDocValues);
781-
abstract Number parse(XContentParser parser, boolean coerce) throws IOException;
782-
abstract Number parse(Object value, boolean coerce);
780+
public abstract Number parse(XContentParser parser, boolean coerce) throws IOException;
781+
public abstract Number parse(Object value, boolean coerce);
783782
public abstract List<Field> createFields(String name, Number value, boolean indexed,
784783
boolean docValued, boolean stored);
785784
Number valueForSearch(Number value) {

core/src/main/java/org/elasticsearch/index/query/RangeQueryBuilder.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
import org.elasticsearch.index.mapper.FieldNamesFieldMapper;
4040
import org.elasticsearch.index.mapper.MappedFieldType;
4141
import org.elasticsearch.index.mapper.MapperService;
42-
import org.elasticsearch.index.mapper.RangeFieldMapper;
4342
import org.joda.time.DateTimeZone;
4443

4544
import java.io.IOException;

core/src/main/java/org/elasticsearch/index/search/QueryParserHelper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import org.elasticsearch.index.mapper.MapperService;
2929
import org.elasticsearch.index.mapper.MetadataFieldMapper;
3030
import org.elasticsearch.index.mapper.NumberFieldMapper;
31-
import org.elasticsearch.index.mapper.ScaledFloatFieldMapper;
3231
import org.elasticsearch.index.mapper.TextFieldMapper;
3332
import org.elasticsearch.index.query.QueryShardContext;
3433

@@ -44,6 +43,7 @@
4443
*/
4544
public final class QueryParserHelper {
4645
// Mapping types the "all-ish" query can be executed against
46+
// TODO: Fix the API so that we don't need a hardcoded list of types
4747
private static final Set<String> ALLOWED_QUERY_MAPPER_TYPES;
4848

4949
static {
@@ -54,7 +54,7 @@ public final class QueryParserHelper {
5454
for (NumberFieldMapper.NumberType nt : NumberFieldMapper.NumberType.values()) {
5555
ALLOWED_QUERY_MAPPER_TYPES.add(nt.typeName());
5656
}
57-
ALLOWED_QUERY_MAPPER_TYPES.add(ScaledFloatFieldMapper.CONTENT_TYPE);
57+
ALLOWED_QUERY_MAPPER_TYPES.add("scaled_float");
5858
ALLOWED_QUERY_MAPPER_TYPES.add(TextFieldMapper.CONTENT_TYPE);
5959
}
6060

0 commit comments

Comments
 (0)