Skip to content

Commit 53f65d8

Browse files
s1monwkimchy
authored andcommitted
Remove / deprecated omit_term_freq_and_positions in favor of IndexOptions exposed via mapping API
1 parent 980fc6c commit 53f65d8

29 files changed

+239
-131
lines changed

src/main/java/org/elasticsearch/index/mapper/FieldMapper.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.apache.lucene.analysis.Analyzer;
2323
import org.apache.lucene.document.Field;
2424
import org.apache.lucene.document.Fieldable;
25+
import org.apache.lucene.index.FieldInfo.IndexOptions;
2526
import org.apache.lucene.index.Term;
2627
import org.apache.lucene.search.Filter;
2728
import org.apache.lucene.search.MultiTermQuery;
@@ -135,7 +136,7 @@ public Term createIndexNameTerm(String value) {
135136

136137
boolean omitNorms();
137138

138-
boolean omitTermFreqAndPositions();
139+
IndexOptions indexOptions();
139140

140141
/**
141142
* The analyzer that will be used to index the field.

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

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@
2323
import org.apache.lucene.document.Field;
2424
import org.apache.lucene.document.Fieldable;
2525
import org.apache.lucene.index.FieldInfo;
26+
import org.apache.lucene.index.FieldInfo.IndexOptions;
2627
import org.apache.lucene.index.Term;
2728
import org.apache.lucene.search.*;
29+
import org.elasticsearch.ElasticSearchIllegalArgumentException;
2830
import org.elasticsearch.common.Nullable;
2931
import org.elasticsearch.common.lucene.Lucene;
3032
import org.elasticsearch.common.lucene.search.TermFilter;
@@ -47,7 +49,7 @@ public static class Defaults {
4749
public static final Field.TermVector TERM_VECTOR = Field.TermVector.NO;
4850
public static final float BOOST = 1.0f;
4951
public static final boolean OMIT_NORMS = false;
50-
public static final boolean OMIT_TERM_FREQ_AND_POSITIONS = false;
52+
public static final IndexOptions INDEX_OPTIONS = IndexOptions.DOCS_AND_FREQS_AND_POSITIONS;
5153
}
5254

5355
public abstract static class OpenBuilder<T extends Builder, Y extends AbstractFieldMapper> extends AbstractFieldMapper.Builder<T, Y> {
@@ -82,8 +84,8 @@ public T omitNorms(boolean omitNorms) {
8284
}
8385

8486
@Override
85-
public T omitTermFreqAndPositions(boolean omitTermFreqAndPositions) {
86-
return super.omitTermFreqAndPositions(omitTermFreqAndPositions);
87+
public T indexOptions(IndexOptions indexOptions) {
88+
return super.indexOptions(indexOptions);
8789
}
8890

8991
@Override
@@ -113,9 +115,7 @@ public abstract static class Builder<T extends Builder, Y extends AbstractFieldM
113115
protected float boost = Defaults.BOOST;
114116

115117
protected boolean omitNorms = Defaults.OMIT_NORMS;
116-
117-
protected boolean omitTermFreqAndPositions = Defaults.OMIT_TERM_FREQ_AND_POSITIONS;
118-
118+
119119
protected String indexName;
120120

121121
protected NamedAnalyzer indexAnalyzer;
@@ -124,6 +124,8 @@ public abstract static class Builder<T extends Builder, Y extends AbstractFieldM
124124

125125
protected Boolean includeInAll;
126126

127+
protected IndexOptions indexOptions = Defaults.INDEX_OPTIONS;
128+
127129
protected Builder(String name) {
128130
super(name);
129131
}
@@ -152,12 +154,12 @@ protected T omitNorms(boolean omitNorms) {
152154
this.omitNorms = omitNorms;
153155
return builder;
154156
}
155-
156-
protected T omitTermFreqAndPositions(boolean omitTermFreqAndPositions) {
157-
this.omitTermFreqAndPositions = omitTermFreqAndPositions;
157+
158+
protected T indexOptions(IndexOptions indexOptions) {
159+
this.indexOptions = indexOptions;
158160
return builder;
159161
}
160-
162+
161163
protected T indexName(String indexName) {
162164
this.indexName = indexName;
163165
return builder;
@@ -206,24 +208,23 @@ protected String buildFullName(BuilderContext context) {
206208
protected float boost;
207209

208210
protected final boolean omitNorms;
209-
210-
protected final boolean omitTermFreqAndPositions;
211+
211212
protected final FieldInfo.IndexOptions indexOptions;
212213

213214
protected final NamedAnalyzer indexAnalyzer;
214215

215216
protected final NamedAnalyzer searchAnalyzer;
216217

217218
protected AbstractFieldMapper(Names names, Field.Index index, Field.Store store, Field.TermVector termVector,
218-
float boost, boolean omitNorms, boolean omitTermFreqAndPositions, NamedAnalyzer indexAnalyzer, NamedAnalyzer searchAnalyzer) {
219+
float boost, boolean omitNorms, IndexOptions indexOptions, NamedAnalyzer indexAnalyzer, NamedAnalyzer searchAnalyzer) {
219220
this.names = names;
220221
this.index = index;
221222
this.store = store;
222223
this.termVector = termVector;
223224
this.boost = boost;
224225
this.omitNorms = omitNorms;
225-
this.omitTermFreqAndPositions = omitTermFreqAndPositions;
226-
this.indexOptions = omitTermFreqAndPositions ? FieldInfo.IndexOptions.DOCS_ONLY : FieldInfo.IndexOptions.DOCS_AND_FREQS_AND_POSITIONS;
226+
this.indexOptions = indexOptions;
227+
227228
// automatically set to keyword analyzer if its indexed and not analyzed
228229
if (indexAnalyzer == null && !index.isAnalyzed() && index.isIndexed()) {
229230
this.indexAnalyzer = Lucene.KEYWORD_ANALYZER;
@@ -287,10 +288,10 @@ public float boost() {
287288
public boolean omitNorms() {
288289
return this.omitNorms;
289290
}
290-
291+
291292
@Override
292-
public boolean omitTermFreqAndPositions() {
293-
return this.omitTermFreqAndPositions;
293+
public IndexOptions indexOptions() {
294+
return this.indexOptions;
294295
}
295296

296297
@Override
@@ -479,6 +480,19 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
479480
builder.endObject();
480481
return builder;
481482
}
483+
484+
protected static String indexOptionToString(IndexOptions indexOption) {
485+
switch (indexOption) {
486+
case DOCS_AND_FREQS:
487+
return TypeParsers.INDEX_OPTIONS_FREQS;
488+
case DOCS_AND_FREQS_AND_POSITIONS:
489+
return TypeParsers.INDEX_OPTIONS_POSITIONS;
490+
case DOCS_ONLY:
491+
return TypeParsers.INDEX_OPTIONS_DOCS;
492+
default:
493+
throw new ElasticSearchIllegalArgumentException("Unknown IndexOptions [" + indexOption + "]");
494+
}
495+
}
482496

483497
protected void doXContentBody(XContentBuilder builder) throws IOException {
484498
builder.field("type", contentType());

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import org.apache.lucene.document.Field;
2323
import org.apache.lucene.document.Fieldable;
24+
import org.apache.lucene.index.FieldInfo.IndexOptions;
2425
import org.elasticsearch.ElasticSearchParseException;
2526
import org.elasticsearch.common.Base64;
2627
import org.elasticsearch.common.Strings;
@@ -114,7 +115,7 @@ public Mapper.Builder parse(String name, Map<String, Object> node, ParserContext
114115
private long compressThreshold;
115116

116117
protected BinaryFieldMapper(Names names, Field.Store store, Boolean compress, long compressThreshold) {
117-
super(names, Field.Index.NO, store, Field.TermVector.NO, 1.0f, true, true, null, null);
118+
super(names, Field.Index.NO, store, Field.TermVector.NO, 1.0f, true, IndexOptions.DOCS_ONLY, null, null);
118119
this.compress = compress;
119120
this.compressThreshold = compressThreshold;
120121
}

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

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import org.apache.lucene.document.Field;
2323
import org.apache.lucene.document.Fieldable;
24+
import org.apache.lucene.index.FieldInfo.IndexOptions;
2425
import org.apache.lucene.search.Filter;
2526
import org.elasticsearch.common.Booleans;
2627
import org.elasticsearch.common.Strings;
@@ -92,15 +93,11 @@ public Builder indexName(String indexName) {
9293
return super.indexName(indexName);
9394
}
9495

95-
@Override
96-
public Builder omitTermFreqAndPositions(boolean omitTermFreqAndPositions) {
97-
return super.omitTermFreqAndPositions(omitTermFreqAndPositions);
98-
}
9996

10097
@Override
10198
public BooleanFieldMapper build(BuilderContext context) {
10299
return new BooleanFieldMapper(buildNames(context), index, store,
103-
termVector, boost, omitNorms, omitTermFreqAndPositions, nullValue);
100+
termVector, boost, omitNorms, indexOptions, nullValue);
104101
}
105102
}
106103

@@ -123,8 +120,8 @@ public Mapper.Builder parse(String name, Map<String, Object> node, ParserContext
123120
private Boolean nullValue;
124121

125122
protected BooleanFieldMapper(Names names, Field.Index index, Field.Store store, Field.TermVector termVector,
126-
float boost, boolean omitNorms, boolean omitTermFreqAndPositions, Boolean nullValue) {
127-
super(names, index, store, termVector, boost, omitNorms, omitTermFreqAndPositions, Lucene.KEYWORD_ANALYZER, Lucene.KEYWORD_ANALYZER);
123+
float boost, boolean omitNorms, IndexOptions indexOptions, Boolean nullValue) {
124+
super(names, index, store, termVector, boost, omitNorms, indexOptions, Lucene.KEYWORD_ANALYZER, Lucene.KEYWORD_ANALYZER);
128125
this.nullValue = nullValue;
129126
}
130127

@@ -210,8 +207,8 @@ protected void doXContentBody(XContentBuilder builder) throws IOException {
210207
if (omitNorms != Defaults.OMIT_NORMS) {
211208
builder.field("omit_norms", omitNorms);
212209
}
213-
if (omitTermFreqAndPositions != Defaults.OMIT_TERM_FREQ_AND_POSITIONS) {
214-
builder.field("omit_term_freq_and_positions", omitTermFreqAndPositions);
210+
if (indexOptions != Defaults.INDEX_OPTIONS) {
211+
builder.field("index_options", indexOptionToString(indexOptions));
215212
}
216213
if (nullValue != null) {
217214
builder.field("null_value", nullValue);

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

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.apache.lucene.analysis.TokenStream;
2323
import org.apache.lucene.document.Field;
2424
import org.apache.lucene.document.Fieldable;
25+
import org.apache.lucene.index.FieldInfo.IndexOptions;
2526
import org.apache.lucene.search.Filter;
2627
import org.apache.lucene.search.NumericRangeFilter;
2728
import org.apache.lucene.search.NumericRangeQuery;
@@ -36,6 +37,7 @@
3637
import org.elasticsearch.index.cache.field.data.FieldDataCache;
3738
import org.elasticsearch.index.field.data.FieldDataType;
3839
import org.elasticsearch.index.mapper.*;
40+
import org.elasticsearch.index.mapper.core.BooleanFieldMapper.Defaults;
3941
import org.elasticsearch.index.query.QueryParseContext;
4042
import org.elasticsearch.index.search.NumericRangeFieldDataFilter;
4143

@@ -74,8 +76,7 @@ public Builder nullValue(byte nullValue) {
7476
@Override
7577
public ByteFieldMapper build(BuilderContext context) {
7678
ByteFieldMapper fieldMapper = new ByteFieldMapper(buildNames(context),
77-
precisionStep, fuzzyFactor, index, store, boost, omitNorms,
78-
omitTermFreqAndPositions, nullValue, ignoreMalformed);
79+
precisionStep, fuzzyFactor, index, store, boost, omitNorms, indexOptions, nullValue, ignoreMalformed);
7980
fieldMapper.includeInAll(includeInAll);
8081
return fieldMapper;
8182
}
@@ -102,9 +103,9 @@ public Mapper.Builder parse(String name, Map<String, Object> node, ParserContext
102103
private String nullValueAsString;
103104

104105
protected ByteFieldMapper(Names names, int precisionStep, String fuzzyFactor, Field.Index index, Field.Store store,
105-
float boost, boolean omitNorms, boolean omitTermFreqAndPositions,
106+
float boost, boolean omitNorms, IndexOptions indexOptions,
106107
Byte nullValue, boolean ignoreMalformed) {
107-
super(names, precisionStep, fuzzyFactor, index, store, boost, omitNorms, omitTermFreqAndPositions,
108+
super(names, precisionStep, fuzzyFactor, index, store, boost, omitNorms, indexOptions,
108109
ignoreMalformed, new NamedAnalyzer("_byte/" + precisionStep, new NumericIntegerAnalyzer(precisionStep)),
109110
new NamedAnalyzer("_byte/max", new NumericIntegerAnalyzer(Integer.MAX_VALUE)));
110111
this.nullValue = nullValue;
@@ -323,8 +324,8 @@ protected void doXContentBody(XContentBuilder builder) throws IOException {
323324
if (omitNorms != Defaults.OMIT_NORMS) {
324325
builder.field("omit_norms", omitNorms);
325326
}
326-
if (omitTermFreqAndPositions != Defaults.OMIT_TERM_FREQ_AND_POSITIONS) {
327-
builder.field("omit_term_freq_and_positions", omitTermFreqAndPositions);
327+
if (indexOptions != Defaults.INDEX_OPTIONS) {
328+
builder.field("index_options", indexOptionToString(indexOptions));
328329
}
329330
if (precisionStep != Defaults.PRECISION_STEP) {
330331
builder.field("precision_step", precisionStep);

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import org.apache.lucene.document.Field;
2323
import org.apache.lucene.document.Fieldable;
24+
import org.apache.lucene.index.FieldInfo.IndexOptions;
2425
import org.apache.lucene.search.Filter;
2526
import org.apache.lucene.search.NumericRangeFilter;
2627
import org.apache.lucene.search.NumericRangeQuery;
@@ -40,6 +41,7 @@
4041
import org.elasticsearch.index.cache.field.data.FieldDataCache;
4142
import org.elasticsearch.index.field.data.FieldDataType;
4243
import org.elasticsearch.index.mapper.*;
44+
import org.elasticsearch.index.mapper.core.BooleanFieldMapper.Defaults;
4345
import org.elasticsearch.index.query.QueryParseContext;
4446
import org.elasticsearch.index.search.NumericRangeFieldDataFilter;
4547

@@ -102,7 +104,7 @@ public DateFieldMapper build(BuilderContext context) {
102104
parseUpperInclusive = context.indexSettings().getAsBoolean("index.mapping.date.parse_upper_inclusive", Defaults.PARSE_UPPER_INCLUSIVE);
103105
}
104106
DateFieldMapper fieldMapper = new DateFieldMapper(buildNames(context), dateTimeFormatter,
105-
precisionStep, fuzzyFactor, index, store, boost, omitNorms, omitTermFreqAndPositions, nullValue,
107+
precisionStep, fuzzyFactor, index, store, boost, omitNorms, indexOptions, nullValue,
106108
timeUnit, parseUpperInclusive, ignoreMalformed);
107109
fieldMapper.includeInAll(includeInAll);
108110
return fieldMapper;
@@ -141,9 +143,9 @@ public Mapper.Builder parse(String name, Map<String, Object> node, ParserContext
141143

142144
protected DateFieldMapper(Names names, FormatDateTimeFormatter dateTimeFormatter, int precisionStep, String fuzzyFactor,
143145
Field.Index index, Field.Store store,
144-
float boost, boolean omitNorms, boolean omitTermFreqAndPositions,
146+
float boost, boolean omitNorms, IndexOptions indexOptions,
145147
String nullValue, TimeUnit timeUnit, boolean parseUpperInclusive, boolean ignoreMalformed) {
146-
super(names, precisionStep, fuzzyFactor, index, store, boost, omitNorms, omitTermFreqAndPositions,
148+
super(names, precisionStep, fuzzyFactor, index, store, boost, omitNorms, indexOptions,
147149
ignoreMalformed, new NamedAnalyzer("_date/" + precisionStep,
148150
new NumericDateAnalyzer(precisionStep, dateTimeFormatter.parser())),
149151
new NamedAnalyzer("_date/max", new NumericDateAnalyzer(Integer.MAX_VALUE, dateTimeFormatter.parser())));
@@ -395,8 +397,8 @@ protected void doXContentBody(XContentBuilder builder) throws IOException {
395397
if (omitNorms != Defaults.OMIT_NORMS) {
396398
builder.field("omit_norms", omitNorms);
397399
}
398-
if (omitTermFreqAndPositions != Defaults.OMIT_TERM_FREQ_AND_POSITIONS) {
399-
builder.field("omit_term_freq_and_positions", omitTermFreqAndPositions);
400+
if (indexOptions != Defaults.INDEX_OPTIONS) {
401+
builder.field("index_options", indexOptionToString(indexOptions));
400402
}
401403
if (precisionStep != Defaults.PRECISION_STEP) {
402404
builder.field("precision_step", precisionStep);

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.apache.lucene.analysis.TokenStream;
2323
import org.apache.lucene.document.Field;
2424
import org.apache.lucene.document.Fieldable;
25+
import org.apache.lucene.index.FieldInfo.IndexOptions;
2526
import org.apache.lucene.search.Filter;
2627
import org.apache.lucene.search.NumericRangeFilter;
2728
import org.apache.lucene.search.NumericRangeQuery;
@@ -36,6 +37,7 @@
3637
import org.elasticsearch.index.cache.field.data.FieldDataCache;
3738
import org.elasticsearch.index.field.data.FieldDataType;
3839
import org.elasticsearch.index.mapper.*;
40+
import org.elasticsearch.index.mapper.core.BooleanFieldMapper.Defaults;
3941
import org.elasticsearch.index.query.QueryParseContext;
4042
import org.elasticsearch.index.search.NumericRangeFieldDataFilter;
4143

@@ -74,7 +76,7 @@ public Builder nullValue(double nullValue) {
7476
@Override
7577
public DoubleFieldMapper build(BuilderContext context) {
7678
DoubleFieldMapper fieldMapper = new DoubleFieldMapper(buildNames(context),
77-
precisionStep, fuzzyFactor, index, store, boost, omitNorms, omitTermFreqAndPositions, nullValue,
79+
precisionStep, fuzzyFactor, index, store, boost, omitNorms, indexOptions, nullValue,
7880
ignoreMalformed);
7981
fieldMapper.includeInAll(includeInAll);
8082
return fieldMapper;
@@ -104,9 +106,9 @@ public Mapper.Builder parse(String name, Map<String, Object> node, ParserContext
104106

105107
protected DoubleFieldMapper(Names names, int precisionStep, String fuzzyFactor,
106108
Field.Index index, Field.Store store,
107-
float boost, boolean omitNorms, boolean omitTermFreqAndPositions,
109+
float boost, boolean omitNorms, IndexOptions indexOptions,
108110
Double nullValue, boolean ignoreMalformed) {
109-
super(names, precisionStep, fuzzyFactor, index, store, boost, omitNorms, omitTermFreqAndPositions,
111+
super(names, precisionStep, fuzzyFactor, index, store, boost, omitNorms, indexOptions,
110112
ignoreMalformed, new NamedAnalyzer("_double/" + precisionStep, new NumericDoubleAnalyzer(precisionStep)),
111113
new NamedAnalyzer("_double/max", new NumericDoubleAnalyzer(Integer.MAX_VALUE)));
112114
this.nullValue = nullValue;
@@ -325,8 +327,8 @@ protected void doXContentBody(XContentBuilder builder) throws IOException {
325327
if (omitNorms != Defaults.OMIT_NORMS) {
326328
builder.field("omit_norms", omitNorms);
327329
}
328-
if (omitTermFreqAndPositions != Defaults.OMIT_TERM_FREQ_AND_POSITIONS) {
329-
builder.field("omit_term_freq_and_positions", omitTermFreqAndPositions);
330+
if (indexOptions != Defaults.INDEX_OPTIONS) {
331+
builder.field("index_options", indexOptionToString(indexOptions));
330332
}
331333
if (precisionStep != Defaults.PRECISION_STEP) {
332334
builder.field("precision_step", precisionStep);

0 commit comments

Comments
 (0)