public void CreateIndexSettingsAndMappingsForDocument(string index, IndexSettings indexSettings, IndexAliases indexAliases, IndexWarmers indexWarmers, EntityContextInfo entityInfo, MappingDefinition mappingDefinition) { if (_processedItems.Contains("_index" + index)) { return; } _processedItems.Add("_index" + index); var elasticCrudJsonWriter = new ElasticJsonWriter(); elasticCrudJsonWriter.JsonWriter.WriteStartObject(); CreateIndexSettings(elasticCrudJsonWriter, indexSettings); indexAliases.WriteJson(elasticCrudJsonWriter); indexWarmers.WriteJson(elasticCrudJsonWriter); IndexSettingsCreatePropertyMappingForTopDocument(entityInfo, mappingDefinition, elasticCrudJsonWriter); elasticCrudJsonWriter.JsonWriter.WriteEndObject(); CreateIndexCommand(elasticCrudJsonWriter.GetJsonString(), index); }
public void UpdateSettings(string index, IndexUpdateSettings indexUpdateSettings) { var elasticCrudJsonWriter = new ElasticJsonWriter(); elasticCrudJsonWriter.JsonWriter.WriteStartObject(); elasticCrudJsonWriter.JsonWriter.WritePropertyName("index"); elasticCrudJsonWriter.JsonWriter.WriteStartObject(); indexUpdateSettings.WriteJson(elasticCrudJsonWriter); elasticCrudJsonWriter.JsonWriter.WriteEndObject(); elasticCrudJsonWriter.JsonWriter.WriteEndObject(); SettingsCommand(elasticCrudJsonWriter.GetJsonString(), index); }
/// <summary> /// Create a new mapping for the child type in the parent document index /// </summary> /// <param name="entityInfo"> </param> /// <param name="elasticMapping"> </param> /// <param name="item"> </param> /// <param name="mappingDefinition"> definition for the type mappings </param> private void CreatePropertyMappingForChildDocument(EntityContextInfo entityInfo, ElasticMapping elasticMapping, EntityContextInfo item, MappingDefinition mappingDefinition) { var childMapping = _elasticSerializerConfiguration.ElasticMappingResolver.GetElasticSearchMapping(item.EntityType); var parentMapping = _elasticSerializerConfiguration.ElasticMappingResolver.GetElasticSearchMapping(item.ParentEntityType); var childType = childMapping.GetDocumentType(item.EntityType); var parentType = parentMapping.GetDocumentType(item.ParentEntityType); var processedId = childType + "_" + parentType; if (_processedItems.Contains(childType)) { var test = CommandTypes.Find(t => t.StartsWith(childType)); if (test != processedId) { throw new ElasticException("InitMappings: Not supported, child documents can only have one parent"); } return; } _processedItems.Add(childType); CommandTypes.Add(processedId); var elasticCrudJsonWriter = new ElasticJsonWriter(); elasticCrudJsonWriter.JsonWriter.WriteStartObject(); elasticCrudJsonWriter.JsonWriter.WritePropertyName(childType); elasticCrudJsonWriter.JsonWriter.WriteStartObject(); mappingDefinition.Source.WriteJson(elasticCrudJsonWriter); mappingDefinition.All.WriteJson(elasticCrudJsonWriter); CreateParentMappingForDocument( elasticCrudJsonWriter, elasticMapping.GetDocumentType(item.ParentEntityType)); if (item.RoutingDefinition.RoutingId != null && _elasticSerializerConfiguration.UserDefinedRouting) { CreateForceRoutingMappingForDocument(elasticCrudJsonWriter); } ProccessPropertyMappingsWithoutTypeName(elasticCrudJsonWriter, item, childMapping); elasticCrudJsonWriter.JsonWriter.WriteEndObject(); elasticCrudJsonWriter.JsonWriter.WriteEndObject(); CreateMappingCommandForTypeWithExistingIndex(elasticCrudJsonWriter.GetJsonString(), elasticMapping.GetIndexForType(entityInfo.EntityType), childMapping.GetDocumentType(item.EntityType)); }
public void CreateIndexSettingsForDocument(string index, IndexSettings indexSettings, IndexAliases indexAliases, IndexWarmers indexWarmers) { if (_processedItems.Contains("_index" + index)) { return; } _processedItems.Add("_index" + index); var elasticCrudJsonWriter = new ElasticJsonWriter(); elasticCrudJsonWriter.JsonWriter.WriteStartObject(); CreateIndexSettings(elasticCrudJsonWriter, indexSettings); indexAliases.WriteJson(elasticCrudJsonWriter); indexWarmers.WriteJson(elasticCrudJsonWriter); elasticCrudJsonWriter.JsonWriter.WriteEndObject(); CreateIndexCommand(elasticCrudJsonWriter.GetJsonString(), index); }
/// <summary> /// Create a new index for the parent document /// </summary> /// <param name="entityInfo"> </param> /// <param name="elasticMapping"> </param> /// <param name="mappingDefinition"> mapping definitions for the index type </param> private void CreatePropertyMappingForEntityForParentDocument(EntityContextInfo entityInfo, ElasticMapping elasticMapping, MappingDefinition mappingDefinition) { var itemType = elasticMapping.GetDocumentType(entityInfo.EntityType); if (_processedItems.Contains("_mapping" + itemType)) { return; } _processedItems.Add("_mapping" + itemType); var elasticCrudJsonWriter = new ElasticJsonWriter(); elasticCrudJsonWriter.JsonWriter.WriteStartObject(); elasticCrudJsonWriter.JsonWriter.WritePropertyName(itemType); elasticCrudJsonWriter.JsonWriter.WriteStartObject(); mappingDefinition.Source.WriteJson(elasticCrudJsonWriter); mappingDefinition.All.WriteJson(elasticCrudJsonWriter); if (entityInfo.RoutingDefinition.RoutingId != null && _elasticSerializerConfiguration.UserDefinedRouting) { CreateForceRoutingMappingForDocument(elasticCrudJsonWriter); } if (entityInfo.RoutingDefinition.ParentId != null) { CreateParentMappingForDocument( elasticCrudJsonWriter, elasticMapping.GetDocumentType(entityInfo.ParentEntityType)); } ProccessPropertyMappingsWithoutTypeName(elasticCrudJsonWriter, entityInfo, elasticMapping); elasticCrudJsonWriter.JsonWriter.WriteEndObject(); elasticCrudJsonWriter.JsonWriter.WriteEndObject(); CreateMappingCommandForTypeWithExistingIndex(elasticCrudJsonWriter.GetJsonString(), mappingDefinition.Index, itemType); }