// Apache Streams (incubating)
// Licensed under Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0
// --------------------------------------------------------------------------------
digraph g {

  //providers
  WebHdfsPersistReader [label="WebHdfsPersistReader",shape=ellipse,URL="https://github.com/apache/incubator-streams/blob/master/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReader.java"];

  //persisters
  ElasticsearchPersistWriter [label="ElasticsearchPersistWriter",shape=ellipse,URL="https://github.com/apache/incubator-streams/blob/master/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java"];

  //data
  source [label="hdfs://{indexes}/{types}",shape=box];
  destination [label="es://{index}/{type}",shape=box];

  //stream
  source -> WebHdfsPersistReader
  WebHdfsPersistReader -> ElasticsearchPersistWriter [label="String"];
  ElasticsearchPersistWriter -> destination
}