code: func (s *TermvectorsService) Do(ctx context.Context) (*TermvectorsResponse, error) {
  	// Check pre-conditions
  	if err := s.Validate(); err != nil {
  		return nil, err
  	}
  
  	// Get URL for request
  	path, params, err := s.buildURL()
  	if err != nil {
  		return nil, err
  	}
  
  	// Setup HTTP request body
  	var body interface{}
  	if s.bodyJson != nil {
  		body = s.bodyJson
  	} else if s.bodyString != "" {
  		body = s.bodyString
  	} else {
  		data := make(map[string]interface{})
  		if s.doc != nil {
  			data["doc"] = s.doc
  		}
  		if len(s.perFieldAnalyzer) > 0 {
  			data["per_field_analyzer"] = s.perFieldAnalyzer
  		}
  		if s.filter != nil {
  			src, err := s.filter.Source()
  			if err != nil {
  				return nil, err
  			}
  			data["filter"] = src
  		}
  		if len(data) > 0 {
  			body = data
  		}
  	}
  
  	// Get HTTP response
  	res, err := s.client.PerformRequest(ctx, PerformRequestOptions{
  		Method: "GET",
  		Path:   path,
  		Params: params,
  		Body:   body,
  	})
  	if err != nil {
  		return nil, err
  	}
  
  	// Return operation response
  	ret := new(TermvectorsResponse)
  	if err := s.client.decoder.Decode(res.Body, ret); err != nil {
  		return nil, err
  	}
  	return ret, nil
  }
docs: // Do executes the operation.