private void EagerCreateIndex(Contexts.Mouths.Mouth destination) { IGetMappingResponse mapping = null; try { if (destination.DeleteExisting) { // Get previous mapping mapping = _client.GetMapping <object>(m => { m.Index(destination.Index); m.Type(destination.Type); return(m); }); _client.DeleteMapping(new DeleteMappingRequest(destination.Index, destination.Type)); } } catch (Exception ex) { log.Error(ex); } try { var index = _client.CreateIndex(c => c .Index(destination.Index) .InitializeUsing(new Nest.IndexSettings()) ); _indexCreated = true; if (mapping != null) { // Use previous mapping to create mapping for new index log.Info("Adding previously pulled mapping"); _client.Map <object>(m => { m.InitializeUsing(mapping.Mapping); m.Index(destination.Index); m.Type(destination.Type); return(m); }); } else { // Process parent mapping as normal for type creation if (destination.Mapping != null) { _client.Map <object>(m => { m.Index(destination.Index); m.Type(destination.Type); if (destination.Mapping.Parent != null) { m.SetParent(destination.Mapping.Parent.Type); } return(m); }); } } } catch (Exception ex) { log.Error(ex); throw; } }