'Execute a search against one or more indices to get the search hits.
`query` must be a Search object, a Query object, or a custom
dictionary of search parameters using the query DSL to be passed
directly.'

def search_raw(self, query, indices=None, doc_types=None, headers=None, **query_params):

    from .query import Search, Query
    if isinstance(query, Query):
        query = query.search()
    if isinstance(query, Search):
        query = query.serialize()
    body = self._encode_query(query)
    path = self._make_path(indices, doc_types, '_search')
    return self._send_request('GET', path, body, params=query_params, headers=headers)
