Description:

Extracts one or more fields from a Record and looks up a value for those fields in a LookupService. If a result is returned by the LookupService, that result is optionally added to the Record. In this case, the processor functions as an Enrichment processor. Regardless, the Record is then routed to either the ‘matched’ relationship or ‘unmatched’ relationship (if the ‘Routing Strategy’ property is configured to do so), indicating whether or not a result was returned by the LookupService, allowing the processor to also function as a Routing processor. The “coordinates” to use for looking up a value in the Lookup Service are defined by adding a user-defined property. Each property that is added will have an entry added to a Map, where the name of the property becomes the Map Key and the value returned by the RecordPath becomes the value for that key. If multiple values are returned by the RecordPath, then the Record will be routed to the ‘unmatched’ relationship (or ‘success’, depending on the ‘Routing Strategy’ property’s configuration). If one or more fields match the Result RecordPath, all fields that match will be updated. If there is no match in the configured LookupService, then no fields will be updated. I.e., it will not overwrite an existing value in the Record with a null value. Please note, however, that if the results returned by the LookupService are not accounted for in your schema (specifically, the schema that is configured for your Record Writer) then the fields will not be written out to the FlowFile.

Tags:

lookup, enrichment, route, record, csv, json, avro, logs, convert, filter

Properties:

In the list below, the names of required properties appear in bold. Any other properties (not in bold) are considered optional. The table also indicates any default values, and whether a property supports the NiFi Expression Language.

Name Default Value Allowable Values Description
Record Reader Controller Service API:
RecordReaderFactory
Implementations:
CSVReader
JsonTreeReader
GrokReader
AvroReader
JsonPathReader
ScriptedReader
Specifies the Controller Service to use for reading incoming data
Record Writer Controller Service API:
RecordSetWriterFactory
Implementations:
FreeFormTextRecordSetWriter
JsonRecordSetWriter
AvroRecordSetWriter
CSVRecordSetWriter
ScriptedRecordSetWriter
Specifies the Controller Service to use for writing out the records
Lookup Service Controller Service API:
LookupService
Implementations:
SimpleKeyValueLookupService
ScriptedLookupService
IPLookupService
XMLFileLookupService
SimpleCsvFileLookupService
PropertiesFileLookupService
The Lookup Service to use in order to lookup a value in each Record
Result RecordPath A RecordPath that points to the field whose value should be updated with whatever value is returned from the Lookup Service. If not specified, the value that is returned from the Lookup Service will be ignored, except for determining whether the FlowFile should be routed to the 'matched' or 'unmatched' Relationship.</br> Supports Expression Language: true
Routing Strategy route-to-success * Route to 'success'
* Route to 'matched' or 'unmatched
Specifies how to route records after a Lookup has completed.

Relationships:

Name Description
success All records will be sent to this Relationship if configured to do so, unless a failure occurs
failure If a FlowFile cannot be transformed from the configured input format to the configured output format, the unchanged FlowFile will be routed to this relationship

Reads Attributes:

None specified.

Writes Attributes:

Name Description
mime.type Sets the mime.type attribute to the MIME Type specified by the Record Writer
record.count The number of records in the FlowFile

State management:

This component does not store state.

Restricted:

This component is not restricted.

Input requirement:

This component requires an incoming relationship.

See Also:

ConvertRecord, SplitRecord, SimpleKeyValueLookupService, IPLookupService