def get_item(self, **kw): _raise_on_empty = kw.pop('_raise_on_empty', True) params = dict( index=self.index_name, doc_type=self.doc_type ) params.update(kw) not_found_msg = "'{}({})' resource not found".format( self.doc_type, params) try: data = self.api.get_source(**params) except IndexNotFoundException: if _raise_on_empty: raise JHTTPNotFound("{} (Index does not exist)".format( not_found_msg, self.doc_type, params)) data = {} except JHTTPNotFound: data = {} if not data: if _raise_on_empty: raise JHTTPNotFound(not_found_msg) else: log.debug(not_found_msg) if '_type' not in data: data['_type'] = self.doc_type return dict2obj(data)
def get_item(self, **kw): _raise_on_empty = kw.pop('_raise_on_empty', True) params = dict(index=self.index_name, doc_type=self.doc_type) params.update(kw) not_found_msg = "'{}({})' resource not found".format( self.doc_type, params) try: data = self.api.get_source(**params) except IndexNotFoundException: if _raise_on_empty: raise JHTTPNotFound("{} (Index does not exist)".format( not_found_msg, self.doc_type, params)) data = {} except JHTTPNotFound: data = {} if not data: if _raise_on_empty: raise JHTTPNotFound(not_found_msg) else: log.debug(not_found_msg) if '_type' not in data: data['_type'] = self.doc_type return dict2obj(data)
def get_resource(self, **kw): __raise = kw.pop('__raise_on_empty', True) params = dict( index=self.index_name, doc_type=self.doc_type ) params.setdefault('ignore', 404) params.update(kw) try: data = ES.api.get_source(**params) except IndexNotFoundException: if __raise: raise JHTTPNotFound( "{}({}) resource not found (Index does not exist)".format( self.doc_type, params)) data = {} if not data: msg = "'%s(%s)' resource not found" % (self.doc_type, params) if __raise: raise JHTTPNotFound(msg) else: log.debug(msg) return dict2obj(data)
def get_by_ids(self, ids, **params): if not ids: return _ESDocs() _raise_on_empty = params.pop('_raise_on_empty', False) fields = params.pop('_fields', []) _limit = params.pop('_limit', len(ids)) _page = params.pop('_page', None) _start = params.pop('_start', None) _start, _limit = process_limit(_start, _page, _limit) docs = [] for _id in ids: docs.append( dict(_index=self.index_name, _type=self.src2type(_id['_type']), _id=_id['_id'])) params = dict(body=dict(docs=docs)) if fields: fields_params = process_fields_param(fields) params.update(fields_params) documents = _ESDocs() documents._nefertari_meta = dict( start=_start, fields=fields, ) try: data = self.api.mget(**params) except IndexNotFoundException: if _raise_on_empty: raise JHTTPNotFound( '{}({}) resource not found (Index does not exist)'.format( self.doc_type, params)) documents._nefertari_meta.update(total=0) return documents for found_doc in data['docs']: try: output_doc = found_doc['_source'] output_doc['_type'] = found_doc['_type'] except KeyError: msg = "ES: '%s(%s)' resource not found" % (found_doc['_type'], found_doc['_id']) if _raise_on_empty: raise JHTTPNotFound(msg) else: log.error(msg) continue documents.append(dict2obj(dictset(output_doc))) documents._nefertari_meta.update(total=len(documents), ) return documents
def get_by_ids(self, ids, **params): if not ids: return _ESDocs() __raise_on_empty = params.pop('__raise_on_empty', False) fields = params.pop('_fields', []) _limit = params.pop('_limit', len(ids)) _page = params.pop('_page', None) _start = params.pop('_start', None) _start, _limit = process_limit(_start, _page, _limit) docs = [] for _id in ids: docs.append( dict( _index=self.index_name, _type=self.src2type(_id['_type']), _id=_id['_id'] ) ) params = dict( body=dict(docs=docs) ) if fields: params['fields'] = fields data = ES.api.mget(**params) documents = _ESDocs() for _d in data['docs']: try: _d = _d['fields'] if fields else _d['_source'] except KeyError: msg = "ES: '%s(%s)' resource not found" % ( _d['_type'], _d['_id']) if __raise_on_empty: raise JHTTPNotFound(msg) else: log.error(msg) continue documents.append(dict2obj(dictset(_d))) documents._nefertari_meta = dict( total=len(documents), start=_start, fields=fields, ) return documents
def get_collection(self, **params): _raise_on_empty = params.pop('_raise_on_empty', False) if 'body' in params: _params = params else: _params = self.build_search_params(params) if '_count' in params: return self.do_count(_params) fields = _params.pop('fields', '') if fields: fields_params = process_fields_param(fields) _params.update(fields_params) documents = _ESDocs() documents._nefertari_meta = dict( start=_params.get('from_', 0), fields=fields) try: data = self.api.search(**_params) except IndexNotFoundException: if _raise_on_empty: raise JHTTPNotFound( '{}({}) resource not found (Index does not exist)'.format( self.doc_type, params)) documents._nefertari_meta.update( total=0, took=0) return documents for found_doc in data['hits']['hits']: output_doc = found_doc['_source'] output_doc['_score'] = found_doc['_score'] output_doc['_type'] = found_doc['_type'] documents.append(dict2obj(output_doc)) documents._nefertari_meta.update( total=data['hits']['total'], took=data['took'], ) if not documents: msg = "%s(%s) resource not found" % (self.doc_type, params) if _raise_on_empty: raise JHTTPNotFound(msg) else: log.debug(msg) return documents
def get_collection(self, **params): _raise_on_empty = params.pop('_raise_on_empty', False) if 'body' in params: _params = params else: _params = self.build_search_params(params) if '_count' in params: return self.do_count(_params) fields = _params.pop('fields', '') if fields: fields_params = process_fields_param(fields) _params.update(fields_params) documents = _ESDocs() documents._nefertari_meta = dict(start=_params.get('from_', 0), fields=fields) try: data = self.api.search(**_params) except IndexNotFoundException: if _raise_on_empty: raise JHTTPNotFound( '{}({}) resource not found (Index does not exist)'.format( self.doc_type, params)) documents._nefertari_meta.update(total=0, took=0) return documents for found_doc in data['hits']['hits']: output_doc = found_doc['_source'] output_doc['_score'] = found_doc['_score'] output_doc['_type'] = found_doc['_type'] documents.append(dict2obj(output_doc)) documents._nefertari_meta.update( total=data['hits']['total'], took=data['took'], ) if not documents: msg = "%s(%s) resource not found" % (self.doc_type, params) if _raise_on_empty: raise JHTTPNotFound(msg) else: log.debug(msg) return documents
def get_by_ids(self, ids, **params): if not ids: return _ESDocs() __raise_on_empty = params.pop("__raise_on_empty", False) fields = params.pop("_fields", []) _limit = params.pop("_limit", len(ids)) _page = params.pop("_page", None) _start = params.pop("_start", None) _start, _limit = process_limit(_start, _page, _limit) docs = [] for _id in ids: docs.append(dict(_index=self.index_name, _type=self.src2type(_id["_type"]), _id=_id["_id"])) params = dict(body=dict(docs=docs)) if fields: fields_params = process_fields_param(fields) params.update(fields_params) documents = _ESDocs() documents._nefertari_meta = dict(start=_start, fields=fields) try: data = self.api.mget(**params) except IndexNotFoundException: if __raise_on_empty: raise JHTTPNotFound("{}({}) resource not found (Index does not exist)".format(self.doc_type, params)) documents._nefertari_meta.update(total=0) return documents for found_doc in data["docs"]: try: output_doc = found_doc["_source"] output_doc["_type"] = found_doc["_type"] except KeyError: msg = "ES: '%s(%s)' resource not found" % (found_doc["_type"], found_doc["_id"]) if __raise_on_empty: raise JHTTPNotFound(msg) else: log.error(msg) continue documents.append(dict2obj(dictset(output_doc))) documents._nefertari_meta.update(total=len(documents)) return documents
def get_collection(self, **params): __raise_on_empty = params.pop('__raise_on_empty', False) if 'body' in params: _params = params else: _params = self.build_search_params(params) if '_count' in params: return self.do_count(_params) # pop the fields before passing to search. # ES does not support passing names of nested structures _fields = _params.pop('fields', '') documents = _ESDocs() documents._nefertari_meta = dict( start=_params['from_'], fields=_fields) try: data = ES.api.search(**_params) except IndexNotFoundException: if __raise_on_empty: raise JHTTPNotFound( '{}({}) resource not found (Index does not exist)'.format( self.doc_type, params)) documents._nefertari_meta.update( total=0, took=0) return documents for da in data['hits']['hits']: _d = da['fields'] if _fields else da['_source'] _d['_score'] = da['_score'] documents.append(dict2obj(_d)) documents._nefertari_meta.update( total=data['hits']['total'], took=data['took'], ) if not documents: msg = "%s(%s) resource not found" % (self.doc_type, params) if __raise_on_empty: raise JHTTPNotFound(msg) else: log.debug(msg) return documents
def get_resource(self, **kw): __raise = kw.pop('__raise_on_empty', True) params = dict(index=self.index_name, doc_type=self.doc_type) params.setdefault('ignore', 404) params.update(kw) data = ES.api.get_source(**params) if not data: msg = "'%s(%s)' resource not found" % (self.doc_type, params) if __raise: raise JHTTPNotFound(msg) else: log.debug(msg) return dict2obj(data)
def get_by_ids(self, ids, **params): if not ids: return _ESDocs() __raise_on_empty = params.pop('__raise_on_empty', False) fields = params.pop('_fields', []) _limit = params.pop('_limit', len(ids)) _page = params.pop('_page', None) _start = params.pop('_start', None) _start, _limit = process_limit(_start, _page, _limit) docs = [] for _id in ids: docs.append( dict(_index=self.index_name, _type=self.src2type(_id['_type']), _id=_id['_id'])) params = dict(body=dict(docs=docs)) if fields: params['fields'] = fields data = ES.api.mget(**params) documents = _ESDocs() for _d in data['docs']: try: _d = _d['fields'] if fields else _d['_source'] except KeyError: msg = "ES: '%s(%s)' resource not found" % (_d['_type'], _d['_id']) if __raise_on_empty: raise JHTTPNotFound(msg) else: log.error(msg) continue documents.append(dict2obj(dictset(_d))) documents._nefertari_meta = dict( total=len(documents), start=_start, fields=fields, ) return documents
def get_resource(self, **kw): __raise = kw.pop('__raise_on_empty', True) params = dict( index=self.index_name, doc_type=self.doc_type ) params.setdefault('ignore', 404) params.update(kw) data = ES.api.get_source(**params) if not data: msg = "'%s(%s)' resource not found" % (self.doc_type, params) if __raise: raise JHTTPNotFound(msg) else: log.debug(msg) return dict2obj(data)
def get_collection(self, **params): __raise_on_empty = params.pop("__raise_on_empty", False) if "body" in params: _params = params else: _params = self.build_search_params(params) if "_count" in params: return self.do_count(_params) fields = _params.pop("fields", "") if fields: fields_params = process_fields_param(fields) _params.update(fields_params) documents = _ESDocs() documents._nefertari_meta = dict(start=_params.get("from_", 0), fields=fields) try: data = self.api.search(**_params) except IndexNotFoundException: if __raise_on_empty: raise JHTTPNotFound("{}({}) resource not found (Index does not exist)".format(self.doc_type, params)) documents._nefertari_meta.update(total=0, took=0) return documents for found_doc in data["hits"]["hits"]: output_doc = found_doc["_source"] output_doc["_score"] = found_doc["_score"] output_doc["_type"] = found_doc["_type"] documents.append(dict2obj(output_doc)) documents._nefertari_meta.update(total=data["hits"]["total"], took=data["took"]) if not documents: msg = "%s(%s) resource not found" % (self.doc_type, params) if __raise_on_empty: raise JHTTPNotFound(msg) else: log.debug(msg) return documents
def get_collection(self, **params): __raise_on_empty = params.pop('__raise_on_empty', False) if 'body' in params: _params = params else: _params = self.build_search_params(params) if '_count' in params: return self.do_count(_params) # pop the fields before passing to search. # ES does not support passing names of nested structures _fields = _params.pop('fields', '') data = ES.api.search(**_params) documents = _ESDocs() for da in data['hits']['hits']: _d = da['fields'] if 'fields' in _params else da['_source'] _d['_score'] = da['_score'] documents.append(dict2obj(_d)) documents._nefertari_meta = dict( total=data['hits']['total'], start=_params['from_'], fields=_fields, took=data['took'], ) if not documents: msg = "'%s(%s)' resource not found" % (self.doc_type, params) if __raise_on_empty: raise JHTTPNotFound(msg) else: log.debug(msg) return documents