예제 #1
0
        public async Task <ResultDetails <string> > UpdateIndexSettingsAsync(IndexUpdateSettings indexUpdateSettings,
                                                                             string index = null)
        {
            _traceProvider.Trace(TraceEventType.Verbose, "{0}: UpdateIndexSettingsAsync Elastic started",
                                 "ElasticContextIndexMapping");
            var resultDetails = new ResultDetails <string> {
                Status = HttpStatusCode.InternalServerError
            };

            try
            {
                var indexMappings = new IndexMappings(_traceProvider, _elasticSerializerConfiguration);
                indexMappings.UpdateSettings(index, indexUpdateSettings);
                await indexMappings.Execute(_client, _connectionString, _traceProvider, _cancellationTokenSource);

                resultDetails.PayloadResult = "completed";
                return(resultDetails);
            }
            catch (OperationCanceledException oex)
            {
                _traceProvider.Trace(TraceEventType.Warning, oex,
                                     "{1}: UpdateIndexSettingsAsync OperationCanceledException: {0}", oex.Message,
                                     "ElasticContextIndexMapping");
                resultDetails.Description = "OperationCanceledException";
                return(resultDetails);
            }
        }
예제 #2
0
 public ElasticSerializer(ITraceProvider traceProvider,
                          ElasticSerializerConfiguration elasticSerializerConfiguration,
                          bool saveChangesAndInitMappingsForChildDocuments)
 {
     _elasticSerializerConfiguration = elasticSerializerConfiguration;
     _saveChangesAndInitMappingsForChildDocuments = saveChangesAndInitMappingsForChildDocuments;
     _traceProvider = traceProvider;
     _indexMappings = new IndexMappings(_traceProvider, _elasticSerializerConfiguration);
     _elasticSerializationResult.IndexMappings = _indexMappings;
 }
예제 #3
0
        public async Task <ResultDetails <string> > CreateIndexWithMappingAsync <T>(IndexDefinition indexDefinition)
        {
            if (indexDefinition == null)
            {
                indexDefinition = new IndexDefinition();
            }
            _traceProvider.Trace(TraceEventType.Verbose, "{0}: CreateIndexWithMappingAsync Elastic started",
                                 "ElasticContextIndexMapping");
            var resultDetails = new ResultDetails <string> {
                Status = HttpStatusCode.InternalServerError
            };

            try
            {
                var item = Activator.CreateInstance <T>();
                var entityContextInfo = new EntityContextInfo
                {
                    RoutingDefinition = indexDefinition.Mapping.RoutingDefinition,
                    Document          = item,
                    EntityType        = typeof(T),
                    Id = "0"
                };

                var index =
                    _elasticSerializerConfiguration.ElasticMappingResolver.GetElasticSearchMapping(
                        entityContextInfo.EntityType)
                    .GetIndexForType(entityContextInfo.EntityType);
                MappingUtils.GuardAgainstBadIndexName(index);

                var indexMappings = new IndexMappings(_traceProvider, _elasticSerializerConfiguration);
                indexMappings.CreateIndexSettingsAndMappingsForDocument(
                    index,
                    indexDefinition.IndexSettings,
                    indexDefinition.IndexAliases,
                    indexDefinition.IndexWarmers, entityContextInfo, indexDefinition.Mapping);
                indexDefinition.Mapping.Index = index;
                //indexMappings.CreatePropertyMappingForTopDocument(entityContextInfo, indexDefinition.Mapping);
                await indexMappings.Execute(_client, _connectionString, _traceProvider, _cancellationTokenSource);

                return(resultDetails);
            }
            catch (OperationCanceledException oex)
            {
                _traceProvider.Trace(TraceEventType.Warning, oex,
                                     "{1}: CreateIndexWithMappingAsync Request OperationCanceledException: {0}", oex.Message,
                                     "ElasticContextIndexMapping");
                resultDetails.Description = "OperationCanceledException";
                return(resultDetails);
            }
        }
예제 #4
0
        public async Task <ResultDetails <string> > CreateTypeMappingForIndexAsync <T>(MappingDefinition mappingDefinition)
        {
            if (mappingDefinition == null)
            {
                throw new ElasticException(
                          "CreateTypeMappingForIndexAsync: A mapping definition with the parent index is required");
            }
            _traceProvider.Trace(TraceEventType.Verbose, "{0}: CreateTypeMappingForIndex Elastic started",
                                 "ElasticContextIndexMapping");
            var resultDetails = new ResultDetails <string> {
                Status = HttpStatusCode.InternalServerError
            };

            try
            {
                var indexMappings = new IndexMappings(_traceProvider, _elasticSerializerConfiguration);

                var item = Activator.CreateInstance <T>();

                var entityContextInfo = new EntityContextInfo
                {
                    RoutingDefinition = mappingDefinition.RoutingDefinition,
                    Document          = item,
                    EntityType        = typeof(T),
                    Id = "0"
                };

                if (string.IsNullOrEmpty(mappingDefinition.Index))
                {
                    var index = _elasticSerializerConfiguration.ElasticMappingResolver
                                .GetElasticSearchMapping(entityContextInfo.EntityType)
                                .GetIndexForType(entityContextInfo.EntityType);
                    MappingUtils.GuardAgainstBadIndexName(index);
                    mappingDefinition.Index = index;
                }

                indexMappings.CreatePropertyMappingForTopDocument(entityContextInfo, mappingDefinition);
                await indexMappings.Execute(_client, _connectionString, _traceProvider, _cancellationTokenSource);

                return(resultDetails);
            }
            catch (OperationCanceledException oex)
            {
                _traceProvider.Trace(TraceEventType.Warning, oex,
                                     "{1}: CreateTypeMappingForIndexAsync Request OperationCanceledException: {0}", oex.Message,
                                     "ElasticContextIndexMapping");
                resultDetails.Description = "OperationCanceledException";
                return(resultDetails);
            }
        }
예제 #5
0
        public async Task <ResultDetails <string> > CreateIndexAsync(string index, IndexSettings indexSettings,
                                                                     IndexAliases indexAliases, IndexWarmers indexWarmers)
        {
            if (string.IsNullOrEmpty(index))
            {
                throw new ElasticException("CreateIndexAsync: index is required");
            }
            if (indexSettings == null)
            {
                indexSettings = new IndexSettings {
                    NumberOfShards = 5, NumberOfReplicas = 1
                }
            }
            ;
            if (indexAliases == null)
            {
                indexAliases = new IndexAliases();
            }

            if (indexWarmers == null)
            {
                indexWarmers = new IndexWarmers();
            }

            _traceProvider.Trace(TraceEventType.Verbose, "{0}: CreateIndexAsync Elastic started",
                                 "ElasticContextIndexMapping");
            var resultDetails = new ResultDetails <string> {
                Status = HttpStatusCode.InternalServerError
            };

            try
            {
                MappingUtils.GuardAgainstBadIndexName(index);

                var indexMappings = new IndexMappings(_traceProvider, _elasticSerializerConfiguration);
                indexMappings.CreateIndexSettingsForDocument(index, indexSettings, indexAliases, indexWarmers);
                await indexMappings.Execute(_client, _connectionString, _traceProvider, _cancellationTokenSource);

                return(resultDetails);
            }
            catch (OperationCanceledException oex)
            {
                _traceProvider.Trace(TraceEventType.Warning, oex,
                                     "{1}: CreateIndexAsync Request OperationCanceledException: {0}", oex.Message,
                                     "ElasticContextIndexMapping");
                resultDetails.Description = "OperationCanceledException";
                return(resultDetails);
            }
        }