pandagg.query module

class pandagg.query.Query(*args, **kwargs)[source]

Bases: pandagg.tree._tree.Tree

Combination of query clauses.

Mapping declaration is optional, but doing so validates query validity and automatically inserts nested clauses when necessary.

Keyword Arguments:
 
  • mapping (dict or pandagg.tree.mapping.Mapping) – Mapping of requested indice(s). Providing it will add validation features, and add required nested clauses if missing.
  • nested_autocorrect (bool) – In case of missing nested clauses in query, if True, automatically add missing nested clauses, else raise error.
  • remaining kwargs: Used as body in query clauses.
KEY = None
applied_nested_path_at_node(nid)[source]
bool(*args, **kwargs)[source]
boost(*args, **kwargs)[source]
constant_score(*args, **kwargs)[source]
dis_max(*args, **kwargs)[source]
filter(*args, **kwargs)[source]
function_score(*args, **kwargs)[source]
has_child(*args, **kwargs)[source]
has_parent(*args, **kwargs)[source]
must(*args, **kwargs)[source]
must_not(*args, **kwargs)[source]
nested(*args, **kwargs)[source]
node_class

alias of pandagg.node.query.abstract.QueryClause

parent_id(*args, **kwargs)[source]
pinned_query(*args, **kwargs)[source]
query(*args, **kwargs)[source]

Insert new clause(s) in current query.

Inserted clause can accepts following syntaxes.

Given an empty query:

>>> from pandagg.query import Query
>>> q = Query()

flat syntax: clause type, followed by query clause body as keyword arguments:

>>> q.query('term', some_field=23)
{'term': {'some_field': 23}}

from regular Elasticsearch dict query:

>>> q.query({'term': {'some_field': 23}})
{'term': {'some_field': 23}}

using pandagg DSL:

>>> from pandagg.query import Term
>>> q.query(Term(field=23))
{'term': {'some_field': 23}}
Keyword Arguments:
 
  • parent (str) – named query clause under which the inserted clauses should be placed.
  • parent_param (str optional parameter when using parent param) – parameter under which inserted clauses will be placed. For instance if parent clause is a boolean, can be ‘must’, ‘filter’, ‘should’, ‘must_not’.
  • child (str) – named query clause above which the inserted clauses should be placed.
  • child_param (str optional parameter when using parent param) – parameter of inserted boolean clause under which child clauses will be placed. For instance if inserted clause is a boolean, can be ‘must’, ‘filter’, ‘should’, ‘must_not’.
  • mode (str one of ‘add’, ‘replace’, ‘replace_all’) – merging strategy when inserting clauses on a existing compound clause.
    • ‘add’ (default) : adds new clauses keeping initial ones
    • ‘replace’ : for each parameter (for instance in ‘bool’ case : ‘filter’, ‘must’, ‘must_not’, ‘should’), replace existing clauses under this parameter, by new ones only if declared in inserted compound query
    • ‘replace_all’ : existing compound clause is completely replaced by the new one
script_score(*args, **kwargs)[source]
should(*args, **kwargs)[source]
show(*args, **kwargs)[source]

Return tree structure in hierarchy style.

Parameters:
  • nid – Node identifier from which tree traversal will start. If None tree root will be used
  • filter_ – filter function performed on nodes. Nodes excluded from filter function nor their children won’t be displayed
  • reverse – the reverse param for sorting Node objects in the same level
  • key – key used to order nodes of same parent
  • reverse – reverse parameter applied at sorting
  • line_type – display type choice
  • limit – int, truncate tree display to this number of lines
  • kwargs – kwargs params passed to node line_repr method
Return type:

unicode in python2, str in python3

to_dict(from_=None, with_name=True)[source]

Serialize query as native dict. :param from_: optional, :param with_name: optional :return:

class pandagg.query.Exists(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'exists'
class pandagg.query.Fuzzy(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'fuzzy'
class pandagg.query.Ids(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'ids'
class pandagg.query.Prefix(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'prefix'
class pandagg.query.Range(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'range'
class pandagg.query.Regexp(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'regexp'
class pandagg.query.Term(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'term'
class pandagg.query.Terms(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'terms'
class pandagg.query.TermsSet(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'terms_set'
class pandagg.query.Type(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'type'
class pandagg.query.Wildcard(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'wildcard'
class pandagg.query.Intervals(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'intervals'
class pandagg.query.Match(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'match'
class pandagg.query.MatchBoolPrefix(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'match_bool_prefix'
class pandagg.query.MatchPhrase(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'match_phrase'
class pandagg.query.MatchPhrasePrefix(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'match_phrase_prefix'
class pandagg.query.MultiMatch(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'multi_match'
class pandagg.query.Common(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'common'
class pandagg.query.QueryString(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'query_string'
class pandagg.query.SimpleQueryString(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'simple_string'
class pandagg.query.Bool(**kwargs)[source]

Bases: pandagg.tree.query.abstract.Compound

KEY = 'bool'
class pandagg.query.Boosting(**kwargs)[source]

Bases: pandagg.tree.query.abstract.Compound

KEY = 'boosting'
class pandagg.query.ConstantScore(**kwargs)[source]

Bases: pandagg.tree.query.abstract.Compound

KEY = 'constant_score'
class pandagg.query.FunctionScore(**kwargs)[source]

Bases: pandagg.tree.query.abstract.Compound

KEY = 'function_score'
class pandagg.query.DisMax(**kwargs)[source]

Bases: pandagg.tree.query.abstract.Compound

KEY = 'dis_max'
class pandagg.query.Nested(**kwargs)[source]

Bases: pandagg.tree.query.abstract.Compound

KEY = 'nested'
class pandagg.query.HasParent(**kwargs)[source]

Bases: pandagg.tree.query.abstract.Compound

KEY = 'has_parent'
class pandagg.query.HasChild(**kwargs)[source]

Bases: pandagg.tree.query.abstract.Compound

KEY = 'has_child'
class pandagg.query.ParentId(**kwargs)[source]

Bases: pandagg.tree.query.abstract.Compound

KEY = 'parent_id'
class pandagg.query.Shape(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'shape'
class pandagg.query.GeoShape(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'geo_shape'
class pandagg.query.GeoPolygone(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'geo_polygon'
class pandagg.query.GeoDistance(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'geo_distance'
class pandagg.query.GeoBoundingBox(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'geo_bounding_box'
class pandagg.query.DistanceFeature(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'distance_feature'
class pandagg.query.MoreLikeThis(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'more_like_this'
class pandagg.query.Percolate(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'percolate'
class pandagg.query.RankFeature(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'rank_feature'
class pandagg.query.Script(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'script'
class pandagg.query.Wrapper(*args, **kwargs)[source]

Bases: pandagg.tree.query.abstract.Leaf

KEY = 'wrapper'
class pandagg.query.ScriptScore(**kwargs)[source]

Bases: pandagg.tree.query.abstract.Compound

KEY = 'script_score'
class pandagg.query.PinnedQuery(**kwargs)[source]

Bases: pandagg.tree.query.abstract.Compound

KEY = 'pinned'