code: func (s *GetService) buildURL() (string, url.Values, error) {
  	// Build URL
  	path, err := uritemplates.Expand("/{index}/{type}/{id}", map[string]string{
  		"id":    s.id,
  		"index": s.index,
  		"type":  s.typ,
  	})
  	if err != nil {
  		return "", url.Values{}, err
  	}
  
  	// Add query string parameters
  	params := url.Values{}
  	if s.pretty {
  		params.Set("pretty", "true")
  	}
  	if s.routing != "" {
  		params.Set("routing", s.routing)
  	}
  	if s.parent != "" {
  		params.Set("parent", s.parent)
  	}
  	if s.preference != "" {
  		params.Set("preference", s.preference)
  	}
  	if len(s.storedFields) > 0 {
  		params.Set("stored_fields", strings.Join(s.storedFields, ","))
  	}
  	if s.refresh != "" {
  		params.Set("refresh", s.refresh)
  	}
  	if s.version != nil {
  		params.Set("version", fmt.Sprintf("%v", s.version))
  	}
  	if s.versionType != "" {
  		params.Set("version_type", s.versionType)
  	}
  	if s.realtime != nil {
  		params.Set("realtime", fmt.Sprintf("%v", *s.realtime))
  	}
  	if s.ignoreErrorsOnGeneratedFields != nil {
  		params.Add("ignore_errors_on_generated_fields", fmt.Sprintf("%v", *s.ignoreErrorsOnGeneratedFields))
  	}
  	if s.fsc != nil {
  		for k, values := range s.fsc.Query() {
  			params.Add(k, strings.Join(values, ","))
  		}
  	}
  	return path, params, nil
  }
docs: // buildURL builds the URL for the operation.