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)
    • 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()
    • 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<ObjectMapper> getNestedMappers()
      Returns all nested object mappers
    • getNestedParentMappers

      public List<ObjectMapper> 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`