pandagg.mappings module

class pandagg.mappings.Mappings(properties: Optional[Dict[str, Union[Dict[str, Any], pandagg.node.mappings.abstract.Field]]] = None, dynamic: Optional[bool] = None, **body)[source]

Bases: pandagg.tree._tree.TreeReprMixin, lighttree.tree.Tree

list_nesteds_at_field(field_path: str) → List[str][source]

List nested paths that apply at a given path.

>>> mappings = Mappings(dynamic=False, properties={
>>>     'id': {'type': 'keyword'},
>>>     'comments': {'type': 'nested', 'properties': {
>>>         'comment_text': {'type': 'text'},
>>>         'date': {'type': 'date'}
>>>     }}
>>> })
>>> mappings.list_nesteds_at_field('id')
[]
>>> mappings.list_nesteds_at_field('comments')
['comments']
>>> mappings.list_nesteds_at_field('comments.comment_text')
['comments']
mapping_type_of_field(field_path: str) → str[source]

Return field type of provided field path.

>>> mappings = Mappings(dynamic=False, properties={
>>>     'id': {'type': 'keyword'},
>>>     'comments': {'type': 'nested', 'properties': {
>>>         'comment_text': {'type': 'text'},
>>>         'date': {'type': 'date'}
>>>     }}
>>> })
>>> mappings.mapping_type_of_field('id')
'keyword'
>>> mappings.mapping_type_of_field('comments')
'nested'
>>> mappings.mapping_type_of_field('comments.comment_text')
'text'
nested_at_field(field_path: str) → Optional[str][source]

Return nested path applied on a given path. Return None is none applies.

>>> mappings = Mappings(dynamic=False, properties={
>>>     'id': {'type': 'keyword'},
>>>     'comments': {'type': 'nested', 'properties': {
>>>         'comment_text': {'type': 'text'},
>>>         'date': {'type': 'date'}
>>>     }}
>>> })
>>> mappings.nested_at_field('id')
None
>>> mappings.nested_at_field('comments')
'comments'
>>> mappings.nested_at_field('comments.comment_text')
'comments'
to_dict(from_: Optional[str] = None, depth: Optional[int] = None) → pandagg.types.MappingsDict[source]

Serialize Mappings as dict.

Parameters:from – identifier of a field, if provided, limits serialization to this field and its

children (used for recursion, shouldn’t be useful) :param depth: integer, if provided, limit the serialization to a given depth :return: dict

validate_agg_clause(agg_clause: pandagg.node.aggs.abstract.AggClause, exc: bool = True) → bool[source]

Ensure that if aggregation clause relates to a field (field or path) this field exists in mappings, and that required aggregation type is allowed on this kind of field.

Parameters:
  • agg_clause – AggClause you want to validate on these mappings
  • exc – boolean, if set to True raise exception if invalid
Return type:

boolean

validate_document(d: Union[DocSource, DocumentSource]) → None[source]
class pandagg.mappings.IMappings(mappings: pandagg.tree.mappings.Mappings, client: Optional[elasticsearch.client.Elasticsearch] = None, index: Optional[List[str]] = None, depth: int = 1, root_path: Optional[str] = None, initial_tree: Optional[pandagg.tree.mappings.Mappings] = None)[source]

Bases: pandagg.utils.DSLMixin, lighttree.interactive.TreeBasedObj

Interactive wrapper upon mappings tree, allowing field navigation and quick access to single clause aggregations computation.

class pandagg.mappings.IpRange(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

KEY = 'ip_range'
class pandagg.mappings.Text(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

KEY = 'text'
class pandagg.mappings.Keyword(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

KEY = 'keyword'
class pandagg.mappings.ConstantKeyword(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

KEY = 'constant_keyword'
class pandagg.mappings.WildCard(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

KEY = 'wildcard'
class pandagg.mappings.Long(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

KEY = 'long'
class pandagg.mappings.Integer(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

KEY = 'integer'
class pandagg.mappings.Short(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

KEY = 'short'
class pandagg.mappings.Byte(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

KEY = 'byte'
class pandagg.mappings.Double(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

KEY = 'double'
class pandagg.mappings.HalfFloat(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

KEY = 'half_float'
class pandagg.mappings.ScaledFloat(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

KEY = 'scaled_float'
class pandagg.mappings.Date(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

KEY = 'date'
class pandagg.mappings.DateNanos(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

KEY = 'date_nanos'
class pandagg.mappings.Boolean(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

KEY = 'boolean'
class pandagg.mappings.Binary(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

KEY = 'binary'
class pandagg.mappings.IntegerRange(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

KEY = 'integer_range'
class pandagg.mappings.Float(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

KEY = 'float'
class pandagg.mappings.FloatRange(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

KEY = 'float_range'
class pandagg.mappings.LongRange(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

KEY = 'long_range'
class pandagg.mappings.DoubleRange(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

KEY = 'double_range'
class pandagg.mappings.DateRange(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

KEY = 'date_range'
class pandagg.mappings.Object(properties: Optional[Union[Dict, Type[DocumentSource]]] = None, **body)[source]

Bases: pandagg.node.mappings.abstract.ComplexField

KEY = 'object'
class pandagg.mappings.Nested(properties: Optional[Union[Dict, Type[DocumentSource]]] = None, **body)[source]

Bases: pandagg.node.mappings.abstract.ComplexField

KEY = 'nested'
class pandagg.mappings.GeoPoint(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

For lat/lon points

KEY = 'geo_point'
class pandagg.mappings.GeoShape(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

For complex shapes like polygons

KEY = 'geo_shape'
class pandagg.mappings.IP(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

for IPv4 and IPv6 addresses

KEY = 'ip'
class pandagg.mappings.Completion(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

To provide auto-complete suggestions

KEY = 'completion'
class pandagg.mappings.TokenCount(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

To count the number of tokens in a string

KEY = 'token_count'
class pandagg.mappings.MapperMurMur3(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

To compute hashes of values at index-time and store them in the index

KEY = 'murmur3'
class pandagg.mappings.MapperAnnotatedText(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

To index text containing special markup (typically used for identifying named entities)

KEY = 'annotated-text'
class pandagg.mappings.Percolator(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

Accepts queries from the query-dsl

KEY = 'percolator'
class pandagg.mappings.Join(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

Defines parent/child relation for documents within the same index

KEY = 'join'
class pandagg.mappings.RankFeature(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

Record numeric feature to boost hits at query time.

KEY = 'rank_feature'
class pandagg.mappings.RankFeatures(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

Record numeric features to boost hits at query time.

KEY = 'rank_features'
class pandagg.mappings.DenseVector(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

Record dense vectors of float values.

KEY = 'dense_vector'
class pandagg.mappings.SparseVector(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

Record sparse vectors of float values.

KEY = 'sparse_vector'
class pandagg.mappings.SearchAsYouType(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

A text-like field optimized for queries to implement as-you-type completion

KEY = 'search_as_you_type'
class pandagg.mappings.Alias(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

Defines an alias to an existing field.

KEY = 'alias'
class pandagg.mappings.Flattened(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

Allows an entire JSON object to be indexed as a single field.

KEY = 'flattened'
class pandagg.mappings.Shape(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

For arbitrary cartesian geometries.

KEY = 'shape'
class pandagg.mappings.Histogram(**body)[source]

Bases: pandagg.node.mappings.abstract.RegularField

For pre-aggregated numerical values for percentiles aggregations.

KEY = 'histogram'
class pandagg.mappings.Index(*, multiple: Optional[bool] = None, required: bool = False, **body)[source]

Bases: pandagg.node.mappings.abstract.Field

The index to which the document belongs.

KEY = '_index'
class pandagg.mappings.Type(*, multiple: Optional[bool] = None, required: bool = False, **body)[source]

Bases: pandagg.node.mappings.abstract.Field

The document’s mappings type.

KEY = '_type'
class pandagg.mappings.Id(*, multiple: Optional[bool] = None, required: bool = False, **body)[source]

Bases: pandagg.node.mappings.abstract.Field

The document’s ID.

KEY = '_id'
class pandagg.mappings.FieldNames(*, multiple: Optional[bool] = None, required: bool = False, **body)[source]

Bases: pandagg.node.mappings.abstract.Field

All fields in the document which contain non-null values.

KEY = '_field_names'
class pandagg.mappings.Source(*, multiple: Optional[bool] = None, required: bool = False, **body)[source]

Bases: pandagg.node.mappings.abstract.Field

The original JSON representing the body of the document.

KEY = '_source'
class pandagg.mappings.Size(*, multiple: Optional[bool] = None, required: bool = False, **body)[source]

Bases: pandagg.node.mappings.abstract.Field

The size of the _source field in bytes, provided by the mapper-size plugin.

KEY = '_size'
class pandagg.mappings.Ignored(*, multiple: Optional[bool] = None, required: bool = False, **body)[source]

Bases: pandagg.node.mappings.abstract.Field

All fields in the document that have been ignored at index time because of ignore_malformed.

KEY = '_ignored'
class pandagg.mappings.Routing(*, multiple: Optional[bool] = None, required: bool = False, **body)[source]

Bases: pandagg.node.mappings.abstract.Field

A custom routing value which routes a document to a particular shard.

KEY = '_routing'
class pandagg.mappings.Meta(*, multiple: Optional[bool] = None, required: bool = False, **body)[source]

Bases: pandagg.node.mappings.abstract.Field

Application specific metadata.

KEY = '_meta'