Concord's FAQ has a section on getting data into the system [1]. An example I've used is processing xml files at scale. A short input function digests the xml stream from our servers and another short output function creates a new document in Elastic.