Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        /// <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));
        }
Пример #4
0
        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);
        }
Пример #5
0
        /// <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);
        }