You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by mt...@apache.org on 2019/02/19 17:43:57 UTC

[nifi] branch master updated: NIFI-5500 Adding support for array fields when outputting to attributes when using QueryElasticsearchHttp NIFI-5500 Optimised array-to-string conversion

This is an automated email from the ASF dual-hosted git repository.

mthomsen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/master by this push:
     new d59a072  NIFI-5500 Adding support for array fields when outputting to attributes when using QueryElasticsearchHttp NIFI-5500 Optimised array-to-string conversion
d59a072 is described below

commit d59a07245ff08117b3b4245dbba84b0b093c68a8
Author: Wietze <wi...@users.noreply.github.com>
AuthorDate: Wed Aug 8 17:17:47 2018 +0100

    NIFI-5500 Adding support for array fields when outputting to attributes when using QueryElasticsearchHttp
    NIFI-5500 Optimised array-to-string conversion
    
    This closes #2942
    
    Signed-off-by: Mike Thomsen <mi...@gmail.com>
---
 .../processors/elasticsearch/QueryElasticsearchHttp.java    | 13 ++++++++++++-
 .../elasticsearch/TestQueryElasticsearchHttp.java           |  1 +
 .../src/test/resources/query-page1.json                     | 10 ++++++----
 .../src/test/resources/query-page2.json                     |  5 +++--
 4 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/main/java/org/apache/nifi/processors/elasticsearch/QueryElasticsearchHttp.java b/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/main/java/org/apache/nifi/processors/elasticsearch/QueryElasticsearchHttp.java
index 33eac3b..67deb87 100644
--- a/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/main/java/org/apache/nifi/processors/elasticsearch/QueryElasticsearchHttp.java
+++ b/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/main/java/org/apache/nifi/processors/elasticsearch/QueryElasticsearchHttp.java
@@ -432,7 +432,18 @@ public class QueryElasticsearchHttp extends AbstractElasticsearchHttpProcessor {
                     Map<String, String> attributes = new HashMap<>();
                     for(Iterator<Entry<String, JsonNode>> it = source.fields(); it.hasNext(); ) {
                         Entry<String, JsonNode> entry = it.next();
-                        attributes.put(ATTRIBUTE_PREFIX + entry.getKey(), entry.getValue().asText());
+
+                        String textValue = "";
+                        if(entry.getValue().isArray()){
+                            ArrayList<String> text_values = new ArrayList<String>();
+                            for(Iterator<JsonNode> items = entry.getValue().iterator(); items.hasNext(); ) {
+                                text_values.add(items.next().asText());
+                            }
+                            textValue = StringUtils.join(text_values, ',');
+                        } else {
+                            textValue = entry.getValue().asText();
+                        }
+                        attributes.put(ATTRIBUTE_PREFIX + entry.getKey(), textValue);
                     }
                     documentFlowFile = session.putAllAttributes(documentFlowFile, attributes);
                 }
diff --git a/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/test/java/org/apache/nifi/processors/elasticsearch/TestQueryElasticsearchHttp.java b/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/test/java/org/apache/nifi/processors/elasticsearch/TestQueryElasticsearchHttp.java
index 50b950f..b67aebf 100644
--- a/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/test/java/org/apache/nifi/processors/elasticsearch/TestQueryElasticsearchHttp.java
+++ b/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/test/java/org/apache/nifi/processors/elasticsearch/TestQueryElasticsearchHttp.java
@@ -141,6 +141,7 @@ public class TestQueryElasticsearchHttp {
                 QueryElasticsearchHttp.REL_SUCCESS).get(0);
         assertNotNull(out);
         assertEquals("blah", new String(out.toByteArray()));
+        assertEquals("arrays,are,supported,too", out.getAttribute("es.result.tags"));
         assertEquals("Twitter", out.getAttribute("es.result.source"));
     }
 
diff --git a/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/test/resources/query-page1.json b/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/test/resources/query-page1.json
index 5093076..649b480 100644
--- a/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/test/resources/query-page1.json
+++ b/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/test/resources/query-page1.json
@@ -25,7 +25,8 @@
                     "transit_uri": "file://cluster2/data/outgoing/S3/abc-97b.zip",
                     "object_type": "Provenance Record",
                     "version": "ASVsZu_vShwtGCJpGOObmuSqUJRUC3L_",
-                    "file_size": "3645525"
+                    "file_size": "3645525",
+                    "tags":  ["arrays", "are", "supported", "too"]
                 },
                 "sort": [
                     1469198828102
@@ -45,13 +46,14 @@
 			        "transit_uri": "file://cluster2/data/outgoing/S3/abc-a78.zip",
 			        "object_type": "Provenance Record",
 			        "version": "SjJkrwnv6edIRqJChEYzrE7PeT1hzioz",
-			        "file_size": "4480294"
+                    "file_size": "4480294",
+                    "tags":  ["arrays", "are", "supported", "too"]
 			    },
 			    "sort": [
 			        1469198828101
 			    ]
-			
+
 			}
          ]
      }
- }
\ No newline at end of file
+ }
diff --git a/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/test/resources/query-page2.json b/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/test/resources/query-page2.json
index 1ea27b3..0135703 100644
--- a/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/test/resources/query-page2.json
+++ b/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/test/resources/query-page2.json
@@ -25,7 +25,8 @@
 			        "transit_uri": "file://cluster2/data/outgoing/S3/abc-42a.zip",
 			        "object_type": "Provenance Record",
 			        "version": "ArPsIlGBKqDvfL6qQZOVpmDwUEB.nynh",
-			        "file_size": "18206872"
+					"file_size": "18206872",
+					"tags":  ["arrays", "are", "supported", "too"]
 			    },
 			    "sort": [
 			        1469198828101
@@ -33,4 +34,4 @@
 			}
          ]
      }
- }
\ No newline at end of file
+ }