Search in sources :

Example 51 with Processor

use of org.elasticsearch.ingest.Processor in project elasticsearch by elastic.

the class RenameProcessorTests method testRename.

public void testRename() throws Exception {
    IngestDocument ingestDocument = RandomDocumentPicks.randomIngestDocument(random());
    String fieldName = RandomDocumentPicks.randomExistingFieldName(random(), ingestDocument);
    Object fieldValue = ingestDocument.getFieldValue(fieldName, Object.class);
    String newFieldName;
    do {
        newFieldName = RandomDocumentPicks.randomFieldName(random());
    } while (RandomDocumentPicks.canAddField(newFieldName, ingestDocument) == false || newFieldName.equals(fieldName));
    Processor processor = new RenameProcessor(randomAsciiOfLength(10), fieldName, newFieldName, false);
    processor.execute(ingestDocument);
    assertThat(ingestDocument.getFieldValue(newFieldName, Object.class), equalTo(fieldValue));
}
Also used : Processor(org.elasticsearch.ingest.Processor) IngestDocumentMatcher.assertIngestDocument(org.elasticsearch.ingest.IngestDocumentMatcher.assertIngestDocument) IngestDocument(org.elasticsearch.ingest.IngestDocument)

Example 52 with Processor

use of org.elasticsearch.ingest.Processor in project elasticsearch by elastic.

the class RenameProcessorTests method testRenameArrayElement.

public void testRenameArrayElement() throws Exception {
    Map<String, Object> document = new HashMap<>();
    List<String> list = new ArrayList<>();
    list.add("item1");
    list.add("item2");
    list.add("item3");
    document.put("list", list);
    List<Map<String, String>> one = new ArrayList<>();
    one.add(Collections.singletonMap("one", "one"));
    one.add(Collections.singletonMap("two", "two"));
    document.put("one", one);
    IngestDocument ingestDocument = RandomDocumentPicks.randomIngestDocument(random(), document);
    Processor processor = new RenameProcessor(randomAsciiOfLength(10), "list.0", "item", false);
    processor.execute(ingestDocument);
    Object actualObject = ingestDocument.getSourceAndMetadata().get("list");
    assertThat(actualObject, instanceOf(List.class));
    @SuppressWarnings("unchecked") List<String> actualList = (List<String>) actualObject;
    assertThat(actualList.size(), equalTo(2));
    assertThat(actualList.get(0), equalTo("item2"));
    assertThat(actualList.get(1), equalTo("item3"));
    actualObject = ingestDocument.getSourceAndMetadata().get("item");
    assertThat(actualObject, instanceOf(String.class));
    assertThat(actualObject, equalTo("item1"));
    processor = new RenameProcessor(randomAsciiOfLength(10), "list.0", "list.3", false);
    try {
        processor.execute(ingestDocument);
        fail("processor execute should have failed");
    } catch (IllegalArgumentException e) {
        assertThat(e.getMessage(), equalTo("[3] is out of bounds for array with length [2] as part of path [list.3]"));
        assertThat(actualList.size(), equalTo(2));
        assertThat(actualList.get(0), equalTo("item2"));
        assertThat(actualList.get(1), equalTo("item3"));
    }
}
Also used : Processor(org.elasticsearch.ingest.Processor) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) IngestDocumentMatcher.assertIngestDocument(org.elasticsearch.ingest.IngestDocumentMatcher.assertIngestDocument) IngestDocument(org.elasticsearch.ingest.IngestDocument) ArrayList(java.util.ArrayList) List(java.util.List) HashMap(java.util.HashMap) Map(java.util.Map)

Example 53 with Processor

use of org.elasticsearch.ingest.Processor in project elasticsearch by elastic.

the class ForEachProcessorTests method testRestOfTheDocumentIsAvailable.

public void testRestOfTheDocumentIsAvailable() throws Exception {
    List<Map<String, Object>> values = new ArrayList<>();
    for (int i = 0; i < 5; i++) {
        Map<String, Object> object = new HashMap<>();
        object.put("field", "value");
        values.add(object);
    }
    Map<String, Object> document = new HashMap<>();
    document.put("values", values);
    document.put("flat_values", new ArrayList<>());
    document.put("other", "value");
    IngestDocument ingestDocument = new IngestDocument("_index", "_type", "_id", null, null, document);
    TemplateService ts = TestTemplateService.instance();
    ForEachProcessor processor = new ForEachProcessor("_tag", "values", new SetProcessor("_tag", ts.compile("_ingest._value.new_field"), (model) -> model.get("other")));
    processor.execute(ingestDocument);
    assertThat(ingestDocument.getFieldValue("values.0.new_field", String.class), equalTo("value"));
    assertThat(ingestDocument.getFieldValue("values.1.new_field", String.class), equalTo("value"));
    assertThat(ingestDocument.getFieldValue("values.2.new_field", String.class), equalTo("value"));
    assertThat(ingestDocument.getFieldValue("values.3.new_field", String.class), equalTo("value"));
    assertThat(ingestDocument.getFieldValue("values.4.new_field", String.class), equalTo("value"));
}
Also used : Arrays(java.util.Arrays) Processor(org.elasticsearch.ingest.Processor) TestProcessor(org.elasticsearch.ingest.TestProcessor) HashMap(java.util.HashMap) CompoundProcessor(org.elasticsearch.ingest.CompoundProcessor) ArrayList(java.util.ArrayList) List(java.util.List) TemplateService(org.elasticsearch.ingest.TemplateService) Locale(java.util.Locale) Map(java.util.Map) Matchers.equalTo(org.hamcrest.Matchers.equalTo) TestTemplateService(org.elasticsearch.ingest.TestTemplateService) ESTestCase(org.elasticsearch.test.ESTestCase) Collections(java.util.Collections) IngestDocument(org.elasticsearch.ingest.IngestDocument) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) IngestDocument(org.elasticsearch.ingest.IngestDocument) HashMap(java.util.HashMap) Map(java.util.Map) TemplateService(org.elasticsearch.ingest.TemplateService) TestTemplateService(org.elasticsearch.ingest.TestTemplateService)

Example 54 with Processor

use of org.elasticsearch.ingest.Processor in project elasticsearch by elastic.

the class ForEachProcessorTests method testModifyFieldsOutsideArray.

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, 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", false)), Collections.singletonList(new AppendProcessor("_tag", ts.compile("errors"), (model) -> (Collections.singletonList("added"))))));
    processor.execute(ingestDocument);
    List 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 errors = ingestDocument.getFieldValue("errors", List.class);
    assertThat(errors.size(), equalTo(2));
}
Also used : Arrays(java.util.Arrays) Processor(org.elasticsearch.ingest.Processor) TestProcessor(org.elasticsearch.ingest.TestProcessor) HashMap(java.util.HashMap) CompoundProcessor(org.elasticsearch.ingest.CompoundProcessor) ArrayList(java.util.ArrayList) List(java.util.List) TemplateService(org.elasticsearch.ingest.TemplateService) Locale(java.util.Locale) Map(java.util.Map) Matchers.equalTo(org.hamcrest.Matchers.equalTo) TestTemplateService(org.elasticsearch.ingest.TestTemplateService) ESTestCase(org.elasticsearch.test.ESTestCase) Collections(java.util.Collections) IngestDocument(org.elasticsearch.ingest.IngestDocument) ArrayList(java.util.ArrayList) CompoundProcessor(org.elasticsearch.ingest.CompoundProcessor) IngestDocument(org.elasticsearch.ingest.IngestDocument) ArrayList(java.util.ArrayList) List(java.util.List) TemplateService(org.elasticsearch.ingest.TemplateService) TestTemplateService(org.elasticsearch.ingest.TestTemplateService)

Example 55 with Processor

use of org.elasticsearch.ingest.Processor in project elasticsearch by elastic.

the class JoinProcessorTests method testJoinNonListField.

public void testJoinNonListField() throws Exception {
    IngestDocument ingestDocument = RandomDocumentPicks.randomIngestDocument(random(), new HashMap<>());
    String fieldName = RandomDocumentPicks.randomFieldName(random());
    ingestDocument.setFieldValue(fieldName, randomAsciiOfLengthBetween(1, 10));
    Processor processor = new JoinProcessor(randomAsciiOfLength(10), fieldName, "-");
    try {
        processor.execute(ingestDocument);
    } catch (IllegalArgumentException e) {
        assertThat(e.getMessage(), equalTo("field [" + fieldName + "] of type [java.lang.String] cannot be cast to [java.util.List]"));
    }
}
Also used : Processor(org.elasticsearch.ingest.Processor) IngestDocument(org.elasticsearch.ingest.IngestDocument) Matchers.containsString(org.hamcrest.Matchers.containsString)

Aggregations

Processor (org.elasticsearch.ingest.Processor)101 IngestDocument (org.elasticsearch.ingest.IngestDocument)97 IngestDocumentMatcher.assertIngestDocument (org.elasticsearch.ingest.IngestDocumentMatcher.assertIngestDocument)57 Matchers.containsString (org.hamcrest.Matchers.containsString)48 ArrayList (java.util.ArrayList)25 List (java.util.List)24 HashMap (java.util.HashMap)13 SortOrder (org.elasticsearch.ingest.common.SortProcessor.SortOrder)11 TestProcessor (org.elasticsearch.ingest.TestProcessor)7 TestTemplateService (org.elasticsearch.ingest.TestTemplateService)6 Map (java.util.Map)5 CompoundProcessor (org.elasticsearch.ingest.CompoundProcessor)5 ElasticsearchParseException (org.elasticsearch.ElasticsearchParseException)4 Type (org.elasticsearch.ingest.common.ConvertProcessor.Type)4 Arrays (java.util.Arrays)3 Collections (java.util.Collections)3 Locale (java.util.Locale)3 TemplateService (org.elasticsearch.ingest.TemplateService)3 ESTestCase (org.elasticsearch.test.ESTestCase)3 Matchers.equalTo (org.hamcrest.Matchers.equalTo)3