Here is a version that caches the file as a lookup object for much faster lookup (than loading file/jsonata looking though 7000 entries)
Demo Flow...
[{"id":"c2505e69813e5c17","type":"function","z":"bec69dbd.8d622","name":"Load CSV file","func":"//generate fake data\n\nvar csvData = [];\nfor (let index = 0; index < 7000; index++) {\n const r = Math.random()\n const element = `${index+1},${makeStr(5)}`;\n csvData.push(element)\n}\nmsg.payload = csvData.join(\"\\n\");\n\nfunction makeStr(length) {\n var result = '';\n var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\n var charactersLength = characters.length;\n for (var i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() *\n charactersLength));\n }\n return result;\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":600,"y":740,"wires":[["3aafe21212078440"]]},{"id":"4a3b47715ce31f13","type":"inject","z":"bec69dbd.8d622","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"true","payloadType":"bool","x":430,"y":740,"wires":[["c2505e69813e5c17"]]},{"id":"3aafe21212078440","type":"csv","z":"bec69dbd.8d622","name":"","sep":",","hdrin":"","hdrout":"none","multi":"mult","ret":"\\n","temp":"","skip":"0","strings":true,"include_empty_strings":"","include_null_values":"","x":770,"y":740,"wires":[["6ac8be012310f99f"]]},{"id":"6ac8be012310f99f","type":"function","z":"bec69dbd.8d622","name":"Make lookup","func":"var data = msg.payload;\nvar map = {};\nfor (let index = 0; index < data.length; index++) {\n const element = data[index];\n map[element.col1] = element.col2;\n}\nmsg.payload = map;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":930,"y":740,"wires":[["dd59fdbb1e0285a9"]]},{"id":"dd59fdbb1e0285a9","type":"change","z":"bec69dbd.8d622","name":"","rules":[{"t":"set","p":"partLookup","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1120,"y":740,"wires":[[]]},{"id":"c9400dc5833fa881","type":"inject","z":"bec69dbd.8d622","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"1236","payloadType":"str","x":430,"y":800,"wires":[["b09691ebb53375a7"]]},{"id":"b09691ebb53375a7","type":"change","z":"bec69dbd.8d622","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"partLookup[msg.payload]","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":600,"y":800,"wires":[["ea5813699d5a3e78"]]},{"id":"ea5813699d5a3e78","type":"debug","z":"bec69dbd.8d622","name":"","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"msg","x":770,"y":800,"wires":[]},{"id":"4350b89a419f884f","type":"inject","z":"bec69dbd.8d622","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"6555","payloadType":"str","x":430,"y":840,"wires":[["b09691ebb53375a7"]]},{"id":"cd7818824114141b","type":"comment","z":"bec69dbd.8d622","name":"change to file in node","info":"","x":600,"y":713,"wires":[]}]
This demo flow generates 7000 fake part numbers and part IDs as a CSV & then converts them to a lookup object (so just replace the Load CSV function with a file in node)
the lookup object is stored in flow context (in memory) for fast access.