Skip to content

Commit 69a6a18

Browse files
authored
Add optional description parameter to ingest processors. (#57906)
This commit adds an optional field, `description`, to all ingest processors so that users can explain the purpose of the specific processor instance. Closes #56000.
1 parent d756cd6 commit 69a6a18

File tree

127 files changed

+1003
-693
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

127 files changed

+1003
-693
lines changed

modules/ingest-common/src/main/java/org/elasticsearch/ingest/common/AbstractStringProcessor.java

+6-5
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ abstract class AbstractStringProcessor<T> extends AbstractProcessor {
3939
private final boolean ignoreMissing;
4040
private final String targetField;
4141

42-
AbstractStringProcessor(String tag, String field, boolean ignoreMissing, String targetField) {
43-
super(tag);
42+
AbstractStringProcessor(String tag, String description, boolean ignoreMissing, String targetField, String field) {
43+
super(tag, description);
4444
this.field = field;
4545
this.ignoreMissing = ignoreMissing;
4646
this.targetField = targetField;
@@ -106,15 +106,16 @@ protected Factory(String processorType) {
106106

107107
@Override
108108
public AbstractStringProcessor<?> create(Map<String, Processor.Factory> registry, String tag,
109-
Map<String, Object> config) throws Exception {
109+
String description, Map<String, Object> config) throws Exception {
110110
String field = ConfigurationUtils.readStringProperty(processorType, tag, config, "field");
111111
boolean ignoreMissing = ConfigurationUtils.readBooleanProperty(processorType, tag, config, "ignore_missing", false);
112112
String targetField = ConfigurationUtils.readStringProperty(processorType, tag, config, "target_field", field);
113113

114-
return newProcessor(tag, config, field, ignoreMissing, targetField);
114+
return newProcessor(tag, description, config, field, ignoreMissing, targetField);
115115
}
116116

117-
protected abstract AbstractStringProcessor<?> newProcessor(String processorTag, Map<String, Object> config, String field,
117+
protected abstract AbstractStringProcessor<?> newProcessor(String processorTag, String description,
118+
Map<String, Object> config, String field,
118119
boolean ignoreMissing, String targetField);
119120
}
120121
}

modules/ingest-common/src/main/java/org/elasticsearch/ingest/common/AppendProcessor.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ public final class AppendProcessor extends AbstractProcessor {
4141
private final TemplateScript.Factory field;
4242
private final ValueSource value;
4343

44-
AppendProcessor(String tag, TemplateScript.Factory field, ValueSource value) {
45-
super(tag);
44+
AppendProcessor(String tag, String description, TemplateScript.Factory field, ValueSource value) {
45+
super(tag, description);
4646
this.field = field;
4747
this.value = value;
4848
}
@@ -76,12 +76,12 @@ public Factory(ScriptService scriptService) {
7676

7777
@Override
7878
public AppendProcessor create(Map<String, Processor.Factory> registry, String processorTag,
79-
Map<String, Object> config) throws Exception {
79+
String description, Map<String, Object> config) throws Exception {
8080
String field = ConfigurationUtils.readStringProperty(TYPE, processorTag, config, "field");
8181
Object value = ConfigurationUtils.readObject(TYPE, processorTag, config, "value");
8282
TemplateScript.Factory compiledTemplate = ConfigurationUtils.compileTemplate(TYPE, processorTag,
8383
"field", field, scriptService);
84-
return new AppendProcessor(processorTag, compiledTemplate, ValueSource.wrap(value, scriptService));
84+
return new AppendProcessor(processorTag, description, compiledTemplate, ValueSource.wrap(value, scriptService));
8585
}
8686
}
8787
}

modules/ingest-common/src/main/java/org/elasticsearch/ingest/common/BytesProcessor.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ public final class BytesProcessor extends AbstractStringProcessor<Long> {
3131

3232
public static final String TYPE = "bytes";
3333

34-
BytesProcessor(String processorTag, String field, boolean ignoreMissing, String targetField) {
35-
super(processorTag, field, ignoreMissing, targetField);
34+
BytesProcessor(String processorTag, String description, String field, boolean ignoreMissing, String targetField) {
35+
super(processorTag, description, ignoreMissing, targetField, field);
3636
}
3737

3838
public static long apply(String value) {
@@ -56,9 +56,9 @@ public Factory() {
5656
}
5757

5858
@Override
59-
protected BytesProcessor newProcessor(String tag, Map<String, Object> config, String field,
59+
protected BytesProcessor newProcessor(String tag, String description, Map<String, Object> config, String field,
6060
boolean ignoreMissing, String targetField) {
61-
return new BytesProcessor(tag, field, ignoreMissing, targetField);
61+
return new BytesProcessor(tag, description, field, ignoreMissing, targetField);
6262
}
6363
}
6464
}

modules/ingest-common/src/main/java/org/elasticsearch/ingest/common/ConvertProcessor.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -148,8 +148,8 @@ public static Type fromString(String processorTag, String propertyName, String t
148148
private final Type convertType;
149149
private final boolean ignoreMissing;
150150

151-
ConvertProcessor(String tag, String field, String targetField, Type convertType, boolean ignoreMissing) {
152-
super(tag);
151+
ConvertProcessor(String tag, String description, String field, String targetField, Type convertType, boolean ignoreMissing) {
152+
super(tag, description);
153153
this.field = field;
154154
this.targetField = targetField;
155155
this.convertType = convertType;
@@ -205,13 +205,13 @@ public String getType() {
205205
public static final class Factory implements Processor.Factory {
206206
@Override
207207
public ConvertProcessor create(Map<String, Processor.Factory> registry, String processorTag,
208-
Map<String, Object> config) throws Exception {
208+
String description, Map<String, Object> config) throws Exception {
209209
String field = ConfigurationUtils.readStringProperty(TYPE, processorTag, config, "field");
210210
String typeProperty = ConfigurationUtils.readStringProperty(TYPE, processorTag, config, "type");
211211
String targetField = ConfigurationUtils.readStringProperty(TYPE, processorTag, config, "target_field", field);
212212
Type convertType = Type.fromString(processorTag, "type", typeProperty);
213213
boolean ignoreMissing = ConfigurationUtils.readBooleanProperty(TYPE, processorTag, config, "ignore_missing", false);
214-
return new ConvertProcessor(processorTag, field, targetField, convertType, ignoreMissing);
214+
return new ConvertProcessor(processorTag, description, field, targetField, convertType, ignoreMissing);
215215
}
216216
}
217217
}

modules/ingest-common/src/main/java/org/elasticsearch/ingest/common/CsvProcessor.java

+8-7
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.elasticsearch.ingest.AbstractProcessor;
2323
import org.elasticsearch.ingest.ConfigurationUtils;
2424
import org.elasticsearch.ingest.IngestDocument;
25+
import org.elasticsearch.ingest.Processor;
2526

2627
import java.util.List;
2728
import java.util.Map;
@@ -54,9 +55,9 @@ public final class CsvProcessor extends AbstractProcessor {
5455
final boolean ignoreMissing;
5556
final Object emptyValue;
5657

57-
CsvProcessor(String tag, String field, String[] headers, boolean trim, char separator, char quote, boolean ignoreMissing,
58-
Object emptyValue) {
59-
super(tag);
58+
CsvProcessor(String tag, String description, String field, String[] headers, boolean trim, char separator, char quote,
59+
boolean ignoreMissing, Object emptyValue) {
60+
super(tag, description);
6061
this.field = field;
6162
this.headers = headers;
6263
this.trim = trim;
@@ -89,8 +90,8 @@ public String getType() {
8990

9091
public static final class Factory implements org.elasticsearch.ingest.Processor.Factory {
9192
@Override
92-
public CsvProcessor create(Map<String, org.elasticsearch.ingest.Processor.Factory> registry, String processorTag,
93-
Map<String, Object> config) {
93+
public CsvProcessor create(Map<String, Processor.Factory> registry, String processorTag,
94+
String description, Map<String, Object> config) {
9495
String field = ConfigurationUtils.readStringProperty(TYPE, processorTag, config, "field");
9596
String quote = ConfigurationUtils.readStringProperty(TYPE, processorTag, config, "quote", "\"");
9697
if (quote.length() != 1) {
@@ -110,8 +111,8 @@ public CsvProcessor create(Map<String, org.elasticsearch.ingest.Processor.Factor
110111
if (targetFields.isEmpty()) {
111112
throw newConfigurationException(TYPE, processorTag, "target_fields", "target fields list can't be empty");
112113
}
113-
return new CsvProcessor(processorTag, field, targetFields.toArray(String[]::new), trim, separator.charAt(0), quote.charAt(0),
114-
ignoreMissing, emptyValue);
114+
return new CsvProcessor(processorTag, description, field, targetFields.toArray(String[]::new), trim, separator.charAt(0),
115+
quote.charAt(0), ignoreMissing, emptyValue);
115116
}
116117
}
117118
}

modules/ingest-common/src/main/java/org/elasticsearch/ingest/common/DateIndexNameProcessor.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,10 @@ public final class DateIndexNameProcessor extends AbstractProcessor {
5050
private final ZoneId timezone;
5151
private final List<Function<String, ZonedDateTime>> dateFormats;
5252

53-
DateIndexNameProcessor(String tag, String field, List<Function<String, ZonedDateTime>> dateFormats, ZoneId timezone,
54-
TemplateScript.Factory indexNamePrefixTemplate, TemplateScript.Factory dateRoundingTemplate,
53+
DateIndexNameProcessor(String tag, String description, String field, List<Function<String, ZonedDateTime>> dateFormats,
54+
ZoneId timezone, TemplateScript.Factory indexNamePrefixTemplate, TemplateScript.Factory dateRoundingTemplate,
5555
TemplateScript.Factory indexNameFormatTemplate) {
56-
super(tag);
56+
super(tag, description);
5757
this.field = field;
5858
this.timezone = timezone;
5959
this.dateFormats = dateFormats;
@@ -145,7 +145,7 @@ public Factory(ScriptService scriptService) {
145145

146146
@Override
147147
public DateIndexNameProcessor create(Map<String, Processor.Factory> registry, String tag,
148-
Map<String, Object> config) throws Exception {
148+
String description, Map<String, Object> config) throws Exception {
149149
String localeString = ConfigurationUtils.readOptionalStringProperty(TYPE, tag, config, "locale");
150150
String timezoneString = ConfigurationUtils.readOptionalStringProperty(TYPE, tag, config, "timezone");
151151
ZoneId timezone = timezoneString == null ? ZoneOffset.UTC : ZoneId.of(timezoneString);
@@ -177,7 +177,7 @@ public DateIndexNameProcessor create(Map<String, Processor.Factory> registry, St
177177
String indexNameFormat = ConfigurationUtils.readStringProperty(TYPE, tag, config, "index_name_format", "yyyy-MM-dd");
178178
TemplateScript.Factory indexNameFormatTemplate =
179179
ConfigurationUtils.compileTemplate(TYPE, tag, "index_name_format", indexNameFormat, scriptService);
180-
return new DateIndexNameProcessor(tag, field, dateFormats, timezone, indexNamePrefixTemplate,
180+
return new DateIndexNameProcessor(tag, description, field, dateFormats, timezone, indexNamePrefixTemplate,
181181
dateRoundingTemplate, indexNameFormatTemplate);
182182
}
183183
}

modules/ingest-common/src/main/java/org/elasticsearch/ingest/common/DateProcessor.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ public final class DateProcessor extends AbstractProcessor {
5252
private final List<String> formats;
5353
private final List<Function<Map<String, Object>, Function<String, ZonedDateTime>>> dateParsers;
5454

55-
DateProcessor(String tag, @Nullable TemplateScript.Factory timezone, @Nullable TemplateScript.Factory locale,
55+
DateProcessor(String tag, String description, @Nullable TemplateScript.Factory timezone, @Nullable TemplateScript.Factory locale,
5656
String field, List<String> formats, String targetField) {
57-
super(tag);
57+
super(tag, description);
5858
this.timezone = timezone;
5959
this.locale = locale;
6060
this.field = field;
@@ -137,7 +137,7 @@ public Factory(ScriptService scriptService) {
137137
}
138138

139139
public DateProcessor create(Map<String, Processor.Factory> registry, String processorTag,
140-
Map<String, Object> config) throws Exception {
140+
String description, Map<String, Object> config) throws Exception {
141141
String field = ConfigurationUtils.readStringProperty(TYPE, processorTag, config, "field");
142142
String targetField = ConfigurationUtils.readStringProperty(TYPE, processorTag, config, "target_field", DEFAULT_TARGET_FIELD);
143143
String timezoneString = ConfigurationUtils.readOptionalStringProperty(TYPE, processorTag, config, "timezone");
@@ -153,7 +153,8 @@ public DateProcessor create(Map<String, Processor.Factory> registry, String proc
153153
"locale", localeString, scriptService);
154154
}
155155
List<String> formats = ConfigurationUtils.readList(TYPE, processorTag, config, "formats");
156-
return new DateProcessor(processorTag, compiledTimezoneTemplate, compiledLocaleTemplate, field, formats, targetField);
156+
return new DateProcessor(processorTag, description, compiledTimezoneTemplate, compiledLocaleTemplate, field, formats,
157+
targetField);
157158
}
158159
}
159160
}

modules/ingest-common/src/main/java/org/elasticsearch/ingest/common/DissectProcessor.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ public final class DissectProcessor extends AbstractProcessor {
3737
final String appendSeparator;
3838
final DissectParser dissectParser;
3939

40-
DissectProcessor(String tag, String field, String pattern, String appendSeparator, boolean ignoreMissing) {
41-
super(tag);
40+
DissectProcessor(String tag, String description, String field, String pattern, String appendSeparator, boolean ignoreMissing) {
41+
super(tag, description);
4242
this.field = field;
4343
this.ignoreMissing = ignoreMissing;
4444
this.pattern = pattern;
@@ -66,12 +66,13 @@ public String getType() {
6666
public static final class Factory implements Processor.Factory {
6767

6868
@Override
69-
public DissectProcessor create(Map<String, Processor.Factory> registry, String processorTag, Map<String, Object> config) {
69+
public DissectProcessor create(Map<String, Processor.Factory> registry, String processorTag, String description,
70+
Map<String, Object> config) {
7071
String field = ConfigurationUtils.readStringProperty(TYPE, processorTag, config, "field");
7172
String pattern = ConfigurationUtils.readStringProperty(TYPE, processorTag, config, "pattern");
7273
String appendSeparator = ConfigurationUtils.readStringProperty(TYPE, processorTag, config, "append_separator", "");
7374
boolean ignoreMissing = ConfigurationUtils.readBooleanProperty(TYPE, processorTag, config, "ignore_missing", false);
74-
return new DissectProcessor(processorTag, field, pattern, appendSeparator, ignoreMissing);
75+
return new DissectProcessor(processorTag, description, field, pattern, appendSeparator, ignoreMissing);
7576
}
7677
}
7778
}

modules/ingest-common/src/main/java/org/elasticsearch/ingest/common/DotExpanderProcessor.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ public final class DotExpanderProcessor extends AbstractProcessor {
3333
private final String path;
3434
private final String field;
3535

36-
DotExpanderProcessor(String tag, String path, String field) {
37-
super(tag);
36+
DotExpanderProcessor(String tag, String description, String path, String field) {
37+
super(tag, description);
3838
this.path = path;
3939
this.field = field;
4040
}
@@ -96,7 +96,7 @@ String getField() {
9696
public static final class Factory implements Processor.Factory {
9797

9898
@Override
99-
public Processor create(Map<String, Processor.Factory> processorFactories, String tag,
99+
public Processor create(Map<String, Processor.Factory> processorFactories, String tag, String description,
100100
Map<String, Object> config) throws Exception {
101101
String field = ConfigurationUtils.readStringProperty(TYPE, tag, config, "field");
102102
if (field.contains(".") == false) {
@@ -117,7 +117,7 @@ public Processor create(Map<String, Processor.Factory> processorFactories, Strin
117117
}
118118

119119
String path = ConfigurationUtils.readOptionalStringProperty(TYPE, tag, config, "path");
120-
return new DotExpanderProcessor(tag, path, field);
120+
return new DotExpanderProcessor(tag, null, path, field);
121121
}
122122
}
123123
}

modules/ingest-common/src/main/java/org/elasticsearch/ingest/common/FailProcessor.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ public final class FailProcessor extends AbstractProcessor {
3838

3939
private final TemplateScript.Factory message;
4040

41-
FailProcessor(String tag, TemplateScript.Factory message) {
42-
super(tag);
41+
FailProcessor(String tag, String description, TemplateScript.Factory message) {
42+
super(tag, description);
4343
this.message = message;
4444
}
4545

@@ -67,11 +67,11 @@ public Factory(ScriptService scriptService) {
6767

6868
@Override
6969
public FailProcessor create(Map<String, Processor.Factory> registry, String processorTag,
70-
Map<String, Object> config) throws Exception {
70+
String description, Map<String, Object> config) throws Exception {
7171
String message = ConfigurationUtils.readStringProperty(TYPE, processorTag, config, "message");
7272
TemplateScript.Factory compiledTemplate = ConfigurationUtils.compileTemplate(TYPE, processorTag,
7373
"message", message, scriptService);
74-
return new FailProcessor(processorTag, compiledTemplate);
74+
return new FailProcessor(processorTag, description, compiledTemplate);
7575
}
7676
}
7777
}

modules/ingest-common/src/main/java/org/elasticsearch/ingest/common/ForEachProcessor.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ public final class ForEachProcessor extends AbstractProcessor implements Wrappin
5454
private final Processor processor;
5555
private final boolean ignoreMissing;
5656

57-
ForEachProcessor(String tag, String field, Processor processor, boolean ignoreMissing) {
58-
super(tag);
57+
ForEachProcessor(String tag, String description, String field, Processor processor, boolean ignoreMissing) {
58+
super(tag, description);
5959
this.field = field;
6060
this.processor = processor;
6161
this.ignoreMissing = ignoreMissing;
@@ -134,7 +134,7 @@ public static final class Factory implements Processor.Factory {
134134

135135
@Override
136136
public ForEachProcessor create(Map<String, Processor.Factory> factories, String tag,
137-
Map<String, Object> config) throws Exception {
137+
String description, Map<String, Object> config) throws Exception {
138138
String field = readStringProperty(TYPE, tag, config, "field");
139139
boolean ignoreMissing = readBooleanProperty(TYPE, tag, config, "ignore_missing", false);
140140
Map<String, Map<String, Object>> processorConfig = readMap(TYPE, tag, config, "processor");
@@ -145,7 +145,7 @@ public ForEachProcessor create(Map<String, Processor.Factory> factories, String
145145
Map.Entry<String, Map<String, Object>> entry = entries.iterator().next();
146146
Processor processor =
147147
ConfigurationUtils.readProcessor(factories, scriptService, entry.getKey(), entry.getValue());
148-
return new ForEachProcessor(tag, field, processor, ignoreMissing);
148+
return new ForEachProcessor(tag, description, field, processor, ignoreMissing);
149149
}
150150
}
151151
}

0 commit comments

Comments
 (0)