[ 
https://issues.apache.org/jira/browse/NIFI-12703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Pierre Villard resolved NIFI-12703.
-----------------------------------
    Resolution: Feedback Received

Apache NiFi 1.x is no longer maintained and no new release is planned on the 
1.x release line. Marking as resolved as part of a cleanup operation. Please 
open a new one with an updated description if this is still relevant for NiFi 
2.x.

> LookupRecord against Elasticsearch creates MapRecord string on 2nd lookup 
> --------------------------------------------------------------------------
>
>                 Key: NIFI-12703
>                 URL: https://issues.apache.org/jira/browse/NIFI-12703
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Extensions
>    Affects Versions: 1.24.0
>         Environment: Tried in both Docker and RedHat 8. Uses Elasticsearch 8.
>            Reporter: Stephen Jeffrey Hindmarch
>            Priority: Minor
>         Attachments: screenshot-1.png
>
>
> What Happens: When using 2 different record lookups in series against a 
> single Elasticsearch lookup service, the second lookup will add the returned 
> data as a MapRecord string instead of a JSON sub-record.
> What I Expect: The lookup results should be written into the record as a JSON 
> sub-record.
> How To Reproduce:
> In this scenario I am trying to enrich some records from data stored in an 
> Elasticsearch database. This uses an ElasticsearchLookupService, and JSON 
> readers and writers with default settings. No schemas are used.
> For example the data set might be
> {noformat}
> [
>  {"key":"two","value":2},
>  {"key":"four","value":4}
> ]{noformat}
> My use case is that my data has two possible key fields to use to enrich 
> against one data set. I want to try enriching against one field, and if that 
> fails try the second set.
> For example the input data might be
> {noformat}
> [
>  {"name":"bob","role":"user","hands":"two","Enrichment":{}},
>  {"name":"bill","role":"dog","legs":"four","Enrichment":{}}
> ]{noformat}
> I run a lookup with a LookupRecord processor using one of the fields. For 
> data which matches this data is updated correctly in the record as a JSON 
> sub-record.
> For example, if the first processor uses the "hands" field for the lookup, to 
> result is as follows
> {noformat}
> [
>  {"name":"bob","role":"user","hands":"two",
>  "Enrichment":{"limbs":{"key":"two","value":2}},
>  "legs":null}
> ]{noformat}
> The data that did not match is now passed through a second LookupRecord 
> processor, this time using the alternative key. This time the returned data 
> is incorrectly written into the flow as a MapRecord string. For example, if 
> the second processor uses the "legs" field for the lookup, the result is as 
> follows.
> {noformat}
> [
>  {"name":"bill","role":"dog","hands":null,
>  "Enrichment":{"limbs":"MapRecord[{key=four, value=4}]"},
>  "legs":"four"}
> ]{noformat}
> It does not matter which order the enrichment lookups are tried, it is always 
> the second processor which produces the MapRecord string.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to