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

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

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

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

  //stream
  source -> ElasticsearchPersistReader
  ElasticsearchPersistReader -> WebHdfsPersistWriter [label="String"];
  WebHdfsPersistWriter -> destination
}