diff --git a/src/Nest/Ingest/Processor.cs b/src/Nest/Ingest/Processor.cs index c5096a00d38..d39070a0843 100644 --- a/src/Nest/Ingest/Processor.cs +++ b/src/Nest/Ingest/Processor.cs @@ -2,7 +2,7 @@ // Elasticsearch B.V licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information -using System; +using System; using System.Collections.Generic; using System.Runtime.Serialization; using Elasticsearch.Net.Utf8Json; @@ -18,6 +18,14 @@ public interface IProcessor [IgnoreDataMember] string Name { get; } + /// + /// A description to explain the purpose of the specific processor instance. + /// + /// Valid in Elasticsearch 7.9.0+ + /// + [DataMember(Name = "description")] + string Description { get; set; } + /// /// If a processor fails, call these processors instead. Read more about handling failures here: /// https://www.elastic.co/guide/en/elasticsearch/reference/current/handling-failure-in-pipelines.html @@ -54,6 +62,9 @@ public abstract class ProcessorBase : IProcessor /// public IEnumerable OnFailure { get; set; } protected abstract string Name { get; } + /// + public string Description { get; set; } + string IProcessor.Name => Name; } @@ -65,11 +76,15 @@ public abstract class ProcessorDescriptorBase Name; + string IProcessor.Description { get; set; } IEnumerable IProcessor.OnFailure { get; set; } string IProcessor.If { get; set; } string IProcessor.Tag { get; set; } bool? IProcessor.IgnoreFailure { get; set; } + /// + public TProcessorDescriptor Description(string description) => Assign(description, (a, v) => a.Description = v); + /// public TProcessorDescriptor OnFailure(IEnumerable processors) => Assign(processors.ToListOrNullIfEmpty(), (a, v) => a.OnFailure = v); diff --git a/tests/Tests/Ingest/ProcessorAssertions.cs b/tests/Tests/Ingest/ProcessorAssertions.cs index 9e35426b8b3..8f3733b2207 100644 --- a/tests/Tests/Ingest/ProcessorAssertions.cs +++ b/tests/Tests/Ingest/ProcessorAssertions.cs @@ -75,7 +75,7 @@ public class Append : ProcessorAssertion public override string Key => "append"; } - [SkipVersion("<7.8.0", "Empty Value bug in versions less than Elasticsearch 7.8.0")] + [SkipVersion("<7.9.0", "Description added in 7.9.0")] public class Csv : ProcessorAssertion { public override Func>> Fluent => d => d @@ -84,6 +84,7 @@ public class Csv : ProcessorAssertion .TargetFields(new[] { "targetField1", "targetField2" }) .EmptyValue("empty") .Trim() + .Description("parses CSV") ); public override IProcessor Initializer => new CsvProcessor @@ -91,7 +92,8 @@ public class Csv : ProcessorAssertion Field = "name", TargetFields = new[] { "targetField1", "targetField2" }, EmptyValue = "empty", - Trim = true + Trim = true, + Description = "parses CSV" }; public override object Json => new @@ -99,7 +101,8 @@ public class Csv : ProcessorAssertion field = "name", target_fields = new[] { "targetField1", "targetField2" }, empty_value = "empty", - trim = true + trim = true, + description = "parses CSV" }; public override string Key => "csv";