"""
ElasticSearch aggregation type definitions for ESORM
"""
from typing import TypedDict, Dict, List, Union
from typing_extensions import TypeAlias
#
# Queries
#
[docs]class ESAggTermParams(TypedDict, total=False):
"""
Represents the parameters for a terms aggregation in Elasticsearch.
"""
field: str
""" The field to aggregate on. """
size: int
""" The number of buckets to return. """
order: Dict[str, str]
""" The order of the buckets. """
[docs]class ESAggFieldParams(TypedDict):
"""
Represents field parameter in Elasticsearch.
"""
field: str
""" The field to aggregate on. """
[docs]class ESAggExtendedBounds(TypedDict):
"""
Represents the parameters for extended bounds in Elasticsearch.
"""
min: int
""" The minimum value. """
max: int
""" The maximum value. """
[docs]class ESAggHistogramParams(TypedDict, total=False):
"""
Represents the parameters for a histogram aggregation in Elasticsearch.
"""
field: str
""" The field to aggregate on. """
interval: int
""" The interval of the histogram. """
min_doc_count: int
""" The minimum number of documents in a bucket. """
extended_bounds: ESAggExtendedBounds
""" The extended bounds of the histogram. """
[docs]class ESAgg(TypedDict, total=False):
"""
Holds all types of aggregations supported
"""
terms: ESAggTermParams
""" Terms aggregation """
avg: ESAggFieldParams
""" Average aggregation """
sum: ESAggFieldParams
""" Sum aggregation """
min: ESAggFieldParams
""" Minimum aggregation """
max: ESAggFieldParams
""" Maximum aggregation """
histogram: ESAggHistogramParams
""" Histogram aggregation """
ESAggs: TypeAlias = Dict[str, ESAgg]
""" ElasticSearch aggregations type definition """
#
# Responses
#
[docs]class ESAggBucketResponse(TypedDict):
"""
Represents a single bucket in a bucket aggregation.
"""
key: str
""" The key of the bucket. """
doc_count: int
""" The number of documents in this bucket. """
[docs]class ESAggTermsResponse(TypedDict):
"""
Represents the response for a terms aggregation.
"""
buckets: List[ESAggBucketResponse]
""" A list of buckets in the terms aggregation. """
[docs]class ESAggValueResponse(TypedDict):
"""
Represents the response for an average, min, or max aggregation.
"""
value: float
""" The average, min, or max value. """
[docs]class ESAggHistogramBucketresponse(TypedDict):
"""
Represents a bucket in a histogram aggregation.
"""
key: float
""" Numeric key corresponding to the bucket's range. """
doc_count: int
""" The number of documents in this bucket."""
[docs]class ESAggHistogramResponse(TypedDict):
"""
Represents the response for a histogram aggregation.
"""
buckets: List[ESAggHistogramBucketresponse]
""" A list of buckets in the histogram aggregation. """
ESAggsResponse: TypeAlias = Dict[str, Union[
ESAggValueResponse,
ESAggTermsResponse,
ESAggHistogramResponse
]]
""" ElasticSearch aggregations response type definition """