pandagg.query module

class pandagg.query.Query(q=None, mappings=None, nested_autocorrect=False)[source]

Bases: pandagg.tree._tree.Tree

applied_nested_path_at_node(nid)[source]

Return nested path applied at a clause.

Parameters:nid – clause identifier
Returns:None if no nested is applied, else applied path (str)
bool(must=None, should=None, must_not=None, filter=None, insert_below=None, on=None, mode='add', **body)[source]
>>> Query().bool(must={"term": {"some_field": "yolo"}})
boosting(positive=None, negative=None, insert_below=None, on=None, mode='add', **body)[source]
constant_score(filter=None, boost=None, insert_below=None, on=None, mode='add', **body)[source]
dis_max(queries, insert_below=None, on=None, mode='add', **body)[source]
filter(type_or_query, insert_below=None, on=None, mode='add', bool_body=None, **body)[source]
function_score(query, insert_below=None, on=None, mode='add', **body)[source]
has_child(query, insert_below=None, on=None, mode='add', **body)[source]
has_parent(query, insert_below=None, on=None, mode='add', **body)[source]
must(type_or_query, insert_below=None, on=None, mode='add', bool_body=None, **body)[source]

Create copy of initial Query and insert provided clause under “bool” query “must”.

>>> Query().must('term', some_field=1)
>>> Query().must({'term': {'some_field': 1}})
>>> from pandagg.query import Term
>>> Query().must(Term(some_field=1))
Keyword Arguments:
 
  • insert_below (str) – named query clause under which the inserted clauses should be placed.
  • compound_param (str) – param under which inserted clause will be placed in compound query
  • on (str) – named compound query clause on which the inserted compound clause should be merged.
  • 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
must_not(type_or_query, insert_below=None, on=None, mode='add', bool_body=None, **body)[source]
nested(path, query=None, insert_below=None, on=None, mode='add', **body)[source]
node_class

alias of pandagg.node.query.abstract.QueryClause

pinned_query(organic, insert_below=None, on=None, mode='add', **body)[source]
query(type_or_query, insert_below=None, on=None, mode='add', compound_param=None, **body)[source]

Insert provided clause in copy of initial Query.

>>> from pandagg.query import Query
>>> Query().query('term', some_field=23)
{'term': {'some_field': 23}}
>>> from pandagg.query import Term
>>> Query()\
>>> .query({'term': {'some_field': 23})\
>>> .query(Term(other_field=24))\
{'bool': {'must': [{'term': {'some_field': 23}}, {'term': {'other_field': 24}}]}}
Keyword Arguments:
 
  • insert_below (str) – named query clause under which the inserted clauses should be placed.
  • compound_param (str) – param under which inserted clause will be placed in compound query
  • on (str) – named compound query clause on which the inserted compound clause should be merged.
  • 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(query, insert_below=None, on=None, mode='add', **body)[source]
should(type_or_query, insert_below=None, on=None, mode='add', bool_body=None, **body)[source]
show(*args, line_max_length=80, **kwargs)[source]

Return compact representation of Query.

>>> Query()        >>> .must({"exists": {"field": "some_field"}})        >>> .must({"term": {"other_field": {"value": 5}}})        >>> .show()
<Query>
bool
└── must
    ├── exists                                                  field=some_field
    └── term                                          field=other_field, value=5

All *args and **kwargs are propagated to lighttree.Tree.show method. :return: str

to_dict(from_=None)[source]

Serialize Query as dict.

class pandagg.query.Exists(field, _name=None)[source]

Bases: pandagg.node.query.abstract.LeafQueryClause

KEY = 'exists'
line_repr(depth, **kwargs)[source]

Control how node is displayed in tree representation. _ ├── one end │ └── two myEnd └── three

class pandagg.query.Fuzzy(field=None, _name=None, _expand__to_dot=True, **params)[source]

Bases: pandagg.node.query.abstract.KeyFieldQueryClause

KEY = 'fuzzy'
class pandagg.query.Ids(values, _name=None)[source]

Bases: pandagg.node.query.abstract.LeafQueryClause

KEY = 'ids'
line_repr(depth, **kwargs)[source]

Control how node is displayed in tree representation. _ ├── one end │ └── two myEnd └── three

to_dict(with_name=True)[source]
class pandagg.query.Prefix(field=None, _name=None, _expand__to_dot=True, **params)[source]

Bases: pandagg.node.query.abstract.KeyFieldQueryClause

KEY = 'prefix'
class pandagg.query.Range(field=None, _name=None, _expand__to_dot=True, **params)[source]

Bases: pandagg.node.query.abstract.KeyFieldQueryClause

KEY = 'range'
class pandagg.query.Regexp(field=None, _name=None, _expand__to_dot=True, **params)[source]

Bases: pandagg.node.query.abstract.KeyFieldQueryClause

KEY = 'regexp'
class pandagg.query.Term(field=None, _name=None, _expand__to_dot=True, **params)[source]

Bases: pandagg.node.query.abstract.KeyFieldQueryClause

KEY = 'term'
class pandagg.query.Terms(**body)[source]

Bases: pandagg.node.query.abstract.AbstractSingleFieldQueryClause

KEY = 'terms'
class pandagg.query.TermsSet(field=None, _name=None, _expand__to_dot=True, **params)[source]

Bases: pandagg.node.query.abstract.KeyFieldQueryClause

KEY = 'terms_set'
class pandagg.query.Type(field=None, _name=None, _expand__to_dot=True, **params)[source]

Bases: pandagg.node.query.abstract.KeyFieldQueryClause

KEY = 'type'
class pandagg.query.Wildcard(field=None, _name=None, _expand__to_dot=True, **params)[source]

Bases: pandagg.node.query.abstract.KeyFieldQueryClause

KEY = 'wildcard'
class pandagg.query.Intervals(field=None, _name=None, _expand__to_dot=True, **params)[source]

Bases: pandagg.node.query.abstract.KeyFieldQueryClause

KEY = 'intervals'
class pandagg.query.Match(field=None, _name=None, _expand__to_dot=True, **params)[source]

Bases: pandagg.node.query.abstract.KeyFieldQueryClause

KEY = 'match'
class pandagg.query.MatchBoolPrefix(field=None, _name=None, _expand__to_dot=True, **params)[source]

Bases: pandagg.node.query.abstract.KeyFieldQueryClause

KEY = 'match_bool_prefix'
class pandagg.query.MatchPhrase(field=None, _name=None, _expand__to_dot=True, **params)[source]

Bases: pandagg.node.query.abstract.KeyFieldQueryClause

KEY = 'match_phrase'
class pandagg.query.MatchPhrasePrefix(field=None, _name=None, _expand__to_dot=True, **params)[source]

Bases: pandagg.node.query.abstract.KeyFieldQueryClause

KEY = 'match_phrase_prefix'
class pandagg.query.MultiMatch(fields, _name=None, **body)[source]

Bases: pandagg.node.query.abstract.MultiFieldsQueryClause

KEY = 'multi_match'
class pandagg.query.Common(field=None, _name=None, _expand__to_dot=True, **params)[source]

Bases: pandagg.node.query.abstract.KeyFieldQueryClause

KEY = 'common'
class pandagg.query.QueryString(_name=None, **body)[source]

Bases: pandagg.node.query.abstract.LeafQueryClause

KEY = 'query_string'
class pandagg.query.SimpleQueryString(_name=None, **body)[source]

Bases: pandagg.node.query.abstract.LeafQueryClause

KEY = 'simple_string'
class pandagg.query.Bool(_name=None, **body)[source]

Bases: pandagg.node.query.compound.CompoundClause

>>> Bool(must=[], should=[], filter=[], must_not=[], boost=1.2)
KEY = 'bool'
class pandagg.query.Boosting(_name=None, **body)[source]

Bases: pandagg.node.query.compound.CompoundClause

KEY = 'boosting'
class pandagg.query.ConstantScore(_name=None, **body)[source]

Bases: pandagg.node.query.compound.CompoundClause

KEY = 'constant_score'
class pandagg.query.FunctionScore(_name=None, **body)[source]

Bases: pandagg.node.query.compound.CompoundClause

KEY = 'function_score'
class pandagg.query.DisMax(_name=None, **body)[source]

Bases: pandagg.node.query.compound.CompoundClause

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

Bases: pandagg.node.query.compound.CompoundClause

KEY = 'nested'
class pandagg.query.HasParent(_name=None, **body)[source]

Bases: pandagg.node.query.compound.CompoundClause

KEY = 'has_parent'
class pandagg.query.HasChild(_name=None, **body)[source]

Bases: pandagg.node.query.compound.CompoundClause

KEY = 'has_child'
class pandagg.query.ParentId(_name=None, **body)[source]

Bases: pandagg.node.query.abstract.LeafQueryClause

KEY = 'parent_id'
class pandagg.query.Shape(_name=None, **body)[source]

Bases: pandagg.node.query.abstract.LeafQueryClause

KEY = 'shape'
class pandagg.query.GeoShape(field=None, _name=None, _expand__to_dot=True, **params)[source]

Bases: pandagg.node.query.abstract.KeyFieldQueryClause

KEY = 'geo_shape'
class pandagg.query.GeoPolygone(field=None, _name=None, _expand__to_dot=True, **params)[source]

Bases: pandagg.node.query.abstract.KeyFieldQueryClause

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

Bases: pandagg.node.query.abstract.AbstractSingleFieldQueryClause

KEY = 'geo_distance'
line_repr(depth, **kwargs)[source]

Control how node is displayed in tree representation. _ ├── one end │ └── two myEnd └── three

class pandagg.query.GeoBoundingBox(field=None, _name=None, _expand__to_dot=True, **params)[source]

Bases: pandagg.node.query.abstract.KeyFieldQueryClause

KEY = 'geo_bounding_box'
class pandagg.query.DistanceFeature(field, _name=None, **body)[source]

Bases: pandagg.node.query.abstract.FlatFieldQueryClause

KEY = 'distance_feature'
class pandagg.query.MoreLikeThis(fields, _name=None, **body)[source]

Bases: pandagg.node.query.abstract.MultiFieldsQueryClause

KEY = 'more_like_this'
class pandagg.query.Percolate(field, _name=None, **body)[source]

Bases: pandagg.node.query.abstract.FlatFieldQueryClause

KEY = 'percolate'
class pandagg.query.RankFeature(field, _name=None, **body)[source]

Bases: pandagg.node.query.abstract.FlatFieldQueryClause

KEY = 'rank_feature'
class pandagg.query.Script(_name=None, **body)[source]

Bases: pandagg.node.query.abstract.LeafQueryClause

KEY = 'script'
class pandagg.query.Wrapper(_name=None, **body)[source]

Bases: pandagg.node.query.abstract.LeafQueryClause

KEY = 'wrapper'
class pandagg.query.ScriptScore(_name=None, **body)[source]

Bases: pandagg.node.query.compound.CompoundClause

KEY = 'script_score'
class pandagg.query.PinnedQuery(_name=None, **body)[source]

Bases: pandagg.node.query.compound.CompoundClause

KEY = 'pinned'