from typing import Any, List
from pandagg.node.types import NUMERIC_TYPES
from pandagg.node.aggs.abstract import FieldOrScriptMetricAgg, MetricAgg
[docs]class TopHits(MetricAgg):
VALUE_ATTRS = ["hits"]
KEY = "top_hits"
[docs]class Avg(FieldOrScriptMetricAgg):
WHITELISTED_MAPPING_TYPES = NUMERIC_TYPES
VALUE_ATTRS = ["value"]
KEY = "avg"
[docs]class Sum(FieldOrScriptMetricAgg):
WHITELISTED_MAPPING_TYPES = NUMERIC_TYPES
VALUE_ATTRS = ["value"]
KEY = "sum"
[docs]class Max(FieldOrScriptMetricAgg):
WHITELISTED_MAPPING_TYPES = NUMERIC_TYPES
VALUE_ATTRS = ["value"]
KEY = "max"
[docs]class Min(FieldOrScriptMetricAgg):
WHITELISTED_MAPPING_TYPES = NUMERIC_TYPES
VALUE_ATTRS = ["value"]
KEY = "min"
[docs]class Cardinality(FieldOrScriptMetricAgg):
VALUE_ATTRS = ["value"]
KEY = "cardinality"
[docs]class Stats(FieldOrScriptMetricAgg):
WHITELISTED_MAPPING_TYPES = NUMERIC_TYPES
VALUE_ATTRS = ["count", "min", "max", "avg", "sum"]
KEY = "stats"
[docs]class ExtendedStats(FieldOrScriptMetricAgg):
WHITELISTED_MAPPING_TYPES = NUMERIC_TYPES
VALUE_ATTRS = [
"count",
"min",
"max",
"avg",
"sum",
"sum_of_squares",
"variance",
"std_deviation",
"std_deviation_bounds",
]
KEY = "extended_stats"
[docs]class GeoBound(FieldOrScriptMetricAgg):
WHITELISTED_MAPPING_TYPES = ["geo_point"]
VALUE_ATTRS = ["bounds"]
KEY = "geo_bounds"
[docs]class GeoCentroid(FieldOrScriptMetricAgg):
WHITELISTED_MAPPING_TYPES = ["geo_point"]
VALUE_ATTRS = ["location"]
KEY = "geo_centroid"
[docs]class Percentiles(FieldOrScriptMetricAgg):
"""Percents body argument can be passed to specify which percentiles to fetch."""
WHITELISTED_MAPPING_TYPES = NUMERIC_TYPES
VALUE_ATTRS = ["values"]
KEY = "percentiles"
[docs]class PercentileRanks(FieldOrScriptMetricAgg):
WHITELISTED_MAPPING_TYPES = NUMERIC_TYPES
VALUE_ATTRS = ["values"]
KEY = "percentile_ranks"
def __init__(self, field: str, values: List[float], **body: Any) -> None:
super(PercentileRanks, self).__init__(field=field, values=values, **body)
[docs]class ValueCount(FieldOrScriptMetricAgg):
VALUE_ATTRS = ["value"]
KEY = "value_count"