Skip to content

Commit b1e4a24

Browse files
committed
boolean field type
1 parent 1a43a7a commit b1e4a24

File tree

6 files changed

+53
-13
lines changed

6 files changed

+53
-13
lines changed

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

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ private static BooleanFieldMapper toType(FieldMapper in) {
7878
public static final class Builder extends FieldMapper.DimensionBuilder {
7979

8080
private final Parameter<Boolean> docValues = Parameter.docValuesParam(m -> toType(m).hasDocValues, true);
81-
private final Parameter<Boolean> indexed = Parameter.indexParam(m -> toType(m).indexed, true);
81+
private final Parameter<Boolean> indexed;
8282
private final Parameter<Boolean> stored = Parameter.storeParam(m -> toType(m).stored, false);
8383
private final Parameter<Explicit<Boolean>> ignoreMalformed;
8484
private final Parameter<Boolean> nullValue = new Parameter<>(
@@ -106,15 +106,18 @@ public static final class Builder extends FieldMapper.DimensionBuilder {
106106
private final SourceKeepMode indexSourceKeepMode;
107107

108108
private final Parameter<Boolean> dimension;
109+
private final boolean indexDisabledByDefault;
109110

110111
public Builder(
111112
String name,
112113
ScriptCompiler scriptCompiler,
113114
boolean ignoreMalformedByDefault,
114115
IndexVersion indexCreatedVersion,
115-
SourceKeepMode indexSourceKeepMode
116+
SourceKeepMode indexSourceKeepMode,
117+
boolean indexDisabledByDefault
116118
) {
117119
super(name);
120+
indexed = Parameter.indexParam(m -> toType(m).indexed, indexDisabledByDefault == false);
118121
this.scriptCompiler = Objects.requireNonNull(scriptCompiler);
119122
this.indexCreatedVersion = Objects.requireNonNull(indexCreatedVersion);
120123
this.ignoreMalformed = Parameter.explicitBoolParam(
@@ -140,6 +143,7 @@ public Builder(
140143
});
141144

142145
this.indexSourceKeepMode = indexSourceKeepMode;
146+
this.indexDisabledByDefault = indexDisabledByDefault;
143147
}
144148

145149
public Builder dimension(boolean dimension) {
@@ -217,7 +221,8 @@ private FieldValues<Boolean> scriptValues() {
217221
c.scriptCompiler(),
218222
IGNORE_MALFORMED_SETTING.get(c.getSettings()),
219223
c.indexVersionCreated(),
220-
c.getIndexSettings().sourceKeepMode()
224+
c.getIndexSettings().sourceKeepMode(),
225+
c.getIndexSettings().isIndexDisabledByDefault()
221226
)
222227
);
223228

@@ -523,6 +528,7 @@ public Query rangeQuery(
523528

524529
private final String offsetsFieldName;
525530
private final SourceKeepMode indexSourceKeepMode;
531+
private final boolean indexDisabledByDefault;
526532

527533
protected BooleanFieldMapper(
528534
String simpleName,
@@ -546,6 +552,7 @@ protected BooleanFieldMapper(
546552
this.storeMalformedFields = storeMalformedFields;
547553
this.offsetsFieldName = offsetsFieldName;
548554
this.indexSourceKeepMode = builder.indexSourceKeepMode;
555+
this.indexDisabledByDefault = builder.indexDisabledByDefault;
549556
}
550557

551558
@Override
@@ -634,9 +641,14 @@ protected void indexScriptValues(
634641

635642
@Override
636643
public FieldMapper.Builder getMergeBuilder() {
637-
return new Builder(leafName(), scriptCompiler, ignoreMalformedByDefault, indexCreatedVersion, indexSourceKeepMode).dimension(
638-
fieldType().isDimension()
639-
).init(this);
644+
return new Builder(
645+
leafName(),
646+
scriptCompiler,
647+
ignoreMalformedByDefault,
648+
indexCreatedVersion,
649+
indexSourceKeepMode,
650+
indexDisabledByDefault
651+
).dimension(fieldType().isDimension()).init(this);
640652
}
641653

642654
@Override

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,8 @@ public boolean newDynamicBooleanField(DocumentParserContext context, String name
391391
ScriptCompiler.NONE,
392392
ignoreMalformed,
393393
context.indexSettings().getIndexVersionCreated(),
394-
context.indexSettings().sourceKeepMode()
394+
context.indexSettings().sourceKeepMode(),
395+
context.indexSettings().isIndexDisabledByDefault()
395396
),
396397
context
397398
);

server/src/test/java/org/elasticsearch/index/mapper/BooleanFieldMapperTests.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
package org.elasticsearch.index.mapper;
1111

1212
import org.apache.lucene.index.DocValuesType;
13+
import org.apache.lucene.index.IndexOptions;
1314
import org.apache.lucene.index.IndexableField;
1415
import org.apache.lucene.index.LeafReader;
1516
import org.apache.lucene.index.SortedNumericDocValues;
@@ -90,6 +91,33 @@ public void testDefaults() throws IOException {
9091
});
9192
}
9293

94+
public void testNotIndexed() throws Exception {
95+
DocumentMapper mapper = createDocumentMapper(fieldMapping(b -> {
96+
minimalMapping(b);
97+
b.field("index", false);
98+
}));
99+
ParsedDocument doc = mapper.parse(source(this::writeField));
100+
101+
List<IndexableField> fields = doc.rootDoc().getFields("field");
102+
assertEquals(1, fields.size());
103+
IndexableField field = fields.get(0);
104+
assertEquals(IndexOptions.NONE, fields.get(0).fieldType().indexOptions());
105+
assertEquals(DocValuesType.SORTED_NUMERIC, field.fieldType().docValuesType());
106+
}
107+
108+
public void testDisableDefaultIndex() throws IOException {
109+
var settings = Settings.builder().put(IndexSettings.INDEX_DISABLED_BY_DEFAULT.getKey(), true).build();
110+
var mapperService = createMapperService(settings, fieldMapping(this::minimalMapping));
111+
var documentMapper = mapperService.documentMapper();
112+
ParsedDocument doc = documentMapper.parse(source(this::writeField));
113+
114+
List<IndexableField> fields = doc.rootDoc().getFields("field");
115+
assertEquals(1, fields.size());
116+
IndexableField field = fields.get(0);
117+
assertEquals(IndexOptions.NONE, fields.get(0).fieldType().indexOptions());
118+
assertEquals(DocValuesType.SORTED_NUMERIC, field.fieldType().docValuesType());
119+
}
120+
93121
public void testSerialization() throws IOException {
94122

95123
DocumentMapper defaultMapper = createDocumentMapper(fieldMapping(this::minimalMapping));

server/src/test/java/org/elasticsearch/index/mapper/BooleanScriptFieldTypeTests.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -362,9 +362,8 @@ protected Query randomTermsQuery(MappedFieldType ft, SearchExecutionContext ctx)
362362
}
363363

364364
public void testDualingQueries() throws IOException {
365-
BooleanFieldMapper ootb = new BooleanFieldMapper.Builder("foo", ScriptCompiler.NONE, false, IndexVersion.current(), null).build(
366-
MapperBuilderContext.root(false, false)
367-
);
365+
BooleanFieldMapper ootb = new BooleanFieldMapper.Builder("foo", ScriptCompiler.NONE, false, IndexVersion.current(), null, false)
366+
.build(MapperBuilderContext.root(false, false));
368367
try (Directory directory = newDirectory(); RandomIndexWriter iw = new RandomIndexWriter(random(), directory)) {
369368
List<Boolean> values = randomList(0, 2, ESTestCase::randomBoolean);
370369
String source = "{\"foo\": " + values + "}";

server/src/test/java/org/elasticsearch/index/mapper/FieldAliasMapperValidationTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ public void testFieldAliasWithDifferentNestedScopes() {
160160
}
161161

162162
private static FieldMapper createFieldMapper(String parent, String name) {
163-
return new BooleanFieldMapper.Builder(name, ScriptCompiler.NONE, false, IndexVersion.current(), null).build(
163+
return new BooleanFieldMapper.Builder(name, ScriptCompiler.NONE, false, IndexVersion.current(), null, false).build(
164164
new MapperBuilderContext(
165165
parent,
166166
false,

server/src/test/java/org/elasticsearch/index/mapper/MultiFieldsSerializationTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@ public void testSorting() {
3838
sortedNames.sort(Comparator.naturalOrder());
3939

4040
for (String name : names) {
41-
builder.add(new BooleanFieldMapper.Builder(name, ScriptCompiler.NONE, false, IndexVersion.current(), null));
41+
builder.add(new BooleanFieldMapper.Builder(name, ScriptCompiler.NONE, false, IndexVersion.current(), null, false));
4242
}
4343

44-
Mapper.Builder root = new BooleanFieldMapper.Builder("root", ScriptCompiler.NONE, false, IndexVersion.current(), null);
44+
Mapper.Builder root = new BooleanFieldMapper.Builder("root", ScriptCompiler.NONE, false, IndexVersion.current(), null, false);
4545
FieldMapper.MultiFields multiFields = builder.build(root, MapperBuilderContext.root(false, false));
4646

4747
String serialized = Strings.toString(multiFields);

0 commit comments

Comments
 (0)