diff --git a/modules/elasticsearch/src/main/java/org/apache/lucene/queryParser/MapperQueryParser.java b/modules/elasticsearch/src/main/java/org/apache/lucene/queryParser/MapperQueryParser.java index e9c68854be7..61424dfddf4 100644 --- a/modules/elasticsearch/src/main/java/org/apache/lucene/queryParser/MapperQueryParser.java +++ b/modules/elasticsearch/src/main/java/org/apache/lucene/queryParser/MapperQueryParser.java @@ -19,6 +19,7 @@ package org.apache.lucene.queryParser; +import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; import org.apache.lucene.index.Term; @@ -30,7 +31,6 @@ import org.elasticsearch.common.io.FastStringReader; import org.elasticsearch.common.lucene.Lucene; import org.elasticsearch.common.lucene.search.Queries; import org.elasticsearch.index.mapper.FieldMapper; -import org.elasticsearch.index.mapper.FieldMappers; import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.index.mapper.internal.AllFieldMapper; import org.elasticsearch.index.query.QueryParseContext; @@ -115,9 +115,11 @@ public class MapperQueryParser extends QueryParser { return fieldQueryExtension.query(parseContext, queryText); } currentMapper = null; - if (parseContext.mapperService() != null) { - MapperService.SmartNameFieldMappers fieldMappers = parseContext.mapperService().smartName(field); + Analyzer oldAnalyzer = analyzer; + try { + MapperService.SmartNameFieldMappers fieldMappers = parseContext.smartFieldMappers(field); if (fieldMappers != null) { + analyzer = fieldMappers.searchAnalyzer(); currentMapper = fieldMappers.fieldMappers().mapper(); if (currentMapper != null) { Query query = null; @@ -130,8 +132,10 @@ public class MapperQueryParser extends QueryParser { return wrapSmartNameQuery(query, fieldMappers, parseContext); } } + return super.getFieldQuery(field, queryText, quoted); + } finally { + analyzer = oldAnalyzer; } - return super.getFieldQuery(field, queryText, quoted); } @Override protected Query getRangeQuery(String field, String part1, String part2, boolean inclusive) throws ParseException { @@ -142,14 +146,12 @@ public class MapperQueryParser extends QueryParser { part2 = null; } currentMapper = null; - if (parseContext.mapperService() != null) { - MapperService.SmartNameFieldMappers fieldMappers = parseContext.mapperService().smartName(field); - if (fieldMappers != null) { - currentMapper = fieldMappers.fieldMappers().mapper(); - if (currentMapper != null) { - Query rangeQuery = currentMapper.rangeQuery(part1, part2, inclusive, inclusive); - return wrapSmartNameQuery(rangeQuery, fieldMappers, parseContext); - } + MapperService.SmartNameFieldMappers fieldMappers = parseContext.smartFieldMappers(field); + if (fieldMappers != null) { + currentMapper = fieldMappers.fieldMappers().mapper(); + if (currentMapper != null) { + Query rangeQuery = currentMapper.rangeQuery(part1, part2, inclusive, inclusive); + return wrapSmartNameQuery(rangeQuery, fieldMappers, parseContext); } } return newRangeQuery(field, part1, part2, inclusive); @@ -157,14 +159,12 @@ public class MapperQueryParser extends QueryParser { @Override protected Query getFuzzyQuery(String field, String termStr, float minSimilarity) throws ParseException { currentMapper = null; - if (parseContext.mapperService() != null) { - MapperService.SmartNameFieldMappers fieldMappers = parseContext.mapperService().smartName(field); - if (fieldMappers != null) { - currentMapper = fieldMappers.fieldMappers().mapper(); - if (currentMapper != null) { - Query fuzzyQuery = currentMapper.fuzzyQuery(termStr, minSimilarity, fuzzyPrefixLength, FuzzyQuery.defaultMaxExpansions); - return wrapSmartNameQuery(fuzzyQuery, fieldMappers, parseContext); - } + MapperService.SmartNameFieldMappers fieldMappers = parseContext.smartFieldMappers(field); + if (fieldMappers != null) { + currentMapper = fieldMappers.fieldMappers().mapper(); + if (currentMapper != null) { + Query fuzzyQuery = currentMapper.fuzzyQuery(termStr, minSimilarity, fuzzyPrefixLength, FuzzyQuery.defaultMaxExpansions); + return wrapSmartNameQuery(fuzzyQuery, fieldMappers, parseContext); } } return super.getFuzzyQuery(field, termStr, minSimilarity); @@ -173,17 +173,21 @@ public class MapperQueryParser extends QueryParser { @Override protected Query getPrefixQuery(String field, String termStr) throws ParseException { String indexedNameField = field; currentMapper = null; - if (parseContext.mapperService() != null) { - MapperService.SmartNameFieldMappers fieldMappers = parseContext.mapperService().smartName(field); + Analyzer oldAnalyzer = analyzer; + try { + MapperService.SmartNameFieldMappers fieldMappers = parseContext.smartFieldMappers(field); if (fieldMappers != null) { + analyzer = fieldMappers.searchAnalyzer(); currentMapper = fieldMappers.fieldMappers().mapper(); if (currentMapper != null) { indexedNameField = currentMapper.names().indexName(); } return wrapSmartNameQuery(getPossiblyAnalyzedPrefixQuery(indexedNameField, termStr), fieldMappers, parseContext); } + return getPossiblyAnalyzedPrefixQuery(indexedNameField, termStr); + } finally { + analyzer = oldAnalyzer; } - return getPossiblyAnalyzedPrefixQuery(indexedNameField, termStr); } private Query getPossiblyAnalyzedPrefixQuery(String field, String termStr) throws ParseException { @@ -234,17 +238,21 @@ public class MapperQueryParser extends QueryParser { } String indexedNameField = field; currentMapper = null; - if (parseContext.mapperService() != null) { - MapperService.SmartNameFieldMappers fieldMappers = parseContext.mapperService().smartName(field); + Analyzer oldAnalyzer = analyzer; + try { + MapperService.SmartNameFieldMappers fieldMappers = parseContext.smartFieldMappers(field); if (fieldMappers != null) { + analyzer = fieldMappers.searchAnalyzer(); currentMapper = fieldMappers.fieldMappers().mapper(); if (currentMapper != null) { indexedNameField = currentMapper.names().indexName(); } return wrapSmartNameQuery(getPossiblyAnalyzedWildcardQuery(indexedNameField, termStr), fieldMappers, parseContext); } + return getPossiblyAnalyzedWildcardQuery(indexedNameField, termStr); + } finally { + analyzer = oldAnalyzer; } - return getPossiblyAnalyzedWildcardQuery(indexedNameField, termStr); } private Query getPossiblyAnalyzedWildcardQuery(String field, String termStr) throws ParseException { @@ -318,15 +326,4 @@ public class MapperQueryParser extends QueryParser { } return optimizeQuery(fixNegativeQueryIfNeeded(q)); } - - protected FieldMapper fieldMapper(String smartName) { - if (parseContext.mapperService() == null) { - return null; - } - FieldMappers fieldMappers = parseContext.mapperService().smartNameFieldMappers(smartName); - if (fieldMappers == null) { - return null; - } - return fieldMappers.mapper(); - } } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/index/mapper/MapperService.java b/modules/elasticsearch/src/main/java/org/elasticsearch/index/mapper/MapperService.java index e66f5462e25..102f8619a06 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/index/mapper/MapperService.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/index/mapper/MapperService.java @@ -408,38 +408,6 @@ public class MapperService extends AbstractIndexComponent implements Iterablenull if there is none. - */ - public FieldMapper smartNameFieldMapper(String smartName) { - FieldMappers fieldMappers = smartNameFieldMappers(smartName); - if (fieldMappers != null) { - return fieldMappers.mapper(); - } - return null; - } - public Set simpleMatchToIndexNames(String pattern) { int dotIndex = pattern.indexOf('.'); if (dotIndex != -1) { @@ -478,6 +446,79 @@ public class MapperService extends AbstractIndexComponent implements Iterablenull if there is none. + */ + public FieldMapper smartNameFieldMapper(String smartName) { + FieldMappers fieldMappers = smartNameFieldMappers(smartName); + if (fieldMappers != null) { + return fieldMappers.mapper(); + } + return null; + } + + public FieldMapper smartNameFieldMapper(String smartName, @Nullable String[] types) { + FieldMappers fieldMappers = smartNameFieldMappers(smartName, types); + if (fieldMappers != null) { + return fieldMappers.mapper(); + } + return null; + } + + public FieldMappers smartNameFieldMappers(String smartName, @Nullable String[] types) { + if (types == null || types.length == 0) { + return smartNameFieldMappers(smartName); + } + for (String type : types) { + DocumentMapper documentMapper = mappers.get(type); + // we found a mapper + if (documentMapper != null) { + // see if we find a field for it + FieldMappers mappers = documentMapper.mappers().smartName(smartName); + if (mappers != null) { + return mappers; + } + } + } + // did not find explicit field in the type provided, see if its prefixed with type + int dotIndex = smartName.indexOf('.'); + if (dotIndex != -1) { + String possibleType = smartName.substring(0, dotIndex); + DocumentMapper possibleDocMapper = mappers.get(possibleType); + if (possibleDocMapper != null) { + String possibleName = smartName.substring(dotIndex + 1); + FieldMappers mappers = possibleDocMapper.mappers().smartName(possibleName); + if (mappers != null) { + return mappers; + } + } + } + // we did not find the field mapping in any of the types, so don't go and try to find + // it in other types... + return null; + } + /** * Same as {@link #smartName(String)}, except it returns just the field mappers. */ @@ -505,6 +546,39 @@ public class MapperService extends AbstractIndexComponent implements Iterabletrue if the type is explicitly specified in the name. + */ + public boolean explicitTypeInName() { + return this.explicitTypeInName; + } + + /** + * The best effort search analyzer associated with this field. + */ + public Analyzer searchAnalyzer() { + if (hasMapper()) { + Analyzer analyzer = mapper().searchAnalyzer(); + if (analyzer != null) { + return analyzer; + } + } + if (docMapper != null && docMapper.searchAnalyzer() != null) { + return docMapper.searchAnalyzer(); + } + return mapperService.searchAnalyzer(); + } } final class SmartIndexNameSearchAnalyzer extends Analyzer { diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/FieldMaskingSpanQueryParser.java b/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/FieldMaskingSpanQueryParser.java index 0af7e4e85b0..2661f98ff88 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/FieldMaskingSpanQueryParser.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/FieldMaskingSpanQueryParser.java @@ -79,7 +79,7 @@ public class FieldMaskingSpanQueryParser implements QueryParser { throw new QueryParsingException(parseContext.index(), "field_masking_span must have [field] set for it"); } - FieldMapper mapper = parseContext.mapperService().smartNameFieldMapper(field); + FieldMapper mapper = parseContext.fieldMapper(field); if (mapper != null) { field = mapper.names().indexName(); } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/GeoBoundingBoxFilterParser.java b/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/GeoBoundingBoxFilterParser.java index 869fd48f949..04f0dd1130d 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/GeoBoundingBoxFilterParser.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/GeoBoundingBoxFilterParser.java @@ -169,12 +169,11 @@ public class GeoBoundingBoxFilterParser implements FilterParser { bottomRight.lon = GeoUtils.normalizeLon(bottomRight.lon); } - MapperService mapperService = parseContext.mapperService(); - - FieldMapper mapper = mapperService.smartNameFieldMapper(fieldName); - if (mapper == null) { + MapperService.SmartNameFieldMappers smartMappers = parseContext.smartFieldMappers(fieldName); + if (smartMappers == null || !smartMappers.hasMapper()) { throw new QueryParsingException(parseContext.index(), "failed to find geo_point field [" + fieldName + "]"); } + FieldMapper mapper = smartMappers.mapper(); if (!(mapper instanceof GeoPointFieldMapper.GeoStringFieldMapper)) { throw new QueryParsingException(parseContext.index(), "field [" + fieldName + "] is not a geo_point field"); } @@ -194,7 +193,7 @@ public class GeoBoundingBoxFilterParser implements FilterParser { if (cache) { filter = parseContext.cacheFilter(filter, cacheKey); } - filter = wrapSmartNameFilter(filter, parseContext.smartFieldMappers(fieldName), parseContext); + filter = wrapSmartNameFilter(filter, smartMappers, parseContext); if (filterName != null) { parseContext.addNamedFilter(filterName, filter); } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/GeoDistanceFilterParser.java b/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/GeoDistanceFilterParser.java index 9789d5ea880..46bbd8e4d26 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/GeoDistanceFilterParser.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/GeoDistanceFilterParser.java @@ -172,11 +172,11 @@ public class GeoDistanceFilterParser implements FilterParser { lon = GeoUtils.normalizeLon(lon); } - MapperService mapperService = parseContext.mapperService(); - FieldMapper mapper = mapperService.smartNameFieldMapper(fieldName); - if (mapper == null) { + MapperService.SmartNameFieldMappers smartMappers = parseContext.smartFieldMappers(fieldName); + if (smartMappers == null || !smartMappers.hasMapper()) { throw new QueryParsingException(parseContext.index(), "failed to find geo_point field [" + fieldName + "]"); } + FieldMapper mapper = smartMappers.mapper(); if (mapper.fieldDataType() != GeoPointFieldDataType.TYPE) { throw new QueryParsingException(parseContext.index(), "field [" + fieldName + "] is not a geo_point field"); } @@ -187,7 +187,7 @@ public class GeoDistanceFilterParser implements FilterParser { if (cache) { filter = parseContext.cacheFilter(filter, cacheKey); } - filter = wrapSmartNameFilter(filter, parseContext.smartFieldMappers(fieldName), parseContext); + filter = wrapSmartNameFilter(filter, smartMappers, parseContext); if (filterName != null) { parseContext.addNamedFilter(filterName, filter); } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/GeoDistanceRangeFilterParser.java b/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/GeoDistanceRangeFilterParser.java index 9615bb4b465..1ba878978fe 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/GeoDistanceRangeFilterParser.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/GeoDistanceRangeFilterParser.java @@ -229,11 +229,11 @@ public class GeoDistanceRangeFilterParser implements FilterParser { lon = GeoUtils.normalizeLon(lon); } - MapperService mapperService = parseContext.mapperService(); - FieldMapper mapper = mapperService.smartNameFieldMapper(fieldName); - if (mapper == null) { + MapperService.SmartNameFieldMappers smartMappers = parseContext.smartFieldMappers(fieldName); + if (smartMappers == null || !smartMappers.hasMapper()) { throw new QueryParsingException(parseContext.index(), "failed to find geo_point field [" + fieldName + "]"); } + FieldMapper mapper = smartMappers.mapper(); if (mapper.fieldDataType() != GeoPointFieldDataType.TYPE) { throw new QueryParsingException(parseContext.index(), "field [" + fieldName + "] is not a geo_point field"); } @@ -244,7 +244,7 @@ public class GeoDistanceRangeFilterParser implements FilterParser { if (cache) { filter = parseContext.cacheFilter(filter, cacheKey); } - filter = wrapSmartNameFilter(filter, parseContext.smartFieldMappers(fieldName), parseContext); + filter = wrapSmartNameFilter(filter, smartMappers, parseContext); if (filterName != null) { parseContext.addNamedFilter(filterName, filter); } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/GeoPolygonFilterParser.java b/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/GeoPolygonFilterParser.java index 1e622729f9e..2996b2386d1 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/GeoPolygonFilterParser.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/GeoPolygonFilterParser.java @@ -165,11 +165,11 @@ public class GeoPolygonFilterParser implements FilterParser { } } - MapperService mapperService = parseContext.mapperService(); - FieldMapper mapper = mapperService.smartNameFieldMapper(fieldName); - if (mapper == null) { + MapperService.SmartNameFieldMappers smartMappers = parseContext.smartFieldMappers(fieldName); + if (smartMappers == null || !smartMappers.hasMapper()) { throw new QueryParsingException(parseContext.index(), "failed to find geo_point field [" + fieldName + "]"); } + FieldMapper mapper = smartMappers.mapper(); if (mapper.fieldDataType() != GeoPointFieldDataType.TYPE) { throw new QueryParsingException(parseContext.index(), "field [" + fieldName + "] is not a geo_point field"); } @@ -179,7 +179,7 @@ public class GeoPolygonFilterParser implements FilterParser { if (cache) { filter = parseContext.cacheFilter(filter, cacheKey); } - filter = wrapSmartNameFilter(filter, parseContext.smartFieldMappers(fieldName), parseContext); + filter = wrapSmartNameFilter(filter, smartMappers, parseContext); if (filterName != null) { parseContext.addNamedFilter(filterName, filter); } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/MoreLikeThisFieldQueryParser.java b/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/MoreLikeThisFieldQueryParser.java index f5056e49ecd..bb6424ae785 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/MoreLikeThisFieldQueryParser.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/MoreLikeThisFieldQueryParser.java @@ -113,9 +113,9 @@ public class MoreLikeThisFieldQueryParser implements QueryParser { if (smartNameFieldMappers != null) { if (smartNameFieldMappers.hasMapper()) { fieldName = smartNameFieldMappers.mapper().names().indexName(); - if (analyzer == null) { - analyzer = smartNameFieldMappers.mapper().searchAnalyzer(); - } + } + if (analyzer == null) { + analyzer = smartNameFieldMappers.searchAnalyzer(); } } if (analyzer == null) { diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/QueryParseContext.java b/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/QueryParseContext.java index 0e7a253abfd..ee195f28aca 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/QueryParseContext.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/QueryParseContext.java @@ -40,6 +40,7 @@ import org.elasticsearch.index.mapper.FieldMappers; import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.index.similarity.SimilarityService; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.search.internal.SearchContext; import java.io.IOException; import java.util.Map; @@ -202,7 +203,8 @@ public class QueryParseContext { } public FieldMapper fieldMapper(String name) { - FieldMappers fieldMappers = indexQueryParser.mapperService.smartNameFieldMappers(name); + SearchContext searchContext = SearchContext.current(); + FieldMappers fieldMappers = indexQueryParser.mapperService.smartNameFieldMappers(name, searchContext == null ? null : searchContext.types()); if (fieldMappers == null) { return null; } @@ -218,6 +220,7 @@ public class QueryParseContext { } public MapperService.SmartNameFieldMappers smartFieldMappers(String name) { - return indexQueryParser.mapperService.smartName(name); + SearchContext searchContext = SearchContext.current(); + return indexQueryParser.mapperService.smartName(name, searchContext == null ? null : searchContext.types()); } } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/support/QueryParsers.java b/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/support/QueryParsers.java index 9af1cffce20..69ef1028581 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/support/QueryParsers.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/index/query/support/QueryParsers.java @@ -83,7 +83,7 @@ public final class QueryParsers { if (smartFieldMappers == null) { return query; } - if (!smartFieldMappers.hasDocMapper()) { + if (!smartFieldMappers.hasDocMapper() || !smartFieldMappers.explicitTypeInName()) { return query; } DocumentMapper docMapper = smartFieldMappers.docMapper(); @@ -95,7 +95,7 @@ public final class QueryParsers { if (smartFieldMappers == null) { return filter; } - if (!smartFieldMappers.hasDocMapper()) { + if (!smartFieldMappers.hasDocMapper() || !smartFieldMappers.explicitTypeInName()) { return filter; } DocumentMapper docMapper = smartFieldMappers.docMapper(); diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/index/search/TextQueryParser.java b/modules/elasticsearch/src/main/java/org/elasticsearch/index/search/TextQueryParser.java index d42a46b12f0..7fe2f0f8efc 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/index/search/TextQueryParser.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/index/search/TextQueryParser.java @@ -130,8 +130,8 @@ public class TextQueryParser { if (mapper != null) { analyzer = mapper.searchAnalyzer(); } - if (analyzer == null && smartNameFieldMappers != null && smartNameFieldMappers.docMapper() != null) { - analyzer = smartNameFieldMappers.docMapper().searchAnalyzer(); + if (analyzer == null && smartNameFieldMappers != null) { + analyzer = smartNameFieldMappers.searchAnalyzer(); } if (analyzer == null) { analyzer = parseContext.mapperService().searchAnalyzer(); diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/datehistogram/CountDateHistogramFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/datehistogram/CountDateHistogramFacetCollector.java index 85001bd57ff..9f325617e6e 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/datehistogram/CountDateHistogramFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/datehistogram/CountDateHistogramFacetCollector.java @@ -63,13 +63,13 @@ public class CountDateHistogramFacetCollector extends AbstractFacetCollector { this.comparatorType = comparatorType; this.fieldDataCache = context.fieldDataCache(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new FacetPhaseExecutionException(facetName, "No mapping found for field [" + fieldName + "]"); } // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/datehistogram/DateHistogramFacetProcessor.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/datehistogram/DateHistogramFacetProcessor.java index 0df6bb8387a..b65f21c002a 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/datehistogram/DateHistogramFacetProcessor.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/datehistogram/DateHistogramFacetProcessor.java @@ -152,7 +152,7 @@ public class DateHistogramFacetProcessor extends AbstractComponent implements Fa throw new FacetPhaseExecutionException(facetName, "key field is required to be set for histogram facet, either using [field] or using [key_field]"); } - FieldMapper mapper = context.mapperService().smartNameFieldMapper(keyField); + FieldMapper mapper = context.smartNameFieldMapper(keyField); if (mapper == null) { throw new FacetPhaseExecutionException(facetName, "(key) field [" + keyField + "] not found"); } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/datehistogram/ValueDateHistogramFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/datehistogram/ValueDateHistogramFacetCollector.java index 44763cbad06..64a64d25ae0 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/datehistogram/ValueDateHistogramFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/datehistogram/ValueDateHistogramFacetCollector.java @@ -67,20 +67,20 @@ public class ValueDateHistogramFacetCollector extends AbstractFacetCollector { this.comparatorType = comparatorType; this.fieldDataCache = context.fieldDataCache(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(keyFieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(keyFieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new FacetPhaseExecutionException(facetName, "No mapping found for field [" + keyFieldName + "]"); } // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); } keyIndexFieldName = smartMappers.mapper().names().indexName(); keyFieldDataType = smartMappers.mapper().fieldDataType(); - FieldMapper mapper = context.mapperService().smartNameFieldMapper(valueFieldName); + FieldMapper mapper = context.smartNameFieldMapper(valueFieldName); if (mapper == null) { throw new FacetPhaseExecutionException(facetName, "No mapping found for value_field [" + valueFieldName + "]"); } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/datehistogram/ValueScriptDateHistogramFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/datehistogram/ValueScriptDateHistogramFacetCollector.java index 8b525d3b255..397b8745b2d 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/datehistogram/ValueScriptDateHistogramFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/datehistogram/ValueScriptDateHistogramFacetCollector.java @@ -68,13 +68,13 @@ public class ValueScriptDateHistogramFacetCollector extends AbstractFacetCollect this.comparatorType = comparatorType; this.fieldDataCache = context.fieldDataCache(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new FacetPhaseExecutionException(facetName, "No mapping found for field [" + fieldName + "]"); } // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/geodistance/GeoDistanceFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/geodistance/GeoDistanceFacetCollector.java index a470dfe7d80..e2af4bb2adc 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/geodistance/GeoDistanceFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/geodistance/GeoDistanceFacetCollector.java @@ -69,7 +69,7 @@ public class GeoDistanceFacetCollector extends AbstractFacetCollector { this.fixedSourceDistance = geoDistance.fixedSourceDistance(lat, lon, unit); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new FacetPhaseExecutionException(facetName, "No mapping found for field [" + fieldName + "]"); } @@ -78,7 +78,7 @@ public class GeoDistanceFacetCollector extends AbstractFacetCollector { } // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/geodistance/ValueGeoDistanceFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/geodistance/ValueGeoDistanceFacetCollector.java index e60cc605101..c44e97e97c9 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/geodistance/ValueGeoDistanceFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/geodistance/ValueGeoDistanceFacetCollector.java @@ -23,7 +23,7 @@ import org.apache.lucene.index.IndexReader; import org.elasticsearch.common.unit.DistanceUnit; import org.elasticsearch.index.field.data.FieldDataType; import org.elasticsearch.index.field.data.NumericFieldData; -import org.elasticsearch.index.mapper.FieldMapper; +import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.index.mapper.geo.GeoPointFieldData; import org.elasticsearch.index.search.geo.GeoDistance; import org.elasticsearch.search.facet.FacetPhaseExecutionException; @@ -44,12 +44,12 @@ public class ValueGeoDistanceFacetCollector extends GeoDistanceFacetCollector { GeoDistanceFacet.Entry[] entries, SearchContext context, String valueFieldName) { super(facetName, fieldName, lat, lon, unit, geoDistance, entries, context); - FieldMapper mapper = context.mapperService().smartNameFieldMapper(valueFieldName); - if (mapper == null) { + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(valueFieldName); + if (smartMappers == null || !smartMappers.hasMapper()) { throw new FacetPhaseExecutionException(facetName, "No mapping found for field [" + valueFieldName + "]"); } - this.indexValueFieldName = valueFieldName; - this.valueFieldDataType = mapper.fieldDataType(); + this.indexValueFieldName = smartMappers.mapper().names().indexName(); + this.valueFieldDataType = smartMappers.mapper().fieldDataType(); this.aggregator = new Aggregator(fixedSourceDistance, entries); } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/HistogramFacetProcessor.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/HistogramFacetProcessor.java index 54a13f4f83d..89740f6fbb2 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/HistogramFacetProcessor.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/HistogramFacetProcessor.java @@ -32,7 +32,11 @@ import org.elasticsearch.search.facet.FacetProcessor; import org.elasticsearch.search.facet.histogram.bounded.BoundedCountHistogramFacetCollector; import org.elasticsearch.search.facet.histogram.bounded.BoundedValueHistogramFacetCollector; import org.elasticsearch.search.facet.histogram.bounded.BoundedValueScriptHistogramFacetCollector; -import org.elasticsearch.search.facet.histogram.unbounded.*; +import org.elasticsearch.search.facet.histogram.unbounded.CountHistogramFacetCollector; +import org.elasticsearch.search.facet.histogram.unbounded.FullHistogramFacetCollector; +import org.elasticsearch.search.facet.histogram.unbounded.ScriptHistogramFacetCollector; +import org.elasticsearch.search.facet.histogram.unbounded.ValueHistogramFacetCollector; +import org.elasticsearch.search.facet.histogram.unbounded.ValueScriptHistogramFacetCollector; import org.elasticsearch.search.internal.SearchContext; import java.io.IOException; @@ -113,7 +117,7 @@ public class HistogramFacetProcessor extends AbstractComponent implements FacetP } if (sFrom != null && sTo != null && keyField != null) { - FieldMapper mapper = context.mapperService().smartNameFieldMapper(keyField); + FieldMapper mapper = context.smartNameFieldMapper(keyField); if (mapper == null) { throw new FacetPhaseExecutionException(facetName, "No mapping found for key_field [" + keyField + "]"); } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/bounded/BoundedCountHistogramFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/bounded/BoundedCountHistogramFacetCollector.java index b64b6952ba1..6462458ca92 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/bounded/BoundedCountHistogramFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/bounded/BoundedCountHistogramFacetCollector.java @@ -53,13 +53,13 @@ public class BoundedCountHistogramFacetCollector extends AbstractFacetCollector this.comparatorType = comparatorType; this.fieldDataCache = context.fieldDataCache(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new FacetPhaseExecutionException(facetName, "No mapping found for field [" + fieldName + "]"); } // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/bounded/BoundedValueHistogramFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/bounded/BoundedValueHistogramFacetCollector.java index 8bf9efee682..730a2057388 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/bounded/BoundedValueHistogramFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/bounded/BoundedValueHistogramFacetCollector.java @@ -24,7 +24,6 @@ import org.elasticsearch.common.CacheRecycler; import org.elasticsearch.index.cache.field.data.FieldDataCache; import org.elasticsearch.index.field.data.FieldDataType; import org.elasticsearch.index.field.data.NumericFieldData; -import org.elasticsearch.index.mapper.FieldMapper; import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.search.facet.AbstractFacetCollector; import org.elasticsearch.search.facet.Facet; @@ -62,25 +61,25 @@ public class BoundedValueHistogramFacetCollector extends AbstractFacetCollector this.comparatorType = comparatorType; this.fieldDataCache = context.fieldDataCache(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(keyFieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(keyFieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new FacetPhaseExecutionException(facetName, "No mapping found for field [" + keyFieldName + "]"); } // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); } keyIndexFieldName = smartMappers.mapper().names().indexName(); keyFieldDataType = smartMappers.mapper().fieldDataType(); - FieldMapper mapper = context.mapperService().smartNameFieldMapper(valueFieldName); - if (mapper == null) { + smartMappers = context.smartFieldMappers(valueFieldName); + if (smartMappers == null || !smartMappers.hasMapper()) { throw new FacetPhaseExecutionException(facetName, "No mapping found for value_field [" + valueFieldName + "]"); } - valueIndexFieldName = mapper.names().indexName(); - valueFieldDataType = mapper.fieldDataType(); + valueIndexFieldName = smartMappers.mapper().names().indexName(); + valueFieldDataType = smartMappers.mapper().fieldDataType(); long normalizedFrom = (((long) ((double) from / interval)) * interval); long normalizedTo = (((long) ((double) to / interval)) * interval); diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/bounded/BoundedValueScriptHistogramFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/bounded/BoundedValueScriptHistogramFacetCollector.java index 4b5d8cdf742..4099e86585b 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/bounded/BoundedValueScriptHistogramFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/bounded/BoundedValueScriptHistogramFacetCollector.java @@ -61,13 +61,13 @@ public class BoundedValueScriptHistogramFacetCollector extends AbstractFacetColl this.comparatorType = comparatorType; this.fieldDataCache = context.fieldDataCache(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new FacetPhaseExecutionException(facetName, "No mapping found for field [" + fieldName + "]"); } // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/unbounded/CountHistogramFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/unbounded/CountHistogramFacetCollector.java index 1aee37cded4..8acef77a505 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/unbounded/CountHistogramFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/unbounded/CountHistogramFacetCollector.java @@ -60,13 +60,13 @@ public class CountHistogramFacetCollector extends AbstractFacetCollector { this.comparatorType = comparatorType; this.fieldDataCache = context.fieldDataCache(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new FacetPhaseExecutionException(facetName, "No mapping found for field [" + fieldName + "]"); } // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/unbounded/FullHistogramFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/unbounded/FullHistogramFacetCollector.java index 07c84752e81..53b1a56b449 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/unbounded/FullHistogramFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/unbounded/FullHistogramFacetCollector.java @@ -60,13 +60,13 @@ public class FullHistogramFacetCollector extends AbstractFacetCollector { this.comparatorType = comparatorType; this.fieldDataCache = context.fieldDataCache(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new FacetPhaseExecutionException(facetName, "No mapping found for field [" + fieldName + "]"); } // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/unbounded/ValueHistogramFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/unbounded/ValueHistogramFacetCollector.java index 8d95428ab39..85c039b1ca3 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/unbounded/ValueHistogramFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/unbounded/ValueHistogramFacetCollector.java @@ -25,7 +25,6 @@ import org.elasticsearch.common.trove.ExtTLongObjectHashMap; import org.elasticsearch.index.cache.field.data.FieldDataCache; import org.elasticsearch.index.field.data.FieldDataType; import org.elasticsearch.index.field.data.NumericFieldData; -import org.elasticsearch.index.mapper.FieldMapper; import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.search.facet.AbstractFacetCollector; import org.elasticsearch.search.facet.Facet; @@ -65,25 +64,25 @@ public class ValueHistogramFacetCollector extends AbstractFacetCollector { this.comparatorType = comparatorType; this.fieldDataCache = context.fieldDataCache(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(keyFieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(keyFieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new FacetPhaseExecutionException(facetName, "No mapping found for field [" + keyFieldName + "]"); } // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); } keyIndexFieldName = smartMappers.mapper().names().indexName(); keyFieldDataType = smartMappers.mapper().fieldDataType(); - FieldMapper mapper = context.mapperService().smartNameFieldMapper(valueFieldName); - if (mapper == null) { + smartMappers = context.smartFieldMappers(valueFieldName); + if (smartMappers == null || !smartMappers.hasMapper()) { throw new FacetPhaseExecutionException(facetName, "No mapping found for value_field [" + valueFieldName + "]"); } - valueIndexFieldName = mapper.names().indexName(); - valueFieldDataType = mapper.fieldDataType(); + valueIndexFieldName = smartMappers.mapper().names().indexName(); + valueFieldDataType = smartMappers.mapper().fieldDataType(); histoProc = new HistogramProc(interval); } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/unbounded/ValueScriptHistogramFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/unbounded/ValueScriptHistogramFacetCollector.java index 53ad1208155..dd9bbee0ee3 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/unbounded/ValueScriptHistogramFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/histogram/unbounded/ValueScriptHistogramFacetCollector.java @@ -65,13 +65,13 @@ public class ValueScriptHistogramFacetCollector extends AbstractFacetCollector { this.comparatorType = comparatorType; this.fieldDataCache = context.fieldDataCache(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new FacetPhaseExecutionException(facetName, "No mapping found for field [" + fieldName + "]"); } // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/range/KeyValueRangeFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/range/KeyValueRangeFacetCollector.java index 5b9b096ddf3..f3ee9acc9d5 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/range/KeyValueRangeFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/range/KeyValueRangeFacetCollector.java @@ -23,7 +23,6 @@ import org.apache.lucene.index.IndexReader; import org.elasticsearch.index.cache.field.data.FieldDataCache; import org.elasticsearch.index.field.data.FieldDataType; import org.elasticsearch.index.field.data.NumericFieldData; -import org.elasticsearch.index.mapper.FieldMapper; import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.search.facet.AbstractFacetCollector; import org.elasticsearch.search.facet.Facet; @@ -57,25 +56,25 @@ public class KeyValueRangeFacetCollector extends AbstractFacetCollector { this.entries = entries; this.fieldDataCache = context.fieldDataCache(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(keyFieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(keyFieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new FacetPhaseExecutionException(facetName, "No mapping found for field [" + keyFieldName + "]"); } // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); } keyIndexFieldName = smartMappers.mapper().names().indexName(); keyFieldDataType = smartMappers.mapper().fieldDataType(); - FieldMapper mapper = context.mapperService().smartNameFieldMapper(valueFieldName); - if (mapper == null) { + smartMappers = context.smartFieldMappers(valueFieldName); + if (smartMappers == null || !smartMappers.hasMapper()) { throw new FacetPhaseExecutionException(facetName, "No mapping found for value_field [" + valueFieldName + "]"); } - valueIndexFieldName = mapper.names().indexName(); - valueFieldDataType = mapper.fieldDataType(); + valueIndexFieldName = smartMappers.mapper().names().indexName(); + valueFieldDataType = smartMappers.mapper().fieldDataType(); this.rangeProc = new RangeProc(entries); } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/range/RangeFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/range/RangeFacetCollector.java index 05b20413ce9..7ccceb2065b 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/range/RangeFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/range/RangeFacetCollector.java @@ -53,13 +53,13 @@ public class RangeFacetCollector extends AbstractFacetCollector { this.fieldDataCache = context.fieldDataCache(); this.entries = entries; - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new FacetPhaseExecutionException(facetName, "No mapping found for field [" + fieldName + "]"); } // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/range/RangeFacetProcessor.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/range/RangeFacetProcessor.java index aa887fb8736..793d39f650c 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/range/RangeFacetProcessor.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/range/RangeFacetProcessor.java @@ -118,7 +118,7 @@ public class RangeFacetProcessor extends AbstractComponent implements FacetProce // fix the range entries if needed if (keyField != null) { - FieldMapper mapper = context.mapperService().smartNameFieldMapper(keyField); + FieldMapper mapper = context.smartNameFieldMapper(keyField); if (mapper == null) { throw new FacetPhaseExecutionException(facetName, "No mapping found for key_field [" + keyField + "]"); } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/statistical/StatisticalFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/statistical/StatisticalFacetCollector.java index c3f5ec2a6e5..dab58bd5a62 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/statistical/StatisticalFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/statistical/StatisticalFacetCollector.java @@ -50,13 +50,13 @@ public class StatisticalFacetCollector extends AbstractFacetCollector { super(facetName); this.fieldDataCache = context.fieldDataCache(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new FacetPhaseExecutionException(facetName, "No mapping found for field [" + fieldName + "]"); } // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/statistical/StatisticalFieldsFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/statistical/StatisticalFieldsFacetCollector.java index b8204d24015..3d6beab172c 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/statistical/StatisticalFieldsFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/statistical/StatisticalFieldsFacetCollector.java @@ -56,7 +56,7 @@ public class StatisticalFieldsFacetCollector extends AbstractFacetCollector { for (int i = 0; i < fieldsNames.length; i++) { - FieldMapper mapper = context.mapperService().smartNameFieldMapper(fieldsNames[i]); + FieldMapper mapper = context.smartNameFieldMapper(fieldsNames[i]); if (mapper == null) { throw new FacetPhaseExecutionException(facetName, "No mapping found for field [" + fieldsNames[i] + "]"); } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/TermsFacetProcessor.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/TermsFacetProcessor.java index 134b4b35086..aa4d5a639eb 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/TermsFacetProcessor.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/TermsFacetProcessor.java @@ -150,7 +150,7 @@ public class TermsFacetProcessor extends AbstractComponent implements FacetProce return new ScriptTermsStringFieldFacetCollector(facetName, size, comparatorType, context, excluded, pattern, scriptLang, script, params); } - FieldMapper fieldMapper = context.mapperService().smartNameFieldMapper(field); + FieldMapper fieldMapper = context.smartNameFieldMapper(field); if (fieldMapper != null) { if (fieldMapper instanceof IpFieldMapper) { if (script != null || "map".equals(executionHint)) { diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/bytes/TermsByteFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/bytes/TermsByteFacetCollector.java index 20f88f680d3..6ce07869e99 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/bytes/TermsByteFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/bytes/TermsByteFacetCollector.java @@ -77,23 +77,23 @@ public class TermsByteFacetCollector extends AbstractFacetCollector { this.comparatorType = comparatorType; this.numberOfShards = context.numberOfShards(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] doesn't have a type, can't run terms short facet collector on it"); - } else { - // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { - setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); - } - - if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.BYTE) { - throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of byte type, can't run terms short facet collector on it"); - } - - this.indexFieldName = smartMappers.mapper().names().indexName(); - this.fieldDataType = smartMappers.mapper().fieldDataType(); } + // add type filter if there is exact doc mapper associated with it + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { + setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); + } + + if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.BYTE) { + throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of byte type, can't run terms short facet collector on it"); + } + + this.indexFieldName = smartMappers.mapper().names().indexName(); + this.fieldDataType = smartMappers.mapper().fieldDataType(); + if (script != null) { this.script = context.scriptService().search(context.lookup(), scriptLang, script, params); } else { diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/bytes/TermsByteOrdinalsFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/bytes/TermsByteOrdinalsFacetCollector.java index f26f2b7d1c1..7e4a84a23bf 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/bytes/TermsByteOrdinalsFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/bytes/TermsByteOrdinalsFacetCollector.java @@ -80,23 +80,23 @@ public class TermsByteOrdinalsFacetCollector extends AbstractFacetCollector { this.comparatorType = comparatorType; this.numberOfShards = context.numberOfShards(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] doesn't have a type, can't run terms byte facet collector on it"); - } else { - // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { - setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); - } - - if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.BYTE) { - throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of byte type, can't run terms byte facet collector on it"); - } - - this.indexFieldName = smartMappers.mapper().names().indexName(); - this.fieldDataType = smartMappers.mapper().fieldDataType(); } + // add type filter if there is exact doc mapper associated with it + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { + setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); + } + + if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.BYTE) { + throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of byte type, can't run terms byte facet collector on it"); + } + + this.indexFieldName = smartMappers.mapper().names().indexName(); + this.fieldDataType = smartMappers.mapper().fieldDataType(); + if (excluded == null || excluded.isEmpty()) { this.excluded = null; } else { diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/doubles/TermsDoubleFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/doubles/TermsDoubleFacetCollector.java index 310c3bb68f7..1cecb98ac71 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/doubles/TermsDoubleFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/doubles/TermsDoubleFacetCollector.java @@ -77,22 +77,21 @@ public class TermsDoubleFacetCollector extends AbstractFacetCollector { this.comparatorType = comparatorType; this.numberOfShards = context.numberOfShards(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] doesn't have a type, can't run terms double facet collector on it"); - } else { - // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { - setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); - } - - if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.DOUBLE) { - throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of double type, can't run terms double facet collector on it"); - } - - this.indexFieldName = smartMappers.mapper().names().indexName(); - this.fieldDataType = smartMappers.mapper().fieldDataType(); } + // add type filter if there is exact doc mapper associated with it + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { + setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); + } + + if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.DOUBLE) { + throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of double type, can't run terms double facet collector on it"); + } + + this.indexFieldName = smartMappers.mapper().names().indexName(); + this.fieldDataType = smartMappers.mapper().fieldDataType(); if (script != null) { this.script = context.scriptService().search(context.lookup(), scriptLang, script, params); diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/doubles/TermsDoubleOrdinalsFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/doubles/TermsDoubleOrdinalsFacetCollector.java index 10758d91b8e..1c06a543ead 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/doubles/TermsDoubleOrdinalsFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/doubles/TermsDoubleOrdinalsFacetCollector.java @@ -80,22 +80,21 @@ public class TermsDoubleOrdinalsFacetCollector extends AbstractFacetCollector { this.comparatorType = comparatorType; this.numberOfShards = context.numberOfShards(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] doesn't have a type, can't run terms double facet collector on it"); - } else { - // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { - setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); - } - - if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.DOUBLE) { - throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of double type, can't run terms double facet collector on it"); - } - - this.indexFieldName = smartMappers.mapper().names().indexName(); - this.fieldDataType = smartMappers.mapper().fieldDataType(); } + // add type filter if there is exact doc mapper associated with it + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { + setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); + } + + if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.DOUBLE) { + throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of double type, can't run terms double facet collector on it"); + } + + this.indexFieldName = smartMappers.mapper().names().indexName(); + this.fieldDataType = smartMappers.mapper().fieldDataType(); if (excluded == null || excluded.isEmpty()) { this.excluded = null; diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/floats/TermsFloatFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/floats/TermsFloatFacetCollector.java index c49d822e61c..92146b4b5a5 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/floats/TermsFloatFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/floats/TermsFloatFacetCollector.java @@ -77,22 +77,21 @@ public class TermsFloatFacetCollector extends AbstractFacetCollector { this.comparatorType = comparatorType; this.numberOfShards = context.numberOfShards(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] doesn't have a type, can't run terms float facet collector on it"); - } else { - // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { - setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); - } - - if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.FLOAT) { - throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] doesn't is not of float type, can't run terms float facet collector on it"); - } - - this.indexFieldName = smartMappers.mapper().names().indexName(); - this.fieldDataType = smartMappers.mapper().fieldDataType(); } + // add type filter if there is exact doc mapper associated with it + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { + setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); + } + + if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.FLOAT) { + throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] doesn't is not of float type, can't run terms float facet collector on it"); + } + + this.indexFieldName = smartMappers.mapper().names().indexName(); + this.fieldDataType = smartMappers.mapper().fieldDataType(); if (script != null) { this.script = context.scriptService().search(context.lookup(), scriptLang, script, params); diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/floats/TermsFloatOrdinalsFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/floats/TermsFloatOrdinalsFacetCollector.java index 5df1dd55617..257c90665c3 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/floats/TermsFloatOrdinalsFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/floats/TermsFloatOrdinalsFacetCollector.java @@ -80,22 +80,21 @@ public class TermsFloatOrdinalsFacetCollector extends AbstractFacetCollector { this.comparatorType = comparatorType; this.numberOfShards = context.numberOfShards(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] doesn't have a type, can't run terms float facet collector on it"); - } else { - // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { - setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); - } - - if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.FLOAT) { - throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of float type, can't run terms float facet collector on it"); - } - - this.indexFieldName = smartMappers.mapper().names().indexName(); - this.fieldDataType = smartMappers.mapper().fieldDataType(); } + // add type filter if there is exact doc mapper associated with it + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { + setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); + } + + if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.FLOAT) { + throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of float type, can't run terms float facet collector on it"); + } + + this.indexFieldName = smartMappers.mapper().names().indexName(); + this.fieldDataType = smartMappers.mapper().fieldDataType(); if (excluded == null || excluded.isEmpty()) { this.excluded = null; diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/ints/TermsIntFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/ints/TermsIntFacetCollector.java index d6ec7e1aa2a..c01f323c6b4 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/ints/TermsIntFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/ints/TermsIntFacetCollector.java @@ -77,22 +77,21 @@ public class TermsIntFacetCollector extends AbstractFacetCollector { this.comparatorType = comparatorType; this.numberOfShards = context.numberOfShards(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] doesn't have a type, can't run terms int facet collector on it"); - } else { - // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { - setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); - } - - if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.INT) { - throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of int type, can't run terms int facet collector on it"); - } - - this.indexFieldName = smartMappers.mapper().names().indexName(); - this.fieldDataType = smartMappers.mapper().fieldDataType(); } + // add type filter if there is exact doc mapper associated with it + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { + setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); + } + + if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.INT) { + throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of int type, can't run terms int facet collector on it"); + } + + this.indexFieldName = smartMappers.mapper().names().indexName(); + this.fieldDataType = smartMappers.mapper().fieldDataType(); if (script != null) { this.script = context.scriptService().search(context.lookup(), scriptLang, script, params); diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/ints/TermsIntOrdinalsFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/ints/TermsIntOrdinalsFacetCollector.java index b59fb6efb54..a05a506e6e1 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/ints/TermsIntOrdinalsFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/ints/TermsIntOrdinalsFacetCollector.java @@ -80,22 +80,21 @@ public class TermsIntOrdinalsFacetCollector extends AbstractFacetCollector { this.comparatorType = comparatorType; this.numberOfShards = context.numberOfShards(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] doesn't have a type, can't run terms int facet collector on it"); - } else { - // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { - setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); - } - - if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.INT) { - throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of int type, can't run terms int facet collector on it"); - } - - this.indexFieldName = smartMappers.mapper().names().indexName(); - this.fieldDataType = smartMappers.mapper().fieldDataType(); } + // add type filter if there is exact doc mapper associated with it + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { + setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); + } + + if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.INT) { + throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of int type, can't run terms int facet collector on it"); + } + + this.indexFieldName = smartMappers.mapper().names().indexName(); + this.fieldDataType = smartMappers.mapper().fieldDataType(); if (excluded == null || excluded.isEmpty()) { this.excluded = null; diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/ip/TermsIpFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/ip/TermsIpFacetCollector.java index ff803c96d10..4485b38e10c 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/ip/TermsIpFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/ip/TermsIpFacetCollector.java @@ -74,22 +74,21 @@ public class TermsIpFacetCollector extends AbstractFacetCollector { this.comparatorType = comparatorType; this.numberOfShards = context.numberOfShards(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] doesn't have a type, can't run terms long facet collector on it"); - } else { - // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { - setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); - } - - if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.LONG) { - throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of long type, can't run terms long facet collector on it"); - } - - this.indexFieldName = smartMappers.mapper().names().indexName(); - this.fieldDataType = smartMappers.mapper().fieldDataType(); } + // add type filter if there is exact doc mapper associated with it + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { + setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); + } + + if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.LONG) { + throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of long type, can't run terms long facet collector on it"); + } + + this.indexFieldName = smartMappers.mapper().names().indexName(); + this.fieldDataType = smartMappers.mapper().fieldDataType(); if (script != null) { this.script = context.scriptService().search(context.lookup(), scriptLang, script, params); diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/ip/TermsIpOrdinalsFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/ip/TermsIpOrdinalsFacetCollector.java index 690750f00fc..62bad935a6b 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/ip/TermsIpOrdinalsFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/ip/TermsIpOrdinalsFacetCollector.java @@ -80,22 +80,21 @@ public class TermsIpOrdinalsFacetCollector extends AbstractFacetCollector { this.comparatorType = comparatorType; this.numberOfShards = context.numberOfShards(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] doesn't have a type, can't run terms long facet collector on it"); - } else { - // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { - setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); - } - - if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.LONG) { - throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of long type, can't run terms long facet collector on it"); - } - - this.indexFieldName = smartMappers.mapper().names().indexName(); - this.fieldDataType = smartMappers.mapper().fieldDataType(); } + // add type filter if there is exact doc mapper associated with it + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { + setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); + } + + if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.LONG) { + throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of long type, can't run terms long facet collector on it"); + } + + this.indexFieldName = smartMappers.mapper().names().indexName(); + this.fieldDataType = smartMappers.mapper().fieldDataType(); if (excluded == null || excluded.isEmpty()) { this.excluded = null; diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/longs/TermsLongFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/longs/TermsLongFacetCollector.java index f0b6c09a60e..034285d64ed 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/longs/TermsLongFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/longs/TermsLongFacetCollector.java @@ -87,22 +87,21 @@ public class TermsLongFacetCollector extends AbstractFacetCollector { this.comparatorType = comparatorType; this.numberOfShards = context.numberOfShards(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] doesn't have a type, can't run terms long facet collector on it"); - } else { - // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { - setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); - } - - if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.LONG) { - throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of long type, can't run terms long facet collector on it"); - } - - this.indexFieldName = smartMappers.mapper().names().indexName(); - this.fieldDataType = smartMappers.mapper().fieldDataType(); } + // add type filter if there is exact doc mapper associated with it + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { + setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); + } + + if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.LONG) { + throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of long type, can't run terms long facet collector on it"); + } + + this.indexFieldName = smartMappers.mapper().names().indexName(); + this.fieldDataType = smartMappers.mapper().fieldDataType(); if (script != null) { this.script = context.scriptService().search(context.lookup(), scriptLang, script, params); diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/longs/TermsLongOrdinalsFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/longs/TermsLongOrdinalsFacetCollector.java index da434010cb3..2eb47a1e1e4 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/longs/TermsLongOrdinalsFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/longs/TermsLongOrdinalsFacetCollector.java @@ -80,22 +80,21 @@ public class TermsLongOrdinalsFacetCollector extends AbstractFacetCollector { this.comparatorType = comparatorType; this.numberOfShards = context.numberOfShards(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] doesn't have a type, can't run terms long facet collector on it"); - } else { - // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { - setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); - } - - if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.LONG) { - throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of long type, can't run terms long facet collector on it"); - } - - this.indexFieldName = smartMappers.mapper().names().indexName(); - this.fieldDataType = smartMappers.mapper().fieldDataType(); } + // add type filter if there is exact doc mapper associated with it + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { + setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); + } + + if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.LONG) { + throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of long type, can't run terms long facet collector on it"); + } + + this.indexFieldName = smartMappers.mapper().names().indexName(); + this.fieldDataType = smartMappers.mapper().fieldDataType(); if (excluded == null || excluded.isEmpty()) { this.excluded = null; diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/shorts/TermsShortFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/shorts/TermsShortFacetCollector.java index 8295f18ac59..6a9eea648b5 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/shorts/TermsShortFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/shorts/TermsShortFacetCollector.java @@ -77,22 +77,21 @@ public class TermsShortFacetCollector extends AbstractFacetCollector { this.comparatorType = comparatorType; this.numberOfShards = context.numberOfShards(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] doesn't have a type, can't run terms short facet collector on it"); - } else { - // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { - setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); - } - - if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.SHORT) { - throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of short type, can't run terms short facet collector on it"); - } - - this.indexFieldName = smartMappers.mapper().names().indexName(); - this.fieldDataType = smartMappers.mapper().fieldDataType(); } + // add type filter if there is exact doc mapper associated with it + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { + setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); + } + + if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.SHORT) { + throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of short type, can't run terms short facet collector on it"); + } + + this.indexFieldName = smartMappers.mapper().names().indexName(); + this.fieldDataType = smartMappers.mapper().fieldDataType(); if (script != null) { this.script = context.scriptService().search(context.lookup(), scriptLang, script, params); diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/shorts/TermsShortOrdinalsFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/shorts/TermsShortOrdinalsFacetCollector.java index b0238a1576d..1f185fdba8d 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/shorts/TermsShortOrdinalsFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/shorts/TermsShortOrdinalsFacetCollector.java @@ -80,22 +80,21 @@ public class TermsShortOrdinalsFacetCollector extends AbstractFacetCollector { this.comparatorType = comparatorType; this.numberOfShards = context.numberOfShards(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] doesn't have a type, can't run terms short facet collector on it"); - } else { - // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { - setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); - } - - if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.SHORT) { - throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of short type, can't run terms short facet collector on it"); - } - - this.indexFieldName = smartMappers.mapper().names().indexName(); - this.fieldDataType = smartMappers.mapper().fieldDataType(); } + // add type filter if there is exact doc mapper associated with it + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { + setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); + } + + if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.SHORT) { + throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of short type, can't run terms short facet collector on it"); + } + + this.indexFieldName = smartMappers.mapper().names().indexName(); + this.fieldDataType = smartMappers.mapper().fieldDataType(); if (excluded == null || excluded.isEmpty()) { this.excluded = null; diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/strings/FieldsTermsStringFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/strings/FieldsTermsStringFacetCollector.java index 3ed645e1aac..c4f41286ed5 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/strings/FieldsTermsStringFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/strings/FieldsTermsStringFacetCollector.java @@ -80,7 +80,7 @@ public class FieldsTermsStringFacetCollector extends AbstractFacetCollector { indexFieldsNames = new String[fieldsNames.length]; for (int i = 0; i < fieldsNames.length; i++) { - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldsNames[i]); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldsNames[i]); if (smartMappers == null || !smartMappers.hasMapper()) { this.indexFieldsNames[i] = fieldsNames[i]; this.fieldsDataType[i] = FieldDataType.DefaultTypes.STRING; diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/strings/TermsStringFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/strings/TermsStringFacetCollector.java index f2b37661821..de8540054c3 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/strings/TermsStringFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/strings/TermsStringFacetCollector.java @@ -86,7 +86,7 @@ public class TermsStringFacetCollector extends AbstractFacetCollector { this.comparatorType = comparatorType; this.numberOfShards = context.numberOfShards(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { this.indexFieldName = fieldName; this.fieldDataType = FieldDataType.DefaultTypes.STRING; diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/strings/TermsStringOrdinalsFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/strings/TermsStringOrdinalsFacetCollector.java index 1d0be14a0ee..ba0a2ec90a0 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/strings/TermsStringOrdinalsFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/terms/strings/TermsStringOrdinalsFacetCollector.java @@ -83,22 +83,21 @@ public class TermsStringOrdinalsFacetCollector extends AbstractFacetCollector { this.comparatorType = comparatorType; this.numberOfShards = context.numberOfShards(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(fieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(fieldName); if (smartMappers == null || !smartMappers.hasMapper()) { throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] doesn't have a type, can't run terms long facet collector on it"); - } else { - // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { - setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); - } - - if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.STRING) { - throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of string type, can't run terms string facet collector on it"); - } - - this.indexFieldName = smartMappers.mapper().names().indexName(); - this.fieldDataType = smartMappers.mapper().fieldDataType(); } + // add type filter if there is exact doc mapper associated with it + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { + setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); + } + + if (smartMappers.mapper().fieldDataType() != FieldDataType.DefaultTypes.STRING) { + throw new ElasticSearchIllegalArgumentException("Field [" + fieldName + "] is not of string type, can't run terms string facet collector on it"); + } + + this.indexFieldName = smartMappers.mapper().names().indexName(); + this.fieldDataType = smartMappers.mapper().fieldDataType(); if (excluded == null || excluded.isEmpty()) { this.excluded = null; diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/termsstats/TermsStatsFacetProcessor.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/termsstats/TermsStatsFacetProcessor.java index f49c8ce2758..0809eb2ff15 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/termsstats/TermsStatsFacetProcessor.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/termsstats/TermsStatsFacetProcessor.java @@ -99,7 +99,7 @@ public class TermsStatsFacetProcessor extends AbstractComponent implements Facet throw new FacetPhaseExecutionException(facetName, "either [value_field] or [script] are required to be set for terms stats facet"); } - FieldMapper keyFieldMapper = context.mapperService().smartNameFieldMapper(keyField); + FieldMapper keyFieldMapper = context.smartNameFieldMapper(keyField); if (keyFieldMapper != null) { if (keyFieldMapper.fieldDataType() == FieldDataType.DefaultTypes.LONG) { return new TermsStatsLongFacetCollector(facetName, keyField, valueField, size, comparatorType, context, scriptLang, script, params); diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/termsstats/doubles/TermsStatsDoubleFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/termsstats/doubles/TermsStatsDoubleFacetCollector.java index eba1724b502..9b79d505ce7 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/termsstats/doubles/TermsStatsDoubleFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/termsstats/doubles/TermsStatsDoubleFacetCollector.java @@ -29,7 +29,6 @@ import org.elasticsearch.common.trove.ExtTDoubleObjectHashMap; import org.elasticsearch.index.cache.field.data.FieldDataCache; import org.elasticsearch.index.field.data.FieldDataType; import org.elasticsearch.index.field.data.NumericFieldData; -import org.elasticsearch.index.mapper.FieldMapper; import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.script.SearchScript; import org.elasticsearch.search.facet.AbstractFacetCollector; @@ -75,13 +74,13 @@ public class TermsStatsDoubleFacetCollector extends AbstractFacetCollector { this.comparatorType = comparatorType; this.numberOfShards = context.numberOfShards(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(keyFieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(keyFieldName); if (smartMappers == null || !smartMappers.hasMapper()) { this.keyFieldName = keyFieldName; this.keyFieldDataType = FieldDataType.DefaultTypes.STRING; } else { // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); } @@ -90,12 +89,12 @@ public class TermsStatsDoubleFacetCollector extends AbstractFacetCollector { } if (script == null) { - FieldMapper fieldMapper = context.mapperService().smartNameFieldMapper(valueFieldName); - if (fieldMapper == null) { + smartMappers = context.smartFieldMappers(valueFieldName); + if (smartMappers == null || !smartMappers.hasMapper()) { throw new ElasticSearchIllegalArgumentException("failed to find mappings for [" + valueFieldName + "]"); } - this.valueFieldName = fieldMapper.names().indexName(); - this.valueFieldDataType = fieldMapper.fieldDataType(); + this.valueFieldName = smartMappers.mapper().names().indexName(); + this.valueFieldDataType = smartMappers.mapper().fieldDataType(); this.script = null; this.aggregator = new Aggregator(); } else { diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/termsstats/longs/TermsStatsLongFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/termsstats/longs/TermsStatsLongFacetCollector.java index 9218daef920..347a5511a99 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/termsstats/longs/TermsStatsLongFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/termsstats/longs/TermsStatsLongFacetCollector.java @@ -29,7 +29,6 @@ import org.elasticsearch.common.trove.ExtTLongObjectHashMap; import org.elasticsearch.index.cache.field.data.FieldDataCache; import org.elasticsearch.index.field.data.FieldDataType; import org.elasticsearch.index.field.data.NumericFieldData; -import org.elasticsearch.index.mapper.FieldMapper; import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.script.SearchScript; import org.elasticsearch.search.facet.AbstractFacetCollector; @@ -76,13 +75,13 @@ public class TermsStatsLongFacetCollector extends AbstractFacetCollector { this.comparatorType = comparatorType; this.numberOfShards = context.numberOfShards(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(keyFieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(keyFieldName); if (smartMappers == null || !smartMappers.hasMapper()) { this.keyFieldName = keyFieldName; this.keyFieldDataType = FieldDataType.DefaultTypes.STRING; } else { // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); } @@ -91,12 +90,12 @@ public class TermsStatsLongFacetCollector extends AbstractFacetCollector { } if (script == null) { - FieldMapper fieldMapper = context.mapperService().smartNameFieldMapper(valueFieldName); - if (fieldMapper == null) { + smartMappers = context.smartFieldMappers(valueFieldName); + if (smartMappers == null || !smartMappers.hasMapper()) { throw new ElasticSearchIllegalArgumentException("failed to find mappings for [" + valueFieldName + "]"); } - this.valueFieldName = fieldMapper.names().indexName(); - this.valueFieldDataType = fieldMapper.fieldDataType(); + this.valueFieldName = smartMappers.mapper().names().indexName(); + this.valueFieldDataType = smartMappers.mapper().fieldDataType(); this.script = null; this.aggregator = new Aggregator(); } else { diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/termsstats/strings/TermsStatsStringFacetCollector.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/termsstats/strings/TermsStatsStringFacetCollector.java index 5ee9c6831c7..5f6176b64f6 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/termsstats/strings/TermsStatsStringFacetCollector.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/termsstats/strings/TermsStatsStringFacetCollector.java @@ -30,7 +30,6 @@ import org.elasticsearch.index.cache.field.data.FieldDataCache; import org.elasticsearch.index.field.data.FieldData; import org.elasticsearch.index.field.data.FieldDataType; import org.elasticsearch.index.field.data.NumericFieldData; -import org.elasticsearch.index.mapper.FieldMapper; import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.script.SearchScript; import org.elasticsearch.search.facet.AbstractFacetCollector; @@ -76,13 +75,13 @@ public class TermsStatsStringFacetCollector extends AbstractFacetCollector { this.comparatorType = comparatorType; this.numberOfShards = context.numberOfShards(); - MapperService.SmartNameFieldMappers smartMappers = context.mapperService().smartName(keyFieldName); + MapperService.SmartNameFieldMappers smartMappers = context.smartFieldMappers(keyFieldName); if (smartMappers == null || !smartMappers.hasMapper()) { this.keyFieldName = keyFieldName; this.keyFieldDataType = FieldDataType.DefaultTypes.STRING; } else { // add type filter if there is exact doc mapper associated with it - if (smartMappers.hasDocMapper()) { + if (smartMappers.hasDocMapper() && smartMappers.explicitTypeInName()) { setFilter(context.filterCache().cache(smartMappers.docMapper().typeFilter())); } @@ -91,12 +90,12 @@ public class TermsStatsStringFacetCollector extends AbstractFacetCollector { } if (script == null) { - FieldMapper fieldMapper = context.mapperService().smartNameFieldMapper(valueFieldName); - if (fieldMapper == null) { + smartMappers = context.smartFieldMappers(valueFieldName); + if (smartMappers == null || !smartMappers.hasMapper()) { throw new ElasticSearchIllegalArgumentException("failed to find mappings for [" + valueFieldName + "]"); } - this.valueFieldName = fieldMapper.names().indexName(); - this.valueFieldDataType = fieldMapper.fieldDataType(); + this.valueFieldName = smartMappers.mapper().names().indexName(); + this.valueFieldDataType = smartMappers.mapper().fieldDataType(); this.script = null; this.aggregator = new Aggregator(); } else { diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/fetch/FetchPhase.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/fetch/FetchPhase.java index 3f54f1c04e5..24fc28764b4 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/fetch/FetchPhase.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/fetch/FetchPhase.java @@ -98,7 +98,7 @@ public class FetchPhase implements SearchPhase { } else { FieldMappersFieldSelector fieldSelectorMapper = new FieldMappersFieldSelector(); for (String fieldName : context.fieldNames()) { - FieldMappers x = context.mapperService().smartNameFieldMappers(fieldName); + FieldMappers x = context.smartNameFieldMappers(fieldName); if (x != null && x.mapper().stored()) { fieldSelectorMapper.add(x); } else { diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/internal/SearchContext.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/internal/SearchContext.java index a0ef32800ac..099fa4c92f3 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/internal/SearchContext.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/internal/SearchContext.java @@ -34,6 +34,8 @@ import org.elasticsearch.index.cache.field.data.FieldDataCache; import org.elasticsearch.index.cache.filter.FilterCache; import org.elasticsearch.index.cache.id.IdCache; import org.elasticsearch.index.engine.Engine; +import org.elasticsearch.index.mapper.FieldMapper; +import org.elasticsearch.index.mapper.FieldMappers; import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.index.query.IndexQueryParserService; import org.elasticsearch.index.query.ParsedQuery; @@ -532,4 +534,16 @@ public class SearchContext implements Releasable { } nestedQueries.put(scope, query); } + + public MapperService.SmartNameFieldMappers smartFieldMappers(String name) { + return mapperService().smartName(name, types); + } + + public FieldMappers smartNameFieldMappers(String name) { + return mapperService().smartNameFieldMappers(name, types); + } + + public FieldMapper smartNameFieldMapper(String name) { + return mapperService().smartNameFieldMapper(name, types); + } } diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/search/sort/SortParseElement.java b/modules/elasticsearch/src/main/java/org/elasticsearch/search/sort/SortParseElement.java index 021269dbdc4..5846d40ef9e 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/search/sort/SortParseElement.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/search/sort/SortParseElement.java @@ -138,7 +138,7 @@ public class SortParseElement implements SearchParseElement { sortFields.add(SORT_DOC); } } else { - FieldMapper fieldMapper = context.mapperService().smartNameFieldMapper(fieldName); + FieldMapper fieldMapper = context.smartNameFieldMapper(fieldName); if (fieldMapper == null) { throw new SearchParseException(context, "No mapping found for [" + fieldName + "]"); } diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_boundingbox-named.json b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_boundingbox-named.json index 891aae58a18..845d41235e3 100644 --- a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_boundingbox-named.json +++ b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_boundingbox-named.json @@ -5,7 +5,7 @@ }, "filter" : { "geo_bounding_box" : { - "person.location" : { + "location" : { "top_left" : [-70, 40], "bottom_right" : [-80, 30] }, diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_boundingbox1.json b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_boundingbox1.json index c331b09883b..688225855c0 100644 --- a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_boundingbox1.json +++ b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_boundingbox1.json @@ -5,7 +5,7 @@ }, "filter" : { "geo_bounding_box" : { - "person.location" : { + "location" : { "top_left" : [-70, 40], "bottom_right" : [-80, 30] } diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_boundingbox2.json b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_boundingbox2.json index 071b8bd7a08..4cd168dd42d 100644 --- a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_boundingbox2.json +++ b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_boundingbox2.json @@ -5,7 +5,7 @@ }, "filter" : { "geo_bounding_box" : { - "person.location" : { + "location" : { "top_left" : { "lat" : 40, "lon" : -70 diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_boundingbox3.json b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_boundingbox3.json index 154360d3c08..c8f2dc8ba64 100644 --- a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_boundingbox3.json +++ b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_boundingbox3.json @@ -5,7 +5,7 @@ }, "filter" : { "geo_bounding_box" : { - "person.location" : { + "location" : { "top_left" : "40, -70", "bottom_right" : "30, -80" } diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_boundingbox4.json b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_boundingbox4.json index 8693c60f80c..6a13d2a9fc0 100644 --- a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_boundingbox4.json +++ b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_boundingbox4.json @@ -5,7 +5,7 @@ }, "filter" : { "geo_bounding_box" : { - "person.location" : { + "location" : { "top_left" : "drn5x1g8cu2y", "bottom_right" : "30, -80" } diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance-named.json b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance-named.json index 69f43202e15..24ad527e86c 100644 --- a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance-named.json +++ b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance-named.json @@ -6,7 +6,7 @@ "filter" : { "geo_distance" : { "distance" : "12mi", - "person.location" : { + "location" : { "lat" : 40, "lon" : -70 }, diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance1.json b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance1.json index 36ca66370cc..02406a78b71 100644 --- a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance1.json +++ b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance1.json @@ -6,7 +6,7 @@ "filter" : { "geo_distance" : { "distance" : "12mi", - "person.location" : { + "location" : { "lat" : 40, "lon" : -70 } diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance10.json b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance10.json index 6d08ae7e638..e2f2643c17e 100644 --- a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance10.json +++ b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance10.json @@ -7,7 +7,7 @@ "geo_distance" : { "distance" : 19.312128, "unit": "km", - "person.location" : { + "location" : { "lat" : 40, "lon" : -70 } diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance11.json b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance11.json index 77ebf781bc2..1ced101be1c 100644 --- a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance11.json +++ b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance11.json @@ -6,7 +6,7 @@ "filter" : { "geo_distance" : { "distance" : "19.312128km", - "person.location" : { + "location" : { "lat" : 40, "lon" : -70 } diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance12.json b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance12.json index 909c4b537b7..68adbf6713a 100644 --- a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance12.json +++ b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance12.json @@ -7,7 +7,7 @@ "geo_distance" : { "distance" : "12mi", "unit": "km", - "person.location" : { + "location" : { "lat" : 40, "lon" : -70 } diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance2.json b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance2.json index 842c9f07abb..33cbfb537ac 100644 --- a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance2.json +++ b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance2.json @@ -6,7 +6,7 @@ "filter" : { "geo_distance" : { "distance" : "12mi", - "person.location" : [-70, 40] + "location" : [-70, 40] } } } diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance3.json b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance3.json index 14e77b41baf..7687b16a367 100644 --- a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance3.json +++ b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance3.json @@ -6,7 +6,7 @@ "filter" : { "geo_distance" : { "distance" : "12mi", - "person.location" : "40, -70" + "location" : "40, -70" } } } diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance4.json b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance4.json index 4352ce9bee5..eaf8d81a9b7 100644 --- a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance4.json +++ b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance4.json @@ -6,7 +6,7 @@ "filter" : { "geo_distance" : { "distance" : "12mi", - "person.location" : "drn5x1g8cu2y" + "location" : "drn5x1g8cu2y" } } } diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance5.json b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance5.json index d9c80f3ac35..8815f456cc9 100644 --- a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance5.json +++ b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance5.json @@ -7,7 +7,7 @@ "geo_distance" : { "distance" : 12, "unit": "mi", - "person.location" : { + "location" : { "lat" : 40, "lon" : -70 } diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance6.json b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance6.json index ebf12b358f8..eb8802a519d 100644 --- a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance6.json +++ b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance6.json @@ -7,7 +7,7 @@ "geo_distance" : { "distance" : "12", "unit": "mi", - "person.location" : { + "location" : { "lat" : 40, "lon" : -70 } diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance7.json b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance7.json index 7a659b15d9b..c1e33054b23 100644 --- a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance7.json +++ b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance7.json @@ -6,7 +6,7 @@ "filter" : { "geo_distance" : { "distance" : "19.312128", - "person.location" : { + "location" : { "lat" : 40, "lon" : -70 } diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance8.json b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance8.json index dd9334aae8d..94c858656bd 100644 --- a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance8.json +++ b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance8.json @@ -6,7 +6,7 @@ "filter" : { "geo_distance" : { "distance" : 19.312128, - "person.location" : { + "location" : { "lat" : 40, "lon" : -70 } diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance9.json b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance9.json index 2e62052516a..ff1a1798008 100644 --- a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance9.json +++ b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_distance9.json @@ -7,7 +7,7 @@ "geo_distance" : { "distance" : "19.312128", "unit": "km", - "person.location" : { + "location" : { "lat" : 40, "lon" : -70 } diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_polygon-named.json b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_polygon-named.json index b70eb6882b4..e6e3d0957c2 100644 --- a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_polygon-named.json +++ b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_polygon-named.json @@ -5,7 +5,7 @@ }, "filter" : { "geo_polygon" : { - "person.location" : { + "location" : { "points" : [ [-70, 40], [-80, 30], diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_polygon1.json b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_polygon1.json index 56adcdc94e4..f25bd1fd85d 100644 --- a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_polygon1.json +++ b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_polygon1.json @@ -5,7 +5,7 @@ }, "filter" : { "geo_polygon" : { - "person.location" : { + "location" : { "points" : [ [-70, 40], [-80, 30], diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_polygon2.json b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_polygon2.json index 89524aae41f..55568193b9d 100644 --- a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_polygon2.json +++ b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_polygon2.json @@ -5,7 +5,7 @@ }, "filter" : { "geo_polygon" : { - "person.location" : { + "location" : { "points" : [ { "lat" : 40, diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_polygon3.json b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_polygon3.json index 744c843201a..5f7c0236ed9 100644 --- a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_polygon3.json +++ b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_polygon3.json @@ -5,7 +5,7 @@ }, "filter" : { "geo_polygon" : { - "person.location" : { + "location" : { "points" : [ "40, -70", "30, -80", diff --git a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_polygon4.json b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_polygon4.json index 6b766d5247c..174b2da3a7d 100644 --- a/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_polygon4.json +++ b/modules/elasticsearch/src/test/java/org/elasticsearch/index/query/geo_polygon4.json @@ -5,7 +5,7 @@ }, "filter" : { "geo_polygon" : { - "person.location" : { + "location" : { "points" : [ "drn5x1g8cu2y", "30, -80",