docs: def search(self, query, indices=None, doc_types=None, model=None, scan=False, headers=None, **query_params):
          """Execute a search against one or more indices to get the resultset.
  
          `query` must be a Search object, a Query object, or a custom
          dictionary of search parameters using the query DSL to be passed
          directly.
          """
          if isinstance(query, Search):
              search = query
          elif isinstance(query, (Query, dict)):
              search = Search(query)
          else:
              raise InvalidQuery("search() must be supplied with a Search or Query object, or a dict")
  
          if scan:
              query_params.setdefault("search_type", "scan")
              query_params.setdefault("scroll", "10m")
  
          return ResultSet(self, search, indices=indices, doc_types=doc_types,
                           model=model, query_params=query_params, headers=headers)