|
@@ -49,7 +49,7 @@ public class ForEachProcessorTests extends ESTestCase {
|
|
|
);
|
|
|
|
|
|
ForEachProcessor processor = new ForEachProcessor(
|
|
|
- "_tag", "values", new UppercaseProcessor("_tag", "_value")
|
|
|
+ "_tag", "values", new UppercaseProcessor("_tag", "_ingest._value")
|
|
|
);
|
|
|
processor.execute(ingestDocument);
|
|
|
|
|
@@ -65,7 +65,7 @@ public class ForEachProcessorTests extends ESTestCase {
|
|
|
);
|
|
|
|
|
|
TestProcessor testProcessor = new TestProcessor(id -> {
|
|
|
- if ("c".equals(id.getFieldValue("_value", String.class))) {
|
|
|
+ if ("c".equals(id.getFieldValue("_ingest._value", String.class))) {
|
|
|
throw new RuntimeException("failure");
|
|
|
}
|
|
|
});
|
|
@@ -80,11 +80,11 @@ public class ForEachProcessorTests extends ESTestCase {
|
|
|
assertThat(ingestDocument.getFieldValue("values", List.class), equalTo(Arrays.asList("a", "b", "c")));
|
|
|
|
|
|
testProcessor = new TestProcessor(id -> {
|
|
|
- String value = id.getFieldValue("_value", String.class);
|
|
|
+ String value = id.getFieldValue("_ingest._value", String.class);
|
|
|
if ("c".equals(value)) {
|
|
|
throw new RuntimeException("failure");
|
|
|
} else {
|
|
|
- id.setFieldValue("_value", value.toUpperCase(Locale.ROOT));
|
|
|
+ id.setFieldValue("_ingest._value", value.toUpperCase(Locale.ROOT));
|
|
|
}
|
|
|
});
|
|
|
Processor onFailureProcessor = new TestProcessor(ingestDocument1 -> {});
|
|
@@ -105,9 +105,9 @@ public class ForEachProcessorTests extends ESTestCase {
|
|
|
);
|
|
|
|
|
|
TestProcessor innerProcessor = new TestProcessor(id -> {
|
|
|
- id.setFieldValue("_value.index", id.getSourceAndMetadata().get("_index"));
|
|
|
- id.setFieldValue("_value.type", id.getSourceAndMetadata().get("_type"));
|
|
|
- id.setFieldValue("_value.id", id.getSourceAndMetadata().get("_id"));
|
|
|
+ id.setFieldValue("_ingest._value.index", id.getSourceAndMetadata().get("_index"));
|
|
|
+ id.setFieldValue("_ingest._value.type", id.getSourceAndMetadata().get("_type"));
|
|
|
+ id.setFieldValue("_ingest._value.id", id.getSourceAndMetadata().get("_id"));
|
|
|
});
|
|
|
ForEachProcessor processor = new ForEachProcessor("_tag", "values", innerProcessor);
|
|
|
processor.execute(ingestDocument);
|
|
@@ -136,7 +136,7 @@ public class ForEachProcessorTests extends ESTestCase {
|
|
|
|
|
|
TemplateService ts = TestTemplateService.instance();
|
|
|
ForEachProcessor processor = new ForEachProcessor(
|
|
|
- "_tag", "values", new SetProcessor("_tag", ts.compile("_value.new_field"), (model) -> model.get("other"))
|
|
|
+ "_tag", "values", new SetProcessor("_tag", ts.compile("_ingest._value.new_field"), (model) -> model.get("other"))
|
|
|
);
|
|
|
processor.execute(ingestDocument);
|
|
|
|
|
@@ -151,8 +151,8 @@ public class ForEachProcessorTests extends ESTestCase {
|
|
|
Processor innerProcessor = new Processor() {
|
|
|
@Override
|
|
|
public void execute(IngestDocument ingestDocument) throws Exception {
|
|
|
- String existingValue = ingestDocument.getFieldValue("_value", String.class);
|
|
|
- ingestDocument.setFieldValue("_value", existingValue + ".");
|
|
|
+ String existingValue = ingestDocument.getFieldValue("_ingest._value", String.class);
|
|
|
+ ingestDocument.setFieldValue("_ingest._value", existingValue + ".");
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -184,4 +184,91 @@ public class ForEachProcessorTests extends ESTestCase {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public void testModifyFieldsOutsideArray() throws Exception {
|
|
|
+ List<Object> values = new ArrayList<>();
|
|
|
+ values.add("string");
|
|
|
+ values.add(1);
|
|
|
+ values.add(null);
|
|
|
+ IngestDocument ingestDocument = new IngestDocument(
|
|
|
+ "_index", "_type", "_id", null, null, null, null, Collections.singletonMap("values", values)
|
|
|
+ );
|
|
|
+
|
|
|
+ TemplateService ts = TestTemplateService.instance();
|
|
|
+
|
|
|
+ ForEachProcessor processor = new ForEachProcessor(
|
|
|
+ "_tag", "values", new CompoundProcessor(false,
|
|
|
+ Collections.singletonList(new UppercaseProcessor("_tag_upper", "_ingest._value")),
|
|
|
+ Collections.singletonList(new AppendProcessor("_tag",
|
|
|
+ ts.compile("errors"), (model) -> (Collections.singletonList("added"))))
|
|
|
+ ));
|
|
|
+ processor.execute(ingestDocument);
|
|
|
+
|
|
|
+ List<String> result = ingestDocument.getFieldValue("values", List.class);
|
|
|
+ assertThat(result.get(0), equalTo("STRING"));
|
|
|
+ assertThat(result.get(1), equalTo(1));
|
|
|
+ assertThat(result.get(2), equalTo(null));
|
|
|
+
|
|
|
+ List<String> errors = ingestDocument.getFieldValue("errors", List.class);
|
|
|
+ assertThat(errors.size(), equalTo(2));
|
|
|
+ }
|
|
|
+
|
|
|
+ public void testScalarValueAllowsUnderscoreValueFieldToRemainAccessible() throws Exception {
|
|
|
+ List<Object> values = new ArrayList<>();
|
|
|
+ values.add("please");
|
|
|
+ values.add("change");
|
|
|
+ values.add("me");
|
|
|
+ Map<String, Object> source = new HashMap<>();
|
|
|
+ source.put("_value", "new_value");
|
|
|
+ source.put("values", values);
|
|
|
+ IngestDocument ingestDocument = new IngestDocument(
|
|
|
+ "_index", "_type", "_id", null, null, null, null, source
|
|
|
+ );
|
|
|
+
|
|
|
+ TestProcessor processor = new TestProcessor(doc -> doc.setFieldValue("_ingest._value",
|
|
|
+ doc.getFieldValue("_source._value", String.class)));
|
|
|
+ ForEachProcessor forEachProcessor = new ForEachProcessor("_tag", "values", processor);
|
|
|
+ forEachProcessor.execute(ingestDocument);
|
|
|
+
|
|
|
+ List<String> result = ingestDocument.getFieldValue("values", List.class);
|
|
|
+ assertThat(result.get(0), equalTo("new_value"));
|
|
|
+ assertThat(result.get(1), equalTo("new_value"));
|
|
|
+ assertThat(result.get(2), equalTo("new_value"));
|
|
|
+ }
|
|
|
+
|
|
|
+ public void testNestedForEach() throws Exception {
|
|
|
+ List<Map<String, Object>> values = new ArrayList<>();
|
|
|
+ List<Object> innerValues = new ArrayList<>();
|
|
|
+ innerValues.add("abc");
|
|
|
+ innerValues.add("def");
|
|
|
+ Map<String, Object> value = new HashMap<>();
|
|
|
+ value.put("values2", innerValues);
|
|
|
+ values.add(value);
|
|
|
+
|
|
|
+ innerValues = new ArrayList<>();
|
|
|
+ innerValues.add("ghi");
|
|
|
+ innerValues.add("jkl");
|
|
|
+ value = new HashMap<>();
|
|
|
+ value.put("values2", innerValues);
|
|
|
+ values.add(value);
|
|
|
+
|
|
|
+ IngestDocument ingestDocument = new IngestDocument(
|
|
|
+ "_index", "_type", "_id", null, null, null, null, Collections.singletonMap("values1", values)
|
|
|
+ );
|
|
|
+
|
|
|
+ TestProcessor testProcessor = new TestProcessor(
|
|
|
+ doc -> doc.setFieldValue("_ingest._value", doc.getFieldValue("_ingest._value", String.class).toUpperCase(Locale.ENGLISH))
|
|
|
+ );
|
|
|
+ ForEachProcessor processor = new ForEachProcessor(
|
|
|
+ "_tag", "values1", new ForEachProcessor("_tag", "_ingest._value.values2", testProcessor));
|
|
|
+ processor.execute(ingestDocument);
|
|
|
+
|
|
|
+ List<String> result = ingestDocument.getFieldValue("values1.0.values2", List.class);
|
|
|
+ assertThat(result.get(0), equalTo("ABC"));
|
|
|
+ assertThat(result.get(1), equalTo("DEF"));
|
|
|
+
|
|
|
+ result = ingestDocument.getFieldValue("values1.1.values2", List.class);
|
|
|
+ assertThat(result.get(0), equalTo("GHI"));
|
|
|
+ assertThat(result.get(1), equalTo("JKL"));
|
|
|
+ }
|
|
|
+
|
|
|
}
|