from .abstract import (
LeafQueryClause,
AbstractSingleFieldQueryClause,
KeyFieldQueryClause,
)
[docs]class Exists(LeafQueryClause):
KEY = "exists"
def __init__(self, field, _name=None):
self.field = field
super(Exists, self).__init__(_name=_name, field=field)
[docs] def line_repr(self, depth, **kwargs):
return self.KEY, "field=%s" % self.field
[docs]class Fuzzy(KeyFieldQueryClause):
KEY = "fuzzy"
_implicit_param = "value"
[docs]class Ids(LeafQueryClause):
KEY = "ids"
def __init__(self, values, _name=None):
self.field = "id"
self.values = values
super(Ids, self).__init__(_name=_name, values=values)
[docs] def to_dict(self, with_name=True):
b = {"values": self.values}
if with_name and self._named:
b["_name"] = self.name
return {self.KEY: b}
[docs] def line_repr(self, depth, **kwargs):
return self.KEY, "values=%s" % self.values
[docs]class Prefix(KeyFieldQueryClause):
KEY = "prefix"
_implicit_param = "value"
[docs]class Range(KeyFieldQueryClause):
KEY = "range"
[docs]class Regexp(KeyFieldQueryClause):
KEY = "regexp"
_implicit_param = "value"
[docs]class Term(KeyFieldQueryClause):
KEY = "term"
_implicit_param = "value"
[docs]class Terms(AbstractSingleFieldQueryClause):
KEY = "terms"
def __init__(self, **body):
_name = body.pop("_name", None)
boost = body.pop("boost", None)
if len(body) != 1:
raise ValueError("Wrong declaration: %s" % body)
field, terms = self.expand__to_dot(body).popitem()
b = {field: terms}
if boost is not None:
b["boost"] = boost
super(Terms, self).__init__(_name=_name, field=field, **b)
[docs]class TermsSet(KeyFieldQueryClause):
KEY = "terms_set"
_implicit_param = "terms"
[docs]class Type(KeyFieldQueryClause):
KEY = "type"
_implicit_param = "value"
[docs]class Wildcard(KeyFieldQueryClause):
KEY = "wildcard"
_implicit_param = "value"