Class ArraySourceValueFetcher

java.lang.Object
org.elasticsearch.index.mapper.ArraySourceValueFetcher
All Implemented Interfaces:
ValueFetcher

public abstract class ArraySourceValueFetcher extends Object implements ValueFetcher
An implementation of ValueFetcher that knows how to extract values from the document source.

This class differs from SourceValueFetcher in that it directly handles array values in parsing. Field types should use this class if their corresponding mapper returns true for FieldMapper.parsesArrayValue().

  • Constructor Details

    • ArraySourceValueFetcher

      public ArraySourceValueFetcher(String fieldName, SearchExecutionContext context)
    • ArraySourceValueFetcher

      public ArraySourceValueFetcher(String fieldName, SearchExecutionContext context, Object nullValue)
      Parameters:
      fieldName - The name of the field.
      context - The query shard context
      nullValue - A optional substitute value if the _source value is 'null'.
  • Method Details

    • fetchValues

      public List<Object> fetchValues(SourceLookup lookup)
      Description copied from interface: ValueFetcher
      Given access to a document's _source, return this field's values. In addition to pulling out the values, they will be parsed into a standard form. For example numeric field mappers make sure to parse the source value into a number of the right type. Note that for array values, the order in which values are returned is undefined and should not be relied on.
      Specified by:
      fetchValues in interface ValueFetcher
      Parameters:
      lookup - a lookup structure over the document's source.
      Returns:
      a list a standardized field values.
    • parseSourceValue

      protected abstract Object parseSourceValue(Object value)
      Given a value that has been extracted from a document's source, parse it into a standard format. This parsing logic should closely mirror the value parsing in FieldMapper.parseCreateField(org.elasticsearch.index.mapper.ParseContext) or FieldMapper.parse(org.elasticsearch.index.mapper.ParseContext).