code: func (q *GeoDistanceQuery) Source() (interface{}, error) {
  	// {
  	//   "geo_distance" : {
  	//       "distance" : "200km",
  	//       "pin.location" : {
  	//           "lat" : 40,
  	//           "lon" : -70
  	//       }
  	//   }
  	// }
  
  	source := make(map[string]interface{})
  
  	params := make(map[string]interface{})
  
  	if q.geohash != "" {
  		params[q.name] = q.geohash
  	} else {
  		location := make(map[string]interface{})
  		location["lat"] = q.lat
  		location["lon"] = q.lon
  		params[q.name] = location
  	}
  
  	if q.distance != "" {
  		params["distance"] = q.distance
  	}
  	if q.distanceType != "" {
  		params["distance_type"] = q.distanceType
  	}
  	if q.queryName != "" {
  		params["_name"] = q.queryName
  	}
  
  	source["geo_distance"] = params
  
  	return source, nil
  }
docs: // Source returns JSON for the function score query.