Skip to content

Commit 772ee9d

Browse files
committed
move terms to use new field data
1 parent e5b6513 commit 772ee9d

26 files changed

+222
-5094
lines changed

src/main/java/org/elasticsearch/index/fielddata/ordinals/EmptyOrdinals.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public int getNumDocs() {
5353

5454
@Override
5555
public int getNumOrds() {
56-
return numDocs + 1;
56+
return 1;
5757
}
5858

5959
@Override

src/main/java/org/elasticsearch/search/facet/terms/InternalTermsFacet.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,8 @@
2121

2222
import org.elasticsearch.search.facet.Facet;
2323
import org.elasticsearch.search.facet.InternalFacet;
24-
import org.elasticsearch.search.facet.terms.bytes.InternalByteTermsFacet;
2524
import org.elasticsearch.search.facet.terms.doubles.InternalDoubleTermsFacet;
26-
import org.elasticsearch.search.facet.terms.floats.InternalFloatTermsFacet;
27-
import org.elasticsearch.search.facet.terms.ints.InternalIntTermsFacet;
28-
import org.elasticsearch.search.facet.terms.ip.InternalIpTermsFacet;
2925
import org.elasticsearch.search.facet.terms.longs.InternalLongTermsFacet;
30-
import org.elasticsearch.search.facet.terms.shorts.InternalShortTermsFacet;
3126
import org.elasticsearch.search.facet.terms.strings.InternalStringTermsFacet;
3227

3328
import java.util.List;
@@ -41,11 +36,6 @@ public static void registerStreams() {
4136
InternalStringTermsFacet.registerStream();
4237
InternalLongTermsFacet.registerStream();
4338
InternalDoubleTermsFacet.registerStream();
44-
InternalIntTermsFacet.registerStream();
45-
InternalFloatTermsFacet.registerStream();
46-
InternalShortTermsFacet.registerStream();
47-
InternalByteTermsFacet.registerStream();
48-
InternalIpTermsFacet.registerStream();
4939
}
5040

5141
public abstract Facet reduce(String name, List<Facet> facets);

src/main/java/org/elasticsearch/search/facet/terms/TermsFacetProcessor.java

Lines changed: 31 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -27,27 +27,18 @@
2727
import org.elasticsearch.common.regex.Regex;
2828
import org.elasticsearch.common.settings.Settings;
2929
import org.elasticsearch.common.xcontent.XContentParser;
30-
import org.elasticsearch.index.field.data.FieldDataType;
30+
import org.elasticsearch.index.fielddata.IndexFieldData;
31+
import org.elasticsearch.index.fielddata.IndexNumericFieldData;
32+
import org.elasticsearch.index.fielddata.IndexOrdinalFieldData;
3133
import org.elasticsearch.index.mapper.FieldMapper;
32-
import org.elasticsearch.index.mapper.ip.IpFieldMapper;
34+
import org.elasticsearch.script.SearchScript;
3335
import org.elasticsearch.search.facet.Facet;
3436
import org.elasticsearch.search.facet.FacetCollector;
37+
import org.elasticsearch.search.facet.FacetPhaseExecutionException;
3538
import org.elasticsearch.search.facet.FacetProcessor;
36-
import org.elasticsearch.search.facet.terms.bytes.TermsByteFacetCollector;
37-
import org.elasticsearch.search.facet.terms.bytes.TermsByteOrdinalsFacetCollector;
3839
import org.elasticsearch.search.facet.terms.doubles.TermsDoubleFacetCollector;
39-
import org.elasticsearch.search.facet.terms.doubles.TermsDoubleOrdinalsFacetCollector;
40-
import org.elasticsearch.search.facet.terms.floats.TermsFloatFacetCollector;
41-
import org.elasticsearch.search.facet.terms.floats.TermsFloatOrdinalsFacetCollector;
4240
import org.elasticsearch.search.facet.terms.index.IndexNameFacetCollector;
43-
import org.elasticsearch.search.facet.terms.ints.TermsIntFacetCollector;
44-
import org.elasticsearch.search.facet.terms.ints.TermsIntOrdinalsFacetCollector;
45-
import org.elasticsearch.search.facet.terms.ip.TermsIpFacetCollector;
46-
import org.elasticsearch.search.facet.terms.ip.TermsIpOrdinalsFacetCollector;
4741
import org.elasticsearch.search.facet.terms.longs.TermsLongFacetCollector;
48-
import org.elasticsearch.search.facet.terms.longs.TermsLongOrdinalsFacetCollector;
49-
import org.elasticsearch.search.facet.terms.shorts.TermsShortFacetCollector;
50-
import org.elasticsearch.search.facet.terms.shorts.TermsShortOrdinalsFacetCollector;
5142
import org.elasticsearch.search.facet.terms.strings.FieldsTermsStringFacetCollector;
5243
import org.elasticsearch.search.facet.terms.strings.ScriptTermsStringFieldFacetCollector;
5344
import org.elasticsearch.search.facet.terms.strings.TermsStringFacetCollector;
@@ -147,64 +138,41 @@ public FacetCollector parse(String facetName, XContentParser parser, SearchConte
147138
if (regex != null) {
148139
pattern = Regex.compile(regex, regexFlags);
149140
}
141+
142+
SearchScript searchScript = null;
143+
if (script != null) {
144+
searchScript = context.scriptService().search(context.lookup(), scriptLang, script, params);
145+
}
146+
150147
if (fieldsNames != null) {
151-
return new FieldsTermsStringFacetCollector(facetName, fieldsNames, size, comparatorType, allTerms, context, excluded, pattern, scriptLang, script, params);
148+
return new FieldsTermsStringFacetCollector(facetName, fieldsNames, size, comparatorType, allTerms, context, excluded, pattern, searchScript);
152149
}
153150
if (field == null && fieldsNames == null && script != null) {
154151
return new ScriptTermsStringFieldFacetCollector(facetName, size, comparatorType, context, excluded, pattern, scriptLang, script, params);
155152
}
156153

157154
FieldMapper fieldMapper = context.smartNameFieldMapper(field);
158-
if (fieldMapper != null) {
159-
if (fieldMapper instanceof IpFieldMapper) {
160-
if (script != null || "map".equals(executionHint)) {
161-
return new TermsIpFacetCollector(facetName, field, size, comparatorType, allTerms, context, scriptLang, script, params);
162-
} else {
163-
return new TermsIpOrdinalsFacetCollector(facetName, field, size, comparatorType, allTerms, context, null);
164-
}
165-
} else if (fieldMapper.fieldDataType() == FieldDataType.DefaultTypes.LONG) {
166-
if (script != null || "map".equals(executionHint)) {
167-
return new TermsLongFacetCollector(facetName, field, size, comparatorType, allTerms, context, excluded, scriptLang, script, params);
168-
} else {
169-
return new TermsLongOrdinalsFacetCollector(facetName, field, size, comparatorType, allTerms, context, excluded);
170-
}
171-
} else if (fieldMapper.fieldDataType() == FieldDataType.DefaultTypes.DOUBLE) {
172-
if (script != null) {
173-
return new TermsDoubleFacetCollector(facetName, field, size, comparatorType, allTerms, context, excluded, scriptLang, script, params);
174-
} else {
175-
return new TermsDoubleOrdinalsFacetCollector(facetName, field, size, comparatorType, allTerms, context, excluded);
176-
}
177-
} else if (fieldMapper.fieldDataType() == FieldDataType.DefaultTypes.INT) {
178-
if (script != null || "map".equals(executionHint)) {
179-
return new TermsIntFacetCollector(facetName, field, size, comparatorType, allTerms, context, excluded, scriptLang, script, params);
180-
} else {
181-
return new TermsIntOrdinalsFacetCollector(facetName, field, size, comparatorType, allTerms, context, excluded);
182-
}
183-
} else if (fieldMapper.fieldDataType() == FieldDataType.DefaultTypes.FLOAT) {
184-
if (script != null || "map".equals(executionHint)) {
185-
return new TermsFloatFacetCollector(facetName, field, size, comparatorType, allTerms, context, excluded, scriptLang, script, params);
186-
} else {
187-
return new TermsFloatOrdinalsFacetCollector(facetName, field, size, comparatorType, allTerms, context, excluded);
188-
}
189-
} else if (fieldMapper.fieldDataType() == FieldDataType.DefaultTypes.SHORT) {
190-
if (script != null || "map".equals(executionHint)) {
191-
return new TermsShortFacetCollector(facetName, field, size, comparatorType, allTerms, context, excluded, scriptLang, script, params);
192-
} else {
193-
return new TermsShortOrdinalsFacetCollector(facetName, field, size, comparatorType, allTerms, context, excluded);
194-
}
195-
} else if (fieldMapper.fieldDataType() == FieldDataType.DefaultTypes.BYTE) {
196-
if (script != null || "map".equals(executionHint)) {
197-
return new TermsByteFacetCollector(facetName, field, size, comparatorType, allTerms, context, excluded, scriptLang, script, params);
198-
} else {
199-
return new TermsByteOrdinalsFacetCollector(facetName, field, size, comparatorType, allTerms, context, excluded);
200-
}
201-
} else if (fieldMapper.fieldDataType() == FieldDataType.DefaultTypes.STRING) {
202-
if (script == null && !"map".equals(executionHint)) {
203-
return new TermsStringOrdinalsFacetCollector(facetName, field, size, comparatorType, allTerms, context, excluded, pattern);
204-
}
155+
if (fieldMapper == null) {
156+
throw new FacetPhaseExecutionException(facetName, "failed to find mapping for [" + field + "]");
157+
}
158+
159+
IndexFieldData indexFieldData = context.fieldData().getForField(fieldMapper);
160+
if (indexFieldData instanceof IndexNumericFieldData) {
161+
IndexNumericFieldData indexNumericFieldData = (IndexNumericFieldData) indexFieldData;
162+
if (indexNumericFieldData.getNumericType().isFloatingPoint()) {
163+
return new TermsDoubleFacetCollector(facetName, indexNumericFieldData, size, comparatorType, allTerms, context, excluded, searchScript);
164+
} else {
165+
return new TermsLongFacetCollector(facetName, indexNumericFieldData, size, comparatorType, allTerms, context, excluded, searchScript);
166+
}
167+
} else {
168+
if (script != null || "map".equals(executionHint)) {
169+
return new TermsStringFacetCollector(facetName, indexFieldData, size, comparatorType, allTerms, context, excluded, pattern, searchScript);
170+
} else if (indexFieldData instanceof IndexOrdinalFieldData) {
171+
return new TermsStringOrdinalsFacetCollector(facetName, (IndexOrdinalFieldData) indexFieldData, size, comparatorType, allTerms, context, excluded, pattern);
172+
} else {
173+
return new TermsStringFacetCollector(facetName, indexFieldData, size, comparatorType, allTerms, context, excluded, pattern, searchScript);
205174
}
206175
}
207-
return new TermsStringFacetCollector(facetName, field, size, comparatorType, allTerms, context, excluded, pattern, scriptLang, script, params);
208176
}
209177

210178
@Override

0 commit comments

Comments
 (0)