code: func (e SearchService) Exec(idx, statement string) (res SearchResult, err error) {
  	//  Copy-paste here till We decide which way to go with exec vs Do
  	if !strings.Contains(statement, ":") {
  		err = errors.New("statement is malformed")
  		return
  	}
  
  	query := SearchQuery{
  		Index: idx,
  		Query: statement,
  		// These are the defaults in chef: https://github.com/opscode/chef/blob/master/lib/chef/search/query.rb#L102-L105
  		SortBy: "X_CHEF_id_CHEF_X asc",
  		Start:  0,
  		Rows:   1000,
  	}
  
  	res, err = query.Do(e.client)
  	start := res.Start
  	inc := 1000
  	total := res.Total
  
  	for start+inc <= total {
  		query.Start = query.Start + 1000
  		start = query.Start
  		ares, err := query.Do(e.client)
  		if err != nil {
  			return res, err
  		}
  		res.Rows = append(res.Rows, ares.Rows...)
  	}
  	return
  }
docs: // Exec runs the query on the index passed in. This is a helper method. If you want more controll over the query  use NewQuery and its Do() method.
  // BUG(spheromak): Should we use exec or SearchQuery.Do() or have both ?