org.elasticsearch.index.mapper.xcontent
Class NumberFieldMapper<T extends java.lang.Number>

java.lang.Object
  extended by org.elasticsearch.index.mapper.xcontent.AbstractFieldMapper<T>
      extended by org.elasticsearch.index.mapper.xcontent.NumberFieldMapper<T>
All Implemented Interfaces:
ToXContent, FieldMapper<T>, IncludeInAllMapper, XContentMapper
Direct Known Subclasses:
BoostFieldMapper, DateFieldMapper, DoubleFieldMapper, FloatFieldMapper, IntegerFieldMapper, IpFieldMapper, LongFieldMapper, ShortFieldMapper

public abstract class NumberFieldMapper<T extends java.lang.Number>
extends AbstractFieldMapper<T>
implements IncludeInAllMapper


Nested Class Summary
static class NumberFieldMapper.Builder<T extends NumberFieldMapper.Builder,Y extends NumberFieldMapper>
           
protected static class NumberFieldMapper.CachedNumericTokenStream
          A wrapper around a numeric stream allowing to reuse it by implementing the end method which returns this stream back to the thread local cache.
static class NumberFieldMapper.Defaults
           
 
Nested classes/interfaces inherited from class org.elasticsearch.index.mapper.xcontent.AbstractFieldMapper
AbstractFieldMapper.OpenBuilder<T extends AbstractFieldMapper.Builder,Y extends AbstractFieldMapper>
 
Nested classes/interfaces inherited from interface org.elasticsearch.index.mapper.xcontent.XContentMapper
XContentMapper.BuilderContext, XContentMapper.TypeParser
 
Nested classes/interfaces inherited from interface org.elasticsearch.common.xcontent.ToXContent
ToXContent.MapParams, ToXContent.Params
 
Nested classes/interfaces inherited from interface org.elasticsearch.index.mapper.FieldMapper
FieldMapper.Names
 
Field Summary
protected  java.lang.Boolean includeInAll
           
protected  int precisionStep
           
 
Fields inherited from class org.elasticsearch.index.mapper.xcontent.AbstractFieldMapper
boost, index, indexAnalyzer, names, omitNorms, omitTermFreqAndPositions, searchAnalyzer, store, termVector
 
Fields inherited from interface org.elasticsearch.index.mapper.xcontent.XContentMapper
EMPTY_ARRAY
 
Fields inherited from interface org.elasticsearch.common.xcontent.ToXContent
EMPTY_PARAMS
 
Constructor Summary
protected NumberFieldMapper(FieldMapper.Names names, int precisionStep, org.apache.lucene.document.Field.Index index, org.apache.lucene.document.Field.Store store, float boost, boolean omitNorms, boolean omitTermFreqAndPositions, NamedAnalyzer indexAnalyzer, NamedAnalyzer searchAnalyzer)
           
 
Method Summary
abstract  FieldDataType fieldDataType()
           
 org.apache.lucene.search.Filter fieldFilter(java.lang.String value)
          Numeric field level filter are basically range queries with same value and included.
 org.apache.lucene.search.Query fieldQuery(java.lang.String value)
          Numeric field level query are basically range queries with same value and included.
 void includeInAll(java.lang.Boolean includeInAll)
           
protected abstract  int maxPrecisionStep()
           
 void merge(XContentMapper mergeWith, MergeContext mergeContext)
           
protected  NumberFieldMapper.CachedNumericTokenStream popCachedStream(int precisionStep)
          Removes a cached numeric token stream.
 int precisionStep()
           
abstract  org.apache.lucene.search.Filter rangeFilter(java.lang.String lowerTerm, java.lang.String upperTerm, boolean includeLower, boolean includeUpper)
          Constructs a range query filter based on the mapper.
abstract  org.apache.lucene.search.Query rangeQuery(java.lang.String lowerTerm, java.lang.String upperTerm, boolean includeLower, boolean includeUpper)
          Constructs a range query based on the mapper.
 boolean useFieldQueryWithQueryString()
          Use the field query created here when matching on numbers.
 java.lang.String valueAsString(org.apache.lucene.document.Fieldable field)
          Returns the actual value of the field as string.
 java.lang.Object valueForSearch(org.apache.lucene.document.Fieldable field)
          Override the default behavior (to return the string, and return the actual Number instance).
 
Methods inherited from class org.elasticsearch.index.mapper.xcontent.AbstractFieldMapper
analyzed, boost, contentType, doXContentBody, index, indexAnalyzer, indexed, indexedValue, name, names, omitNorms, omitTermFreqAndPositions, parse, parseCreateField, queryStringTermQuery, searchAnalyzer, store, stored, termVector, toXContent, traverse
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.elasticsearch.index.mapper.xcontent.XContentMapper
name, parse, traverse
 
Methods inherited from interface org.elasticsearch.common.xcontent.ToXContent
toXContent
 
Methods inherited from interface org.elasticsearch.index.mapper.FieldMapper
value, valueFromString
 

Field Detail

precisionStep

protected int precisionStep

includeInAll

protected java.lang.Boolean includeInAll
Constructor Detail

NumberFieldMapper

protected NumberFieldMapper(FieldMapper.Names names,
                            int precisionStep,
                            org.apache.lucene.document.Field.Index index,
                            org.apache.lucene.document.Field.Store store,
                            float boost,
                            boolean omitNorms,
                            boolean omitTermFreqAndPositions,
                            NamedAnalyzer indexAnalyzer,
                            NamedAnalyzer searchAnalyzer)
Method Detail

includeInAll

public void includeInAll(java.lang.Boolean includeInAll)
Specified by:
includeInAll in interface IncludeInAllMapper

maxPrecisionStep

protected abstract int maxPrecisionStep()

precisionStep

public int precisionStep()

useFieldQueryWithQueryString

public boolean useFieldQueryWithQueryString()
Use the field query created here when matching on numbers.

Specified by:
useFieldQueryWithQueryString in interface FieldMapper<T extends java.lang.Number>
Overrides:
useFieldQueryWithQueryString in class AbstractFieldMapper<T extends java.lang.Number>

fieldQuery

public org.apache.lucene.search.Query fieldQuery(java.lang.String value)
Numeric field level query are basically range queries with same value and included. That's the recommended way to execute it.

Specified by:
fieldQuery in interface FieldMapper<T extends java.lang.Number>
Overrides:
fieldQuery in class AbstractFieldMapper<T extends java.lang.Number>

fieldFilter

public org.apache.lucene.search.Filter fieldFilter(java.lang.String value)
Numeric field level filter are basically range queries with same value and included. That's the recommended way to execute it.

Specified by:
fieldFilter in interface FieldMapper<T extends java.lang.Number>
Overrides:
fieldFilter in class AbstractFieldMapper<T extends java.lang.Number>

rangeQuery

public abstract org.apache.lucene.search.Query rangeQuery(java.lang.String lowerTerm,
                                                          java.lang.String upperTerm,
                                                          boolean includeLower,
                                                          boolean includeUpper)
Description copied from interface: FieldMapper
Constructs a range query based on the mapper.

Specified by:
rangeQuery in interface FieldMapper<T extends java.lang.Number>
Overrides:
rangeQuery in class AbstractFieldMapper<T extends java.lang.Number>

rangeFilter

public abstract org.apache.lucene.search.Filter rangeFilter(java.lang.String lowerTerm,
                                                            java.lang.String upperTerm,
                                                            boolean includeLower,
                                                            boolean includeUpper)
Description copied from interface: FieldMapper
Constructs a range query filter based on the mapper.

Specified by:
rangeFilter in interface FieldMapper<T extends java.lang.Number>
Overrides:
rangeFilter in class AbstractFieldMapper<T extends java.lang.Number>

valueForSearch

public java.lang.Object valueForSearch(org.apache.lucene.document.Fieldable field)
Override the default behavior (to return the string, and return the actual Number instance).

Specified by:
valueForSearch in interface FieldMapper<T extends java.lang.Number>
Overrides:
valueForSearch in class AbstractFieldMapper<T extends java.lang.Number>

valueAsString

public java.lang.String valueAsString(org.apache.lucene.document.Fieldable field)
Description copied from interface: FieldMapper
Returns the actual value of the field as string.

Specified by:
valueAsString in interface FieldMapper<T extends java.lang.Number>

merge

public void merge(XContentMapper mergeWith,
                  MergeContext mergeContext)
           throws MergeMappingException
Specified by:
merge in interface XContentMapper
Overrides:
merge in class AbstractFieldMapper<T extends java.lang.Number>
Throws:
MergeMappingException

fieldDataType

public abstract FieldDataType fieldDataType()
Specified by:
fieldDataType in interface FieldMapper<T extends java.lang.Number>
Overrides:
fieldDataType in class AbstractFieldMapper<T extends java.lang.Number>

popCachedStream

protected NumberFieldMapper.CachedNumericTokenStream popCachedStream(int precisionStep)
Removes a cached numeric token stream. The stream will be returned to the cached once it is used since it implements the end method.