ES NEST - How to Create an index and Bulk index dynamic objects with geometry (geo_point or geo_shape)?

Hi, guys!
I have a Dataset for which I don't know or have the type in advance, nor the number of properties or their type.

On execution, I obtain for that Dataset a DatasetSchema that contain the names, types and some flags for the properties.

For geometry properties I have their GeoJson representation stored as string and I have some flags (isGeoShape, isGeoPoint) that tell the ES property type.

I'm also using NetTopologySuite if it's needed to parse those GeoJsons to actual Geometry objects, but i rather not do this extra parsing and use the GeoJson strings instead.

class DatasetSchema {
	List<DatasetField> Fields;
}

class DatasetField { 
	string Name;
	Type DataType;
	bool isGeoShape;
	bool isGeoPoint;
}

Q:

  1. How can I create such an ES index with unknown / dynamic mappings schema with NEST high level client with those geometry properties?

  2. How can I Bulk index those documents with NEST high level client with Bulk or BulkAll APIs with those geometry properties?

I saw here and here that the bulk indexing might be done with BulkDescriptor:

dynamic obj = new System.Dynamic.ExpandoObject();
	// ….
var descriptor = new BulkDescriptor();
foreach (var doc in values)
{
    descriptor.Index<object>(i => i
        .Index("abc")
        .Id((Id)doc.Id)
        .Document((object)doc));
}
client.Bulk(descriptor);

Still, I’m curious how geometry types should be treated?

Thank you very much!
Any thoughts or suggestions are welcomed!