def get(self, request, *args, **kwargs): query = self.get_query() sort = self.get_sort() pagination = LimitOffsetPagination() pagination.default_limit = 20 pagination.limit = pagination.get_limit(request) pagination.offset = pagination.get_offset(request) pagination.request = request body = { 'query': query, 'size': pagination.limit, 'from': pagination.offset } if sort: body['sort'] = sort # execute elasticsearch query indexer = self.get_indexer() res = indexer.search(body=body) # map back to expected format items = list(indexer.map_results(res['hits']['hits'])) pagination.count = res['hits']['total'] return pagination.get_paginated_response(items)
def get(self, request, *args, **kwargs): query = self.get_query() sort = self.get_sort() pagination = LimitOffsetPagination() pagination.default_limit = 20 pagination.limit = pagination.get_limit(request) pagination.offset = pagination.get_offset(request) pagination.request = request body = { "track_total_hits": True, "query": query, "size": pagination.limit, "from": pagination.offset, } if sort: body["sort"] = sort # execute elasticsearch query indexer = self.get_indexer() res = indexer.search(body=body) # map back to expected format items = list(indexer.map_results(res["hits"]["hits"])) pagination.count = res["hits"]["total"]["value"] return pagination.get_paginated_response(items)