from typing_extensions import TypedDict, Literal
from typing import Optional, Dict, Any, List, Union
ClauseName = str
ClauseType = str
ClauseBody = Dict[str, Any]
Meta = Dict[str, Any]
# Script
[docs]class Script(TypedDict, total=False):
lang: str
id: str
source: str
params: Dict[str, Any]
GapPolicy = Literal["skip", "insert_zeros", "keep_values"]
# Query
QueryType = ClauseType
QueryName = ClauseName
QueryClauseDict = Dict[QueryType, ClauseBody]
# Aggs
AggName = ClauseName
AggType = ClauseType
AggClauseDict = Dict[AggType, ClauseBody]
NamedAggsDict = Dict[AggName, AggClauseDict]
BucketKeyAtom = Union[None, str, float]
CompositeBucketKey = Dict[AggName, BucketKeyAtom]
BucketKey = Union[BucketKeyAtom, CompositeBucketKey]
BucketDict = Dict[str, Any]
RangeDict = TypedDict(
"RangeDict", {"from": float, "to": float, "key": str, "mask": str}, total=False
)
DistanceType = Literal["arc", "plane"]
ValidationMethod = Literal["STRICT", "COERCE", "IGNORE_MALFORMED"]
ExecutionHint = Literal["map", "global_ordinals", "bytes_hash"]
# https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-composite-aggregation.html#_value_sources
CompositeSource = AggClauseDict
# https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-composite-aggregation.html#_pagination
AfterKey = Dict[str, Any]
DocSource = Dict[str, Any]
SettingsDict = Dict[str, Any]
AliasName = str
[docs]class AliasValue(TypedDict, total=False):
filter: QueryClauseDict
index_routing: str
is_hidden: bool
is_write_index: bool
rooting: str
search_routing: str
IndexAliases = Dict[AliasName, AliasValue]
IndexName = str
# Mappings
FieldName = ClauseName
FieldType = ClauseType
FieldClauseDict = Dict[str, Any]
FieldPropertiesDict = Dict[FieldName, FieldClauseDict]
[docs]class MappingsDict(TypedDict, total=False):
properties: FieldPropertiesDict
dynamic: bool
[docs]class SourceIncludeDict(TypedDict, total=False):
includes: Union[str, List[str]]
excludes: Union[str, List[str]]
[docs]class RunTimeMappingDict(TypedDict, total=False):
type: str
script: str
[docs]class PointInTimeDict(TypedDict, total=False):
id: str
keep_alive: str
[docs]class FieldDict(TypedDict, total=False):
field: str
format: str
SearchDict = TypedDict(
"SearchDict",
{
"aggs": NamedAggsDict,
"aggregations": NamedAggsDict,
"docvalue_fields": List[Union[str, FieldDict]],
"fields": List[Union[str, FieldDict]],
"explain": bool,
"from": int,
"highlight": Dict[str, Any],
"indices_boost": List[Dict[IndexName, float]],
"min_score": float,
"pit": PointInTimeDict,
"query": QueryClauseDict,
"post_filter": QueryClauseDict,
"runtime_mappings": Dict[FieldName, RunTimeMappingDict],
"seq_no_primary_term": bool,
"script_fields": Dict[str, Any],
"size": int,
"suggest": Dict[str, Any],
"_source": Union[bool, str, List[str], SourceIncludeDict],
"sort": List[Union[str, Dict[str, Any]]],
"stats": List[str],
"terminate_after": int,
"timeout": Any,
"version": bool,
},
total=False,
)
BucketsDict = Dict[BucketKeyAtom, BucketDict]
Buckets = Union[BucketsDict, List[BucketDict]]
[docs]class BucketsWrapperDict(TypedDict, total=False):
buckets: Buckets
doc_count_error_upper_bound: int
sum_other_doc_count: int
AggClauseResponseDict = Union[BucketsWrapperDict, BucketDict]
AggregationsResponseDict = Dict[AggName, AggClauseResponseDict]
[docs]class HitDict(TypedDict, total=False):
_index: str
_id: str
_source: DocSource
_score: float
fields: Dict[str, List[Any]]
highlight: Dict[str, List[str]]
Relation = Literal["eq", "gte"]
[docs]class TotalDict(TypedDict, total=False):
value: int
relation: Relation
[docs]class HitsDict(TypedDict, total=False):
total: TotalDict
hits: List[HitDict]
max_score: Optional[float]
[docs]class ShardsDict(TypedDict, total=False):
total: int
successful: int
skipped: int
failed: int
[docs]class ProfileShardDict(TypedDict, total=False):
id: str
searches: List
aggregations: List
[docs]class ProfileDict(TypedDict, total=False):
shards: List[ProfileShardDict]
[docs]class SuggestedItemDict(TypedDict, total=False):
text: str
offset: int
length: int
options: List[Dict[str, Any]]
[docs]class SearchResponseDict(TypedDict, total=False):
_scroll_id: str
_shards: ShardsDict
timed_out: bool
terminated_early: bool
took: int
hits: HitsDict
aggregations: AggregationsResponseDict
profile: ProfileDict
suggest: Dict[str, List[SuggestedItemDict]]
[docs]class RetriesDict(TypedDict, total=False):
bulk: int
search: int
[docs]class DeleteByQueryResponse(TypedDict, total=False):
took: int
timed_out: bool
total: int
deleted: int
batches: int
version_conflicts: int
noops: int
retries: RetriesDict
throttled_millis: int
requests_per_second: float
throttled_until_millis: int
failures: List[Dict[str, Any]]
OpType = Literal["create", "index", "update", "delete"]
[docs]class Action(TypedDict, total=False):
_op_type: OpType
_id: str
_index: IndexName
retry_on_conflict: int
routing: str
version: int
version_type: Literal["external", "external_gte"]
_source: DocSource
doc: DocSource
require_alias: bool
dynamic_templates: Dict