Class MappingLookup

java.lang.Object
org.elasticsearch.index.mapper.MappingLookup

public final class MappingLookup extends Object
A (mostly) immutable snapshot of the current mapping of an index with access to everything we need for the search phase.
  • Field Details

  • Method Details

    • fromMapping

      public static MappingLookup fromMapping(Mapping mapping)
      Creates a new MappingLookup instance by parsing the provided mapping and extracting its field definitions.
      Parameters:
      mapping - the mapping source
      Returns:
      the newly created lookup instance
    • fromMappers

      public static MappingLookup fromMappers(Mapping mapping, Collection<FieldMapper> mappers, Collection<ObjectMapper> objectMappers, Collection<FieldAliasMapper> aliasMappers)
      Creates a new MappingLookup instance given the provided mappers and mapping. Note that the provided mappings are not re-parsed but only exposed as-is. No consistency is enforced between the provided mappings and set of mappers. This is a commodity method to be used in tests, or whenever no mappings are defined for an index. When creating a MappingLookup through this method, its exposed functionalities are limited as it does not hold a valid DocumentParser, IndexSettings or IndexAnalyzers.
      Parameters:
      mapping - the mapping
      mappers - the field mappers
      objectMappers - the object mappers
      aliasMappers - the field alias mappers
      Returns:
      the newly created lookup instance
    • getMapper

      public Mapper getMapper(String field)
      Returns the leaf mapper associated with this field name. Note that the returned mapper could be either a concrete FieldMapper, or a FieldAliasMapper. To access a field's type information, MapperService.fieldType(java.lang.String) should be used instead.
    • indexAnalyzer

      public NamedAnalyzer indexAnalyzer(String field, Function<String,NamedAnalyzer> unmappedFieldAnalyzer)
    • fieldMappers

      public Iterable<Mapper> fieldMappers()
      Returns an iterable over all the registered field mappers (including alias mappers)
    • isShadowed

      public boolean isShadowed(String field)
      Returns:
      true if the given field is shadowed by a runtime field
    • getPostingsFormat

      public org.apache.lucene.codecs.PostingsFormat getPostingsFormat(String field)
      Gets the postings format for a particular field
      Parameters:
      field - the field to retrieve a postings format for
      Returns:
      the postings format for the field, or null if the default format should be used
    • hasNested

      public boolean hasNested()
    • objectMappers

      public Map<String,ObjectMapper> objectMappers()
    • isMultiField

      public boolean isMultiField(String field)
    • isObjectField

      public boolean isObjectField(String field)
    • getNestedScope

      public String getNestedScope(String path)
    • getMatchingFieldNames

      public Set<String> getMatchingFieldNames(String pattern)
      Returns a set of field names that match a regex-like pattern All field names in the returned set are guaranteed to resolve to a field
      Parameters:
      pattern - the pattern to match field names against
    • getFieldType

      public MappedFieldType getFieldType(String field)
      Returns the mapped field type for the given field name.
    • sourcePaths

      public Set<String> sourcePaths(String field)
      Given a concrete field name, return its paths in the _source. For most fields, the source path is the same as the field itself. However there are cases where a field's values are found elsewhere in the _source: - For a multi-field, the source path is the parent field. - One field's content could have been copied to another through copy_to.
      Parameters:
      field - The field for which to look up the _source path. Note that the field should be a concrete field and *not* an alias.
      Returns:
      A set of paths in the _source that contain the field's values.
    • hasMappings

      public boolean hasMappings()
      Returns true if the index has mappings. An index does not have mappings only if it was created without providing mappings explicitly, and no documents have yet been indexed in it.
      Returns:
      true if the current index has mappings, false otherwise
    • isSourceEnabled

      public boolean isSourceEnabled()
    • isDataStreamTimestampFieldEnabled

      public boolean isDataStreamTimestampFieldEnabled()
      Returns if this mapping contains a data-stream's timestamp meta-field and this field is enabled. Only indices that are a part of a data-stream have this meta-field enabled.
      Returns:
      true if contains an enabled data-stream's timestamp meta-field, false otherwise.
    • hasTimestampField

      public boolean hasTimestampField()
      Returns if this mapping contains a timestamp field that is of type date, indexed and has doc values.
      Returns:
      true if contains a timestamp field of type date that is indexed and has doc values, false otherwise.
    • cacheKey

      public MappingLookup.CacheKey cacheKey()
      Key for the lookup to be used in caches.
    • getType

      public String getType()
    • getMapping

      public Mapping getMapping()
      Returns the mapping source that this lookup originated from
      Returns:
      the mapping source
    • getNestedMappers

      public List<NestedObjectMapper> getNestedMappers()
      Returns all nested object mappers
    • getNestedParentMappers

      public List<NestedObjectMapper> getNestedParentMappers()
      Returns all nested object mappers which contain further nested object mappers Used by BitSetProducerWarmer
    • getNestedParent

      public String getNestedParent(String path)
      Given a nested object path, returns the path to its nested parent In particular, if a nested field `foo` contains an object field `bar.baz`, then calling this method with `foo.bar.baz` will return the path `foo`, skipping over the object-but-not-nested `foo.bar`