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)
评论列表
文章目录