Elasticsearch for indexing multiple databases
For hadoop data you can go for ES-Hadoop-Connector. Create an index with mappings before dumping data into Elastic Search and then use the same index for holding your data.
Configuration conf = new Configuration(); conf.set("es.nodes", "localhost:9200"); conf.set("es.resource.write", "Index_Name/Document_Type");
Similarly for all the remaining sources use the same index as sink. for each source change the corresponding Document_Type with same index name. so that it will become master index of you entire data.