code: func (c *InternalClient) exportNodeCSV(ctx context.Context, node *pilosa.Node, index, field string, shard uint64, w io.Writer) error {
  	span, ctx := tracing.StartSpanFromContext(ctx, "InternalClient.exportNodeCSV")
  	defer span.Finish()
  
  	// Create URL.
  	u := nodePathToURL(node, "/export")
  	u.RawQuery = url.Values{
  		"index": {index},
  		"field": {field},
  		"shard": {strconv.FormatUint(shard, 10)},
  	}.Encode()
  
  	// Generate HTTP request.
  	req, err := http.NewRequest("GET", u.String(), nil)
  	if err != nil {
  		return errors.Wrap(err, "creating request")
  	}
  	req.Header.Set("Accept", "text/csv")
  	req.Header.Set("User-Agent", "pilosa/"+pilosa.Version)
  
  	// Execute request against the host.
  	resp, err := c.executeRequest(req.WithContext(ctx))
  	if err != nil {
  		return err
  	}
  	defer resp.Body.Close()
  
  	// Copy body to writer.
  	if _, err := io.Copy(w, resp.Body); err != nil {
  		return errors.Wrap(err, "copying")
  	}
  
  	return nil
  }
docs: // exportNode copies a CSV export from a node to w.