<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def query_search(self, search_query, sort=None, offset=100, page=1):
 """ Search using a query. Currently implemented is the MongoDB query model to search for documents according to: https://docs.mongodb.com/manual/tutorial/query-documents/ And an Elastic Search driver, which implements a basic parser to convert the query into elastic search format. Example: query_search({"price":[0,10]}) :param search_query: Python dictionary, query following mongodb syntax :param sort: 1/-1 to sort ascending or descending. :param offset: Integer with the number of elements displayed per page. :param page: Integer with the number of page. :return: List of DDO instance """

        assert page >= 1, f'Invalid page value {page}. Required page >= 1.'
        search_query['sort'] = sort
        search_query['offset'] = offset
        search_query['page'] = page
        response = self.requests_session.post(
            f'{self.url}/query',
            data=json.dumps(search_query),
            headers=self._headers
        )
        if response.status_code == 200:
            return self._parse_search_response(response.content)
        else:
            raise Exception(f'Unable to search for DDO: {response.content}')