Source code for pyramid_es.result

from .dotdict import DotDict


[docs]class ElasticResultRecord(object): """ Wrapper for an Elasticsearch result record. Provides access to the indexed document, ES result data (like score), and the mapped object. """ def __init__(self, raw): self.raw = DotDict(raw) def __repr__(self): return '<%s score:%s id:%s type:%s>' % ( self.__class__.__name__, getattr(self, '_score', '-'), self._id, self._type) def __getitem__(self, key): return self.raw[key] def __contains__(self, key): return key in self.raw def __getattr__(self, key): source = self.raw.get(u'_source', {}) fields = self.raw.get(u'fields', {}) if key in source: return source[key] elif key in fields: return fields[key] elif key in self.raw: return self.raw[key] raise AttributeError('%r object has no attribute %r' % (self.__class__.__name__, key))
[docs]class ElasticResult(object): """ Wrapper for an Elasticsearch result set. Provides access to the documents, result aggregate data (like total count), and facets. Iterate over this object to yield document records, which are instances of :py:class:`ElasticResultRecord`. """ def __init__(self, raw): self.raw = raw def __iter__(self): return (ElasticResultRecord(record) for record in self.raw['hits']['hits']) def __repr__(self): return '<%s total:%s>' % (self.__class__.__name__, self.total) @property
[docs] def total(self): """ Return the total number of docs which would have been matched by this query. Note that this is not necessarily the same as the number of document result records associated with this object, because the query may have a start / size applied. """ return self.raw['hits']['total']
@property
[docs] def facets(self): """ Return the facets returned by this seach query. """ return self.raw['facets']
@property def suggests(self): return self.raw['suggest']