public ElasticSearchOutput(ElasticSearchOutputConfig config, PutIndexTemplateDescriptor indexTemplate = null) { _logger = LogProvider.For <ElasticSearchOutput>(); _logger.Info("Creating"); var connectionSettings = new ConnectionSettings(new Uri(config.ElasticSearchUri)) .RequestTimeout(config.RetryInterval) .MaximumRetries(config.RetryCount); _elasticClient = new ElasticClient(connectionSettings); var batchCount = config.MaxBatchCount > 0 ? config.MaxBatchCount : 1; _uploadBlock = new ActionBlock <IList <TelemetryEvent> >(list => Send(list, throwExceptions: false), new ExecutionDataflowBlockOptions { BoundedCapacity = config.BoundedCapacity, MaxDegreeOfParallelism = config.MaxDegreeOfParallelism, }); _internalStreamBufferSubscription = _internalStream .Buffer(TimeSpan.FromSeconds(config.BufferTimeSec), batchCount) .Subscribe(_uploadBlock.AsObserver()); _jsonSerializerSettings = new JsonSerializerSettings() { ContractResolver = new CamelCasePropertyNamesContractResolver() }; _elasticClient.PutIndexTemplate(indexTemplate ?? new PutIndexTemplateDescriptor(config.ElasticSearchIndexName + "-template") .Template(config.ElasticSearchIndexName + "*") .Settings(x => x .NumberOfReplicas(0) .NumberOfShards(1)) .Mappings(m => m .Map("_default_", tm => tm .AllField(af => af.Enabled(false)) .DynamicTemplates(d => d .DynamicTemplate("all_strings_not_analyzed", dd => dd .MatchMappingType("string") .Match("*") .Mapping(dm => dm .String(sm => sm .NotAnalyzed())))) .Properties(p => p .String(sp => sp .Name("message") .Index(FieldIndexOption.Analyzed)))))); _config = config; }
/// <summary> /// Get a Put Index Template Descriptor for use with <see cref="Nest.PutIndexTemplateRequest"/> /// designed for use with Elastic Common Schema version 1.3.0 /// </summary> /// <param name="name">The name of the index template.</param> /// <returns>An instance of <see cref="Nest.PutIndexTemplateDescriptor"/>.</returns> public static PutIndexTemplateDescriptor GetIndexTemplate(Name name) { var indexTemplate = new PutIndexTemplateDescriptor(name); indexTemplate.IndexPatterns("ecs-*"); indexTemplate.Order(1); indexTemplate.Settings(s => s.Setting("index", new { refresh_interval = "5s", mapping = new { total_fields = new { limit = 100000 } } })); indexTemplate.Map(GetTypeMappingDescriptor()); return(indexTemplate); }
protected IPutIndexTemplateRequest PutFluent(string name, PutIndexTemplateDescriptor d) => d .IndexPatterns("startingwiththis-*") .Settings(s => s .NumberOfShards(1) );
private IPutIndexTemplateRequest CreateFluent(string name, PutIndexTemplateDescriptor d) => d .IndexPatterns("startingwiththis-*") .Settings(s => s .NumberOfShards(2) );
protected IPutIndexTemplateRequest CreateFluent(string name, PutIndexTemplateDescriptor d) => d .Template("startingwiththis-*") .Settings(s => s .NumberOfShards(2) );