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
    • getKnnVectorsFormatForField

      public org.apache.lucene.codecs.KnnVectorsFormat getKnnVectorsFormatForField(String field)
      Returns the knn vectors format for a particular field
      Parameters:
      field - the field to retrieve a knn vectors format for
      Returns:
      the knn vectors format for the field, or null if the default format should be used
    • objectMappers

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

      public NestedLookup nestedLookup()
    • isMultiField

      public boolean isMultiField(String field)
    • isObjectField

      public boolean isObjectField(String field)
    • 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.
    • getMapping

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

      public void validateDoesNotShadow(String name)
      Check if the provided MappedFieldType shadows a dimension or metric field.