예제 #1
0
        public ElasticSerializationResult Serialize(IEnumerable <EntityContextInfo> entities)
        {
            if (entities == null)
            {
                return(null);
            }

            _elasticSerializationResult = new ElasticSerializationResult();
            _elasticCrudJsonWriter      = new ElasticJsonWriter();

            foreach (var entity in entities)
            {
                var index = _elasticSerializerConfiguration.ElasticMappingResolver
                            .GetElasticSearchMapping(entity.EntityType).GetIndexForType(entity.EntityType);
                MappingUtils.GuardAgainstBadIndexName(index);

                if (_saveChangesAndInitMappingsForChildDocuments)
                {
                    _indexMappings.CreateIndexSettingsAndMappingsForDocument(
                        index,
                        new IndexSettings {
                        NumberOfShards = 5, NumberOfReplicas = 1
                    },
                        new IndexAliases(),
                        new IndexWarmers(),
                        entity, new MappingDefinition {
                        Index = index
                    });
                }

                if (entity.DeleteDocument)
                {
                    DeleteEntity(entity);
                }
                else
                {
                    AddUpdateEntity(entity);
                }
            }

            _elasticCrudJsonWriter.Dispose();
            _elasticSerializationResult.Content       = _elasticCrudJsonWriter.Stringbuilder.ToString();
            _elasticSerializationResult.IndexMappings = _indexMappings;
            return(_elasticSerializationResult);
        }
예제 #2
0
 public void Dispose()
 {
     _elasticCrudJsonWriter.Dispose();
 }