You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by jo...@apache.org on 2020/01/27 00:50:34 UTC

[druid-website] 01/01: 0.17.0 release docs

This is an automated email from the ASF dual-hosted git repository.

jonwei pushed a commit to branch 0.17.0-release
in repository https://gitbox.apache.org/repos/asf/druid-website.git

commit 0a14725232c289077a00fe00ecf92bc99770cc89
Author: jon-wei <jo...@imply.io>
AuthorDate: Sun Jan 26 16:50:15 2020 -0800

    0.17.0 release docs
---
 css/base.css                                       |  207 ---
 css/blogs.css                                      |   68 -
 css/bootstrap-pure.css                             | 1855 --------------------
 css/docs.css                                       |  126 --
 css/footer.css                                     |   29 -
 css/header.css                                     |  110 --
 css/index.css                                      |   50 -
 css/news-list.css                                  |   63 -
 css/reset.css                                      |   44 -
 css/syntax.css                                     |  281 ---
 css/variables.css                                  |    0
 docs/0.17.0/About-Experimental-Features.html       |    8 +
 docs/0.17.0/Aggregations.html                      |    8 +
 docs/0.17.0/ApproxHisto.html                       |    8 +
 docs/0.17.0/Batch-ingestion.html                   |    8 +
 docs/0.17.0/Booting-a-production-cluster.html      |    8 +
 docs/0.17.0/Broker-Config.html                     |    8 +
 docs/0.17.0/Broker.html                            |    8 +
 docs/0.17.0/Build-from-source.html                 |    8 +
 docs/0.17.0/Cassandra-Deep-Storage.html            |    8 +
 docs/0.17.0/Cluster-setup.html                     |    8 +
 docs/0.17.0/Compute.html                           |    8 +
 docs/0.17.0/Concepts-and-Terminology.html          |    8 +
 docs/0.17.0/Configuration.html                     |    8 +
 docs/0.17.0/Contribute.html                        |    8 +
 docs/0.17.0/Coordinator-Config.html                |    8 +
 docs/0.17.0/Coordinator.html                       |    8 +
 docs/0.17.0/DataSource.html                        |    8 +
 docs/0.17.0/DataSourceMetadataQuery.html           |    8 +
 docs/0.17.0/Data_formats.html                      |    8 +
 docs/0.17.0/Deep-Storage.html                      |    8 +
 docs/0.17.0/Design.html                            |    8 +
 docs/0.17.0/DimensionSpecs.html                    |    8 +
 docs/0.17.0/Download.html                          |    8 +
 docs/0.17.0/Druid-Personal-Demo-Cluster.html       |    8 +
 docs/0.17.0/Druid-vs-Cassandra.html                |    8 +
 docs/0.17.0/Druid-vs-Elasticsearch.html            |    8 +
 docs/0.17.0/Druid-vs-Hadoop.html                   |    8 +
 docs/0.17.0/Druid-vs-Impala-or-Shark.html          |    8 +
 docs/0.17.0/Druid-vs-Redshift.html                 |    8 +
 docs/0.17.0/Druid-vs-Spark.html                    |    8 +
 docs/0.17.0/Druid-vs-Vertica.html                  |    8 +
 docs/0.17.0/Evaluate.html                          |    8 +
 docs/0.17.0/Examples.html                          |    8 +
 docs/0.17.0/Filters.html                           |    8 +
 docs/0.17.0/GeographicQueries.html                 |    8 +
 docs/0.17.0/Granularities.html                     |    8 +
 docs/0.17.0/GroupByQuery.html                      |    8 +
 docs/0.17.0/Hadoop-Configuration.html              |    8 +
 docs/0.17.0/Having.html                            |    8 +
 docs/0.17.0/Historical-Config.html                 |    8 +
 docs/0.17.0/Historical.html                        |    8 +
 docs/0.17.0/Home.html                              |    8 +
 docs/0.17.0/Including-Extensions.html              |    8 +
 docs/0.17.0/Indexing-Service-Config.html           |    8 +
 docs/0.17.0/Indexing-Service.html                  |    8 +
 docs/0.17.0/Ingestion-FAQ.html                     |    8 +
 docs/0.17.0/Ingestion-overview.html                |    8 +
 docs/0.17.0/Ingestion.html                         |    8 +
 docs/0.17.0/Kafka-Eight.html                       |    8 +
 docs/0.17.0/Libraries.html                         |    8 +
 docs/0.17.0/LimitSpec.html                         |    8 +
 docs/0.17.0/Loading-Your-Data.html                 |    8 +
 docs/0.17.0/Logging.html                           |    8 +
 docs/0.17.0/Master.html                            |    8 +
 docs/0.17.0/Metadata-storage.html                  |    8 +
 docs/0.17.0/Metrics.html                           |    8 +
 docs/0.17.0/Middlemanager.html                     |    8 +
 docs/0.17.0/Modules.html                           |    8 +
 docs/0.17.0/MySQL.html                             |    8 +
 docs/0.17.0/OrderBy.html                           |    8 +
 docs/0.17.0/Other-Hadoop.html                      |    8 +
 docs/0.17.0/Papers-and-talks.html                  |    8 +
 docs/0.17.0/Peons.html                             |    8 +
 docs/0.17.0/Performance-FAQ.html                   |    8 +
 docs/0.17.0/Plumber.html                           |    8 +
 docs/0.17.0/Post-aggregations.html                 |    8 +
 docs/0.17.0/Production-Cluster-Configuration.html  |    8 +
 docs/0.17.0/Query-Context.html                     |    8 +
 docs/0.17.0/Querying-your-data.html                |    8 +
 docs/0.17.0/Querying.html                          |    8 +
 docs/0.17.0/Realtime-Config.html                   |    8 +
 docs/0.17.0/Realtime-ingestion.html                |    8 +
 docs/0.17.0/Realtime.html                          |    8 +
 docs/0.17.0/Rolling-Updates.html                   |    8 +
 docs/0.17.0/Router.html                            |    8 +
 docs/0.17.0/Rule-Configuration.html                |    8 +
 docs/0.17.0/SearchQuery.html                       |    8 +
 docs/0.17.0/SearchQuerySpec.html                   |    8 +
 docs/0.17.0/SegmentMetadataQuery.html              |    8 +
 docs/0.17.0/Segments.html                          |    8 +
 docs/0.17.0/SelectQuery.html                       |    8 +
 docs/0.17.0/Simple-Cluster-Configuration.html      |    8 +
 docs/0.17.0/Spatial-Filters.html                   |    8 +
 docs/0.17.0/Spatial-Indexing.html                  |    8 +
 docs/0.17.0/Stand-Alone-With-Riak-CS.html          |    8 +
 docs/0.17.0/Support.html                           |    8 +
 docs/0.17.0/Tasks.html                             |    8 +
 docs/0.17.0/Thanks.html                            |    8 +
 docs/0.17.0/TimeBoundaryQuery.html                 |    8 +
 docs/0.17.0/TimeseriesQuery.html                   |    8 +
 docs/0.17.0/TopNMetricSpec.html                    |    8 +
 docs/0.17.0/TopNQuery.html                         |    8 +
 docs/0.17.0/Tutorial-A-First-Look-at-Druid.html    |    8 +
 docs/0.17.0/Tutorial-All-About-Queries.html        |    8 +
 docs/0.17.0/Tutorial-Loading-Batch-Data.html       |    8 +
 docs/0.17.0/Tutorial-Loading-Streaming-Data.html   |    8 +
 docs/0.17.0/Tutorial-The-Druid-Cluster.html        |    8 +
 docs/0.17.0/Tutorial:-A-First-Look-at-Druid.html   |    8 +
 docs/0.17.0/Tutorial:-All-About-Queries.html       |    8 +
 docs/0.17.0/Tutorial:-Loading-Batch-Data.html      |    8 +
 docs/0.17.0/Tutorial:-Loading-Streaming-Data.html  |    8 +
 .../0.17.0/Tutorial:-Loading-Your-Data-Part-1.html |    8 +
 .../0.17.0/Tutorial:-Loading-Your-Data-Part-2.html |    8 +
 docs/0.17.0/Tutorial:-The-Druid-Cluster.html       |    8 +
 docs/0.17.0/Tutorial:-Webstream.html               |    8 +
 docs/0.17.0/Tutorials.html                         |    8 +
 docs/0.17.0/Twitter-Tutorial.html                  |    8 +
 docs/0.17.0/Versioning.html                        |    8 +
 docs/0.17.0/ZooKeeper.html                         |    8 +
 docs/0.17.0/alerts.html                            |    8 +
 docs/0.17.0/assets/druid-architecture.png          |  Bin 0 -> 134117 bytes
 docs/0.17.0/assets/druid-column-types.png          |  Bin 0 -> 93363 bytes
 docs/0.17.0/assets/druid-dataflow-2x.png           |  Bin 0 -> 130160 bytes
 docs/0.17.0/assets/druid-dataflow-3.png            |  Bin 0 -> 71425 bytes
 docs/0.17.0/assets/druid-manage-1.png              |  Bin 0 -> 80415 bytes
 docs/0.17.0/assets/druid-timeline.png              |  Bin 0 -> 24160 bytes
 docs/0.17.0/assets/indexing_service.png            |  Bin 0 -> 22490 bytes
 docs/0.17.0/assets/segmentPropagation.png          |  Bin 0 -> 30569 bytes
 .../assets/tutorial-batch-data-loader-01.png       |  Bin 0 -> 136012 bytes
 .../assets/tutorial-batch-data-loader-02.png       |  Bin 0 -> 479718 bytes
 .../assets/tutorial-batch-data-loader-03.png       |  Bin 0 -> 213525 bytes
 .../assets/tutorial-batch-data-loader-04.png       |  Bin 0 -> 256156 bytes
 .../assets/tutorial-batch-data-loader-05.png       |  Bin 0 -> 256966 bytes
 .../assets/tutorial-batch-data-loader-06.png       |  Bin 0 -> 102523 bytes
 .../assets/tutorial-batch-data-loader-07.png       |  Bin 0 -> 98213 bytes
 .../assets/tutorial-batch-data-loader-08.png       |  Bin 0 -> 173466 bytes
 .../assets/tutorial-batch-data-loader-09.png       |  Bin 0 -> 116795 bytes
 .../assets/tutorial-batch-data-loader-10.png       |  Bin 0 -> 120604 bytes
 .../assets/tutorial-batch-data-loader-11.png       |  Bin 0 -> 151440 bytes
 .../assets/tutorial-batch-submit-task-01.png       |  Bin 0 -> 124402 bytes
 .../assets/tutorial-batch-submit-task-02.png       |  Bin 0 -> 142390 bytes
 docs/0.17.0/assets/tutorial-compaction-01.png      |  Bin 0 -> 35710 bytes
 docs/0.17.0/assets/tutorial-compaction-02.png      |  Bin 0 -> 166571 bytes
 docs/0.17.0/assets/tutorial-compaction-03.png      |  Bin 0 -> 26755 bytes
 docs/0.17.0/assets/tutorial-compaction-04.png      |  Bin 0 -> 184365 bytes
 docs/0.17.0/assets/tutorial-compaction-05.png      |  Bin 0 -> 26588 bytes
 docs/0.17.0/assets/tutorial-compaction-06.png      |  Bin 0 -> 206717 bytes
 docs/0.17.0/assets/tutorial-compaction-07.png      |  Bin 0 -> 26683 bytes
 docs/0.17.0/assets/tutorial-compaction-08.png      |  Bin 0 -> 28751 bytes
 docs/0.17.0/assets/tutorial-deletion-01.png        |  Bin 0 -> 43586 bytes
 docs/0.17.0/assets/tutorial-deletion-02.png        |  Bin 0 -> 439602 bytes
 docs/0.17.0/assets/tutorial-deletion-03.png        |  Bin 0 -> 437304 bytes
 .../assets/tutorial-kafka-data-loader-01.png       |  Bin 0 -> 118171 bytes
 .../assets/tutorial-kafka-data-loader-02.png       |  Bin 0 -> 510108 bytes
 .../assets/tutorial-kafka-data-loader-03.png       |  Bin 0 -> 217849 bytes
 .../assets/tutorial-kafka-data-loader-04.png       |  Bin 0 -> 260829 bytes
 .../assets/tutorial-kafka-data-loader-05.png       |  Bin 0 -> 256966 bytes
 .../assets/tutorial-kafka-data-loader-06.png       |  Bin 0 -> 94346 bytes
 .../assets/tutorial-kafka-data-loader-07.png       |  Bin 0 -> 135815 bytes
 .../assets/tutorial-kafka-data-loader-08.png       |  Bin 0 -> 97816 bytes
 .../assets/tutorial-kafka-data-loader-09.png       |  Bin 0 -> 171974 bytes
 .../assets/tutorial-kafka-data-loader-10.png       |  Bin 0 -> 113867 bytes
 .../assets/tutorial-kafka-data-loader-11.png       |  Bin 0 -> 120255 bytes
 .../assets/tutorial-kafka-data-loader-12.png       |  Bin 0 -> 153000 bytes
 .../assets/tutorial-kafka-submit-supervisor-01.png |  Bin 0 -> 143733 bytes
 docs/0.17.0/assets/tutorial-query-01.png           |  Bin 0 -> 152011 bytes
 docs/0.17.0/assets/tutorial-query-02.png           |  Bin 0 -> 144750 bytes
 docs/0.17.0/assets/tutorial-query-03.png           |  Bin 0 -> 141293 bytes
 docs/0.17.0/assets/tutorial-query-04.png           |  Bin 0 -> 66423 bytes
 docs/0.17.0/assets/tutorial-query-05.png           |  Bin 0 -> 51855 bytes
 docs/0.17.0/assets/tutorial-query-06.png           |  Bin 0 -> 82211 bytes
 docs/0.17.0/assets/tutorial-query-07.png           |  Bin 0 -> 78633 bytes
 docs/0.17.0/assets/tutorial-quickstart-01.png      |  Bin 0 -> 67013 bytes
 docs/0.17.0/assets/tutorial-retention-00.png       |  Bin 0 -> 77704 bytes
 docs/0.17.0/assets/tutorial-retention-01.png       |  Bin 0 -> 35171 bytes
 docs/0.17.0/assets/tutorial-retention-02.png       |  Bin 0 -> 240310 bytes
 docs/0.17.0/assets/tutorial-retention-03.png       |  Bin 0 -> 30029 bytes
 docs/0.17.0/assets/tutorial-retention-04.png       |  Bin 0 -> 44617 bytes
 docs/0.17.0/assets/tutorial-retention-05.png       |  Bin 0 -> 38992 bytes
 docs/0.17.0/assets/tutorial-retention-06.png       |  Bin 0 -> 137570 bytes
 docs/0.17.0/assets/web-console-01-home-view.png    |  Bin 0 -> 62928 bytes
 .../0.17.0/assets/web-console-02-data-loader-1.png |  Bin 0 -> 80587 bytes
 .../0.17.0/assets/web-console-03-data-loader-2.png |  Bin 0 -> 280137 bytes
 docs/0.17.0/assets/web-console-04-datasources.png  |  Bin 0 -> 113501 bytes
 docs/0.17.0/assets/web-console-05-retention.png    |  Bin 0 -> 99148 bytes
 docs/0.17.0/assets/web-console-06-segments.png     |  Bin 0 -> 136070 bytes
 docs/0.17.0/assets/web-console-07-supervisors.png  |  Bin 0 -> 77637 bytes
 .../assets/web-console-08-supervisor-status.png    |  Bin 0 -> 82538 bytes
 docs/0.17.0/assets/web-console-09-task-status.png  |  Bin 0 -> 251600 bytes
 docs/0.17.0/assets/web-console-10-servers.png      |  Bin 0 -> 92508 bytes
 docs/0.17.0/assets/web-console-11-query-sql.png    |  Bin 0 -> 136714 bytes
 docs/0.17.0/assets/web-console-12-query-rune.png   |  Bin 0 -> 94341 bytes
 docs/0.17.0/assets/web-console-13-lookups.png      |  Bin 0 -> 56556 bytes
 docs/0.17.0/comparisons/druid-vs-cassandra.html    |    8 +
 .../0.17.0/comparisons/druid-vs-elasticsearch.html |  110 ++
 docs/0.17.0/comparisons/druid-vs-hadoop.html       |    8 +
 .../comparisons/druid-vs-impala-or-shark.html      |    8 +
 docs/0.17.0/comparisons/druid-vs-key-value.html    |  118 ++
 docs/0.17.0/comparisons/druid-vs-kudu.html         |  112 ++
 .../comparisons/druid-vs-redshift.html             |   10 +-
 docs/0.17.0/comparisons/druid-vs-spark.html        |  112 ++
 .../0.17.0/comparisons/druid-vs-sql-on-hadoop.html |  143 ++
 docs/0.17.0/comparisons/druid-vs-vertica.html      |    8 +
 docs/0.17.0/configuration/auth.html                |    8 +
 docs/0.17.0/configuration/broker.html              |    8 +
 docs/0.17.0/configuration/caching.html             |    8 +
 docs/0.17.0/configuration/coordinator.html         |    8 +
 docs/0.17.0/configuration/hadoop.html              |    8 +
 docs/0.17.0/configuration/historical.html          |    8 +
 docs/{latest => 0.17.0}/configuration/index.html   |  292 ++-
 docs/0.17.0/configuration/indexing-service.html    |    8 +
 docs/{latest => 0.17.0}/configuration/logging.html |   12 +-
 docs/0.17.0/configuration/production-cluster.html  |    8 +
 docs/0.17.0/configuration/realtime.html            |    8 +
 docs/0.17.0/configuration/simple-cluster.html      |    8 +
 docs/0.17.0/configuration/zookeeper.html           |    8 +
 .../dependencies/cassandra-deep-storage.html       |    8 +
 docs/0.17.0/dependencies/deep-storage.html         |  120 ++
 .../dependencies/metadata-storage.html             |   26 +-
 docs/0.17.0/dependencies/zookeeper.html            |  129 ++
 docs/{latest => 0.17.0}/design/architecture.html   |   44 +-
 docs/{latest => 0.17.0}/design/auth.html           |   37 +-
 docs/0.17.0/design/broker.html                     |  115 ++
 docs/0.17.0/design/concepts-and-terminology.html   |    8 +
 docs/{latest => 0.17.0}/design/coordinator.html    |   70 +-
 docs/0.17.0/design/design.html                     |    8 +
 .../design/extensions-contrib/dropwizard.html      |  636 +++++++
 docs/0.17.0/design/historical.html                 |  116 ++
 docs/{latest => 0.17.0}/design/index.html          |   12 +-
 docs/{latest => 0.17.0}/design/indexer.html        |   16 +-
 docs/0.17.0/design/indexing-service.html           |  113 ++
 docs/0.17.0/design/middlemanager.html              |  109 ++
 docs/0.17.0/design/overlord.html                   |  121 ++
 docs/0.17.0/design/peons.html                      |  111 ++
 docs/0.17.0/design/plumber.html                    |    8 +
 docs/{latest => 0.17.0}/design/processes.html      |   42 +-
 docs/0.17.0/design/realtime.html                   |    8 +
 docs/{latest => 0.17.0}/design/router.html         |   18 +-
 docs/{latest => 0.17.0}/design/segments.html       |   34 +-
 .../0.17.0/development/approximate-histograms.html |    8 +
 docs/0.17.0/development/build.html                 |  127 ++
 .../development/community-extensions/azure.html    |    8 +
 .../community-extensions/cassandra.html            |    8 +
 .../community-extensions/cloudfiles.html           |    8 +
 .../development/community-extensions/graphite.html |    8 +
 .../community-extensions/kafka-simple.html         |    8 +
 .../development/community-extensions/rabbitmq.html |    8 +
 .../development/datasketches-aggregators.html      |    8 +
 docs/0.17.0/development/experimental.html          |  110 ++
 .../extensions-contrib/ambari-metrics-emitter.html |   12 +-
 .../development/extensions-contrib/azure.html      |  166 ++
 .../development/extensions-contrib/cassandra.html  |  103 ++
 .../development/extensions-contrib/cloudfiles.html |  170 ++
 .../extensions-contrib/distinctcount.html          |  162 ++
 .../development/extensions-contrib/google.html     |    8 +
 .../development/extensions-contrib/graphite.html   |   14 +-
 .../development/extensions-contrib/influx.html     |  132 ++
 .../extensions-contrib/influxdb-emitter.html       |   14 +-
 .../extensions-contrib/kafka-emitter.html          |  125 ++
 .../extensions-contrib/kafka-simple.html           |    8 +
 .../extensions-contrib/materialized-view.html      |   16 +-
 .../extensions-contrib/momentsketch-quantiles.html |   12 +-
 .../extensions-contrib/moving-average-query.html   |   39 +-
 .../extensions-contrib/opentsdb-emitter.html       |  130 ++
 .../0.17.0/development/extensions-contrib/orc.html |    8 +
 .../development/extensions-contrib/parquet.html    |    8 +
 .../development/extensions-contrib/rabbitmq.html   |    8 +
 .../extensions-contrib/redis-cache.html            |  131 ++
 .../development/extensions-contrib/rocketmq.html   |    8 +
 .../development/extensions-contrib/scan-query.html |    8 +
 .../development/extensions-contrib/sqlserver.html  |  132 ++
 .../development/extensions-contrib/statsd.html     |  140 ++
 .../tdigestsketch-quantiles.html                   |   14 +-
 .../development/extensions-contrib/thrift.html     |  157 ++
 .../extensions-contrib/time-min-max.html           |   12 +-
 .../extensions-core/approximate-histograms.html    |   16 +-
 docs/0.17.0/development/extensions-core/avro.html  |  105 ++
 .../development/extensions-core/bloom-filter.html  |   20 +-
 .../extensions-core/caffeine-cache.html            |    8 +
 .../extensions-core/datasketches-aggregators.html  |    8 +
 .../extensions-core/datasketches-extension.html    |  110 ++
 .../extensions-core/datasketches-hll.html          |  175 ++
 .../extensions-core/datasketches-quantiles.html    |   14 +-
 .../extensions-core/datasketches-theta.html        |   14 +-
 .../extensions-core/datasketches-tuple.html        |   14 +-
 .../extensions-core/druid-basic-security.html      |  167 +-
 .../extensions-core/druid-kerberos.html            |   16 +-
 .../development/extensions-core/druid-lookups.html |   21 +-
 .../development/extensions-core/examples.html      |   10 +-
 .../0.17.0/development/extensions-core/google.html |  127 ++
 docs/0.17.0/development/extensions-core/hdfs.html  |  229 +++
 .../extensions-core/kafka-eight-firehose.html      |    8 +
 .../kafka-extraction-namespace.html                |  133 ++
 .../extensions-core/kafka-ingestion.html           |   76 +-
 .../extensions-core/kinesis-ingestion.html         |   89 +-
 .../extensions-core/lookups-cached-global.html     |   27 +-
 .../development/extensions-core/mysql.html         |   24 +-
 .../extensions-core/namespaced-lookup.html         |    8 +
 docs/0.17.0/development/extensions-core/orc.html   |  152 ++
 .../development/extensions-core/parquet.html       |  108 ++
 .../development/extensions-core/postgresql.html    |   22 +-
 .../development/extensions-core/protobuf.html      |   30 +-
 docs/0.17.0/development/extensions-core/s3.html    |  193 ++
 .../extensions-core/simple-client-sslcontext.html  |  131 ++
 .../development/extensions-core/stats.html         |   12 +-
 .../development/extensions-core/test-stats.html    |  174 ++
 .../{latest => 0.17.0}/development/extensions.html |  110 +-
 docs/{latest => 0.17.0}/development/geo.html       |   12 +-
 docs/0.17.0/development/indexer.html               |    8 +
 .../integrating-druid-with-other-technologies.html |    8 +
 docs/0.17.0/development/javascript.html            |  135 ++
 .../kafka-simple-consumer-firehose.html            |    8 +
 docs/0.17.0/development/libraries.html             |    8 +
 docs/{latest => 0.17.0}/development/modules.html   |   49 +-
 docs/{latest => 0.17.0}/development/overview.html  |   12 +-
 docs/0.17.0/development/router.html                |    8 +
 docs/0.17.0/development/select-query.html          |    8 +
 docs/0.17.0/development/versioning.html            |  112 ++
 docs/0.17.0/index.html                             |    8 +
 docs/0.17.0/ingestion/batch-ingestion.html         |    8 +
 .../ingestion/command-line-hadoop-indexer.html     |    8 +
 docs/0.17.0/ingestion/compaction.html              |    8 +
 docs/0.17.0/ingestion/data-formats.html            | 1250 +++++++++++++
 .../ingestion/data-management.html                 |   97 +-
 docs/0.17.0/ingestion/delete-data.html             |    8 +
 docs/{latest => 0.17.0}/ingestion/faq.html         |   32 +-
 docs/0.17.0/ingestion/flatten-json.html            |    8 +
 docs/0.17.0/ingestion/hadoop-vs-native-batch.html  |    8 +
 docs/{latest => 0.17.0}/ingestion/hadoop.html      |   94 +-
 docs/{latest => 0.17.0}/ingestion/index.html       |  383 ++--
 docs/0.17.0/ingestion/ingestion-spec.html          |    8 +
 docs/0.17.0/ingestion/ingestion.html               |    8 +
 docs/0.17.0/ingestion/locking-and-priority.html    |    8 +
 docs/0.17.0/ingestion/misc-tasks.html              |    8 +
 .../{latest => 0.17.0}/ingestion/native-batch.html |  973 ++++++++--
 docs/0.17.0/ingestion/native_tasks.html            |    8 +
 docs/0.17.0/ingestion/overview.html                |    8 +
 docs/0.17.0/ingestion/realtime-ingestion.html      |    8 +
 docs/0.17.0/ingestion/reports.html                 |    8 +
 docs/0.17.0/ingestion/schema-changes.html          |    8 +
 .../ingestion/schema-design.html                   |   44 +-
 docs/0.17.0/ingestion/standalone-realtime.html     |  113 ++
 docs/0.17.0/ingestion/stream-ingestion.html        |    8 +
 docs/0.17.0/ingestion/stream-pull.html             |    8 +
 docs/0.17.0/ingestion/stream-push.html             |    8 +
 docs/{latest => 0.17.0}/ingestion/tasks.html       |  104 +-
 docs/0.17.0/ingestion/tranquility.html             |  108 ++
 docs/0.17.0/ingestion/transform-spec.html          |    8 +
 docs/0.17.0/ingestion/update-existing-data.html    |    8 +
 docs/0.17.0/misc/cluster-setup.html                |    8 +
 docs/0.17.0/misc/evaluate.html                     |    8 +
 docs/{latest => 0.17.0}/misc/math-expr.html        |   18 +-
 docs/0.17.0/misc/papers-and-talks.html             |  113 ++
 docs/0.17.0/misc/tasks.html                        |    8 +
 docs/0.17.0/operations/alerts.html                 |  110 ++
 .../operations/api-reference.html                  |   65 +-
 .../operations/basic-cluster-tuning.html           |   96 +-
 docs/0.17.0/operations/deep-storage-migration.html |  125 ++
 .../operations/druid-console.html                  |   18 +-
 .../operations/dump-segment.html                   |   19 +-
 .../operations/export-metadata.html                |   10 +-
 docs/0.17.0/operations/getting-started.html        |  111 ++
 docs/0.17.0/operations/high-availability.html      |  114 ++
 docs/0.17.0/operations/http-compression.html       |  109 ++
 docs/0.17.0/operations/including-extensions.html   |    8 +
 docs/0.17.0/operations/insert-segment-to-db.html   |  120 ++
 .../operations/kubernetes.html}                    |   13 +-
 .../operations/management-uis.html                 |   16 +-
 .../operations/metadata-migration.html             |   16 +-
 docs/{latest => 0.17.0}/operations/metrics.html    |   20 +-
 docs/0.17.0/operations/multitenancy.html           |    8 +
 .../operations/other-hadoop.html                   |   30 +-
 docs/0.17.0/operations/password-provider.html      |  123 ++
 docs/0.17.0/operations/performance-faq.html        |    8 +
 docs/0.17.0/operations/pull-deps.html              |  171 ++
 docs/0.17.0/operations/recommendations.html        |    8 +
 docs/0.17.0/operations/reset-cluster.html          |  137 ++
 docs/0.17.0/operations/rolling-updates.html        |  153 ++
 .../operations/rule-configuration.html             |   14 +-
 docs/0.17.0/operations/segment-optimization.html   |  169 ++
 .../operations/single-server.html                  |   12 +-
 .../{latest => 0.17.0}/operations/tls-support.html |   26 +-
 .../operations/use_sbt_to_build_fat_jar.html       |   10 +-
 docs/{latest => 0.17.0}/querying/aggregations.html |   54 +-
 docs/0.17.0/querying/caching.html                  |  143 ++
 docs/0.17.0/querying/datasource.html               |  126 ++
 docs/0.17.0/querying/datasourcemetadataquery.html  |  128 ++
 .../querying/dimensionspecs.html                   |   28 +-
 docs/{latest => 0.17.0}/querying/filters.html      |   18 +-
 .../{latest => 0.17.0}/querying/granularities.html |   16 +-
 docs/{latest => 0.17.0}/querying/groupbyquery.html |   34 +-
 docs/{latest => 0.17.0}/querying/having.html       |   12 +-
 docs/{latest => 0.17.0}/querying/hll-old.html      |   14 +-
 docs/0.17.0/querying/joins.html                    |  126 ++
 docs/0.17.0/querying/limitspec.html                |  118 ++
 docs/{latest => 0.17.0}/querying/lookups.html      |   26 +-
 .../querying/multi-value-dimensions.html           |   12 +-
 docs/0.17.0/querying/multitenancy.html             |  153 ++
 docs/0.17.0/querying/optimizations.html            |    8 +
 .../querying/post-aggregations.html                |   18 +-
 .../{latest => 0.17.0}/querying/query-context.html |   32 +-
 docs/{latest => 0.17.0}/querying/querying.html     |   28 +-
 docs/{latest => 0.17.0}/querying/scan-query.html   |   19 +-
 docs/{latest => 0.17.0}/querying/searchquery.html  |   28 +-
 docs/0.17.0/querying/searchqueryspec.html          |  130 ++
 .../querying/segmentmetadataquery.html             |   18 +-
 docs/0.17.0/querying/select-query.html             |  101 ++
 docs/0.17.0/querying/sorting-orders.html           |  119 ++
 docs/{latest => 0.17.0}/querying/sql.html          |  107 +-
 docs/0.17.0/querying/timeboundaryquery.html        |  129 ++
 .../querying/timeseriesquery.html                  |   24 +-
 docs/0.17.0/querying/topnmetricspec.html           |  155 ++
 docs/{latest => 0.17.0}/querying/topnquery.html    |   28 +-
 docs/0.17.0/querying/virtual-columns.html          |  146 ++
 .../tutorials/booting-a-production-cluster.html    |    8 +
 docs/{latest => 0.17.0}/tutorials/cluster.html     |   63 +-
 docs/0.17.0/tutorials/examples.html                |    8 +
 docs/0.17.0/tutorials/firewall.html                |    8 +
 docs/{latest => 0.17.0}/tutorials/index.html       |   55 +-
 docs/0.17.0/tutorials/ingestion-streams.html       |    8 +
 docs/0.17.0/tutorials/ingestion.html               |    8 +
 docs/0.17.0/tutorials/quickstart.html              |    8 +
 .../tutorials/tutorial-a-first-look-at-druid.html  |    8 +
 .../tutorials/tutorial-all-about-queries.html      |    8 +
 .../tutorials/tutorial-batch-hadoop.html           |   48 +-
 .../tutorials/tutorial-batch.html                  |   93 +-
 .../tutorials/tutorial-compaction.html             |   24 +-
 .../tutorials/tutorial-delete-data.html            |   12 +-
 .../tutorials/tutorial-ingestion-spec.html         |  347 ++--
 .../tutorials/tutorial-kafka.html                  |  127 +-
 .../0.17.0/tutorials/tutorial-kerberos-hadoop.html |  170 ++
 .../tutorials/tutorial-loading-batch-data.html     |    8 +
 .../tutorials/tutorial-loading-streaming-data.html |    8 +
 .../tutorials/tutorial-query.html                  |   24 +-
 .../tutorials/tutorial-retention.html              |   16 +-
 .../tutorials/tutorial-rollup.html                 |   51 +-
 .../tutorials/tutorial-the-druid-cluster.html      |    8 +
 docs/0.17.0/tutorials/tutorial-tranquility.html    |    8 +
 .../tutorials/tutorial-transform-spec.html         |   49 +-
 .../tutorials/tutorial-update-data.html            |   14 +-
 docs/latest/Firehose.html                          |    8 -
 docs/latest/Recommendations.html                   |    8 -
 .../latest/comparisons/druid-vs-elasticsearch.html |   10 +-
 docs/latest/comparisons/druid-vs-key-value.html    |   10 +-
 docs/latest/comparisons/druid-vs-kudu.html         |   10 +-
 docs/latest/comparisons/druid-vs-redshift.html     |   10 +-
 docs/latest/comparisons/druid-vs-spark.html        |   10 +-
 .../latest/comparisons/druid-vs-sql-on-hadoop.html |   10 +-
 docs/latest/configuration/index.html               |  190 +-
 docs/latest/configuration/logging.html             |   12 +-
 docs/latest/dependencies/deep-storage.html         |   12 +-
 docs/latest/dependencies/metadata-storage.html     |   12 +-
 docs/latest/dependencies/zookeeper.html            |   12 +-
 docs/latest/design/architecture.html               |   10 +-
 docs/latest/design/auth.html                       |   37 +-
 docs/latest/design/broker.html                     |   12 +-
 docs/latest/design/coordinator.html                |   66 +-
 .../design/extensions-contrib/dropwizard.html      |  636 +++++++
 docs/latest/design/historical.html                 |   12 +-
 docs/latest/design/index.html                      |   12 +-
 docs/latest/design/indexer.html                    |   16 +-
 docs/latest/design/indexing-service.html           |   12 +-
 docs/latest/design/middlemanager.html              |   12 +-
 docs/latest/design/overlord.html                   |   12 +-
 docs/latest/design/peons.html                      |   12 +-
 docs/latest/design/processes.html                  |   10 +-
 docs/latest/design/router.html                     |   14 +-
 docs/latest/design/segments.html                   |   30 +-
 docs/latest/development/build.html                 |   16 +-
 docs/latest/development/experimental.html          |   10 +-
 .../extensions-contrib/ambari-metrics-emitter.html |   12 +-
 .../development/extensions-contrib/azure.html      |   12 +-
 .../development/extensions-contrib/cassandra.html  |   12 +-
 .../development/extensions-contrib/cloudfiles.html |   12 +-
 .../extensions-contrib/distinctcount.html          |   12 +-
 .../development/extensions-contrib/graphite.html   |   12 +-
 .../development/extensions-contrib/influx.html     |   12 +-
 .../extensions-contrib/influxdb-emitter.html       |   12 +-
 .../extensions-contrib/kafka-emitter.html          |   12 +-
 .../extensions-contrib/materialized-view.html      |   12 +-
 .../extensions-contrib/momentsketch-quantiles.html |   12 +-
 .../extensions-contrib/moving-average-query.html   |   15 +-
 .../extensions-contrib/opentsdb-emitter.html       |   12 +-
 .../extensions-contrib/redis-cache.html            |   12 +-
 .../development/extensions-contrib/sqlserver.html  |   12 +-
 .../development/extensions-contrib/statsd.html     |   13 +-
 .../tdigestsketch-quantiles.html                   |   12 +-
 .../development/extensions-contrib/thrift.html     |   48 +-
 .../extensions-contrib/time-min-max.html           |   12 +-
 .../extensions-core/approximate-histograms.html    |   12 +-
 docs/latest/development/extensions-core/avro.html  |  212 +--
 .../development/extensions-core/bloom-filter.html  |   14 +-
 .../extensions-core/datasketches-extension.html    |   12 +-
 .../extensions-core/datasketches-hll.html          |   28 +-
 .../extensions-core/datasketches-quantiles.html    |   12 +-
 .../extensions-core/datasketches-theta.html        |   12 +-
 .../extensions-core/datasketches-tuple.html        |   12 +-
 .../extensions-core/druid-basic-security.html      |  159 +-
 .../extensions-core/druid-kerberos.html            |   12 +-
 .../development/extensions-core/druid-lookups.html |   19 +-
 .../development/extensions-core/examples.html      |   10 +-
 .../latest/development/extensions-core/google.html |   80 +-
 docs/latest/development/extensions-core/hdfs.html  |  128 +-
 .../kafka-extraction-namespace.html                |   12 +-
 .../extensions-core/kafka-ingestion.html           |   62 +-
 .../extensions-core/kinesis-ingestion.html         |   77 +-
 .../extensions-core/lookups-cached-global.html     |   19 +-
 docs/latest/development/extensions-core/mysql.html |   20 +-
 docs/latest/development/extensions-core/orc.html   |  232 +--
 .../development/extensions-core/parquet.html       |  201 +--
 .../development/extensions-core/postgresql.html    |   20 +-
 .../development/extensions-core/protobuf.html      |   28 +-
 docs/latest/development/extensions-core/s3.html    |  120 +-
 .../extensions-core/simple-client-sslcontext.html  |   12 +-
 docs/latest/development/extensions-core/stats.html |   12 +-
 .../development/extensions-core/test-stats.html    |   12 +-
 docs/latest/development/extensions.html            |   12 +-
 docs/latest/development/geo.html                   |   12 +-
 docs/latest/development/javascript.html            |   14 +-
 docs/latest/development/modules.html               |   45 +-
 docs/latest/development/overview.html              |   10 +-
 docs/latest/development/versioning.html            |   12 +-
 docs/latest/ingestion/data-formats.html            | 1128 +++++++++++-
 docs/latest/ingestion/data-management.html         |   75 +-
 docs/latest/ingestion/faq.html                     |   16 +-
 docs/latest/ingestion/firehose.html                |    8 -
 docs/latest/ingestion/hadoop.html                  |   70 +-
 docs/latest/ingestion/index.html                   |  333 ++--
 docs/latest/ingestion/native-batch.html            |  931 ++++++++--
 docs/latest/ingestion/schema-design.html           |   10 +-
 docs/latest/ingestion/standalone-realtime.html     |   12 +-
 docs/latest/ingestion/tasks.html                   |   74 +-
 docs/latest/ingestion/tranquility.html             |   10 +-
 docs/latest/misc/math-expr.html                    |   14 +-
 docs/latest/misc/papers-and-talks.html             |   10 +-
 docs/latest/operations/alerts.html                 |   10 +-
 docs/latest/operations/api-reference.html          |   47 +-
 docs/latest/operations/basic-cluster-tuning.html   |   80 +-
 docs/latest/operations/deep-storage-migration.html |   10 +-
 docs/latest/operations/druid-console.html          |   10 +-
 docs/latest/operations/dump-segment.html           |   15 +-
 docs/latest/operations/export-metadata.html        |   10 +-
 docs/latest/operations/getting-started.html        |   10 +-
 docs/latest/operations/high-availability.html      |   12 +-
 docs/latest/operations/http-compression.html       |   12 +-
 docs/latest/operations/insert-segment-to-db.html   |   12 +-
 .../examples.html => operations/kubernetes.html}   |   13 +-
 docs/latest/operations/management-uis.html         |   10 +-
 docs/latest/operations/metadata-migration.html     |   10 +-
 docs/latest/operations/metrics.html                |   16 +-
 docs/latest/operations/other-hadoop.html           |   16 +-
 docs/latest/operations/password-provider.html      |   12 +-
 docs/latest/operations/pull-deps.html              |   24 +-
 docs/latest/operations/recommendations.html        |  157 +-
 docs/latest/operations/reset-cluster.html          |   12 +-
 docs/latest/operations/rolling-updates.html        |   18 +-
 docs/latest/operations/rule-configuration.html     |   12 +-
 docs/latest/operations/segment-optimization.html   |   12 +-
 docs/latest/operations/single-server.html          |   10 +-
 docs/latest/operations/tls-support.html            |   14 +-
 .../operations/use_sbt_to_build_fat_jar.html       |   10 +-
 docs/latest/querying/aggregations.html             |   34 +-
 docs/latest/querying/caching.html                  |   16 +-
 docs/latest/querying/datasource.html               |   12 +-
 docs/latest/querying/datasourcemetadataquery.html  |   12 +-
 docs/latest/querying/dimensionspecs.html           |   12 +-
 docs/latest/querying/filters.html                  |   12 +-
 docs/latest/querying/granularities.html            |   12 +-
 docs/latest/querying/groupbyquery.html             |   14 +-
 docs/latest/querying/having.html                   |   12 +-
 docs/latest/querying/hll-old.html                  |   12 +-
 docs/latest/querying/joins.html                    |   12 +-
 docs/latest/querying/limitspec.html                |   10 +-
 docs/latest/querying/lookups.html                  |   12 +-
 docs/latest/querying/multi-value-dimensions.html   |   12 +-
 docs/latest/querying/multitenancy.html             |   22 +-
 docs/latest/querying/post-aggregations.html        |   12 +-
 docs/latest/querying/query-context.html            |   30 +-
 docs/latest/querying/querying.html                 |   12 +-
 docs/latest/querying/scan-query.html               |   15 +-
 docs/latest/querying/searchquery.html              |   16 +-
 docs/latest/querying/searchqueryspec.html          |   10 +-
 docs/latest/querying/segmentmetadataquery.html     |   12 +-
 docs/latest/querying/select-query.html             |  218 +--
 docs/latest/querying/sorting-orders.html           |   10 +-
 docs/latest/querying/sql.html                      |   97 +-
 docs/latest/querying/timeboundaryquery.html        |   12 +-
 docs/latest/querying/timeseriesquery.html          |   12 +-
 docs/latest/querying/topnmetricspec.html           |   12 +-
 docs/latest/querying/topnquery.html                |   12 +-
 docs/latest/querying/virtual-columns.html          |   12 +-
 docs/latest/tutorials/cluster.html                 |   39 +-
 docs/latest/tutorials/index.html                   |   37 +-
 docs/latest/tutorials/tutorial-batch-hadoop.html   |   42 +-
 docs/latest/tutorials/tutorial-batch.html          |   83 +-
 docs/latest/tutorials/tutorial-compaction.html     |   16 +-
 docs/latest/tutorials/tutorial-delete-data.html    |   12 +-
 docs/latest/tutorials/tutorial-ingestion-spec.html |  345 ++--
 docs/latest/tutorials/tutorial-kafka.html          |  115 +-
 .../latest/tutorials/tutorial-kerberos-hadoop.html |   67 +-
 docs/latest/tutorials/tutorial-query.html          |   12 +-
 docs/latest/tutorials/tutorial-retention.html      |   12 +-
 docs/latest/tutorials/tutorial-rollup.html         |   49 +-
 docs/latest/tutorials/tutorial-transform-spec.html |   47 +-
 docs/latest/tutorials/tutorial-update-data.html    |   12 +-
 img/diagram-7.png                                  |  Bin 154044 -> 144695 bytes
 index.html                                         |   25 +-
 technology.html                                    |    2 +-
 use-cases.html                                     |   44 +
 610 files changed, 20175 insertions(+), 7977 deletions(-)

diff --git a/css/base.css b/css/base.css
deleted file mode 100644
index a256214..0000000
--- a/css/base.css
+++ /dev/null
@@ -1,207 +0,0 @@
-html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, menu, nav, output, ruby, section, summary, time, mark, audio, video {
-  margin: 0;
-  padding: 0;
-  border: 0;
-  font-size: 100%;
-  font: inherit;
-  vertical-align: baseline; }
-
-article, aside, details, figcaption, figure, footer, header, menu, nav, section {
-  display: block; }
-
-body {
-  line-height: 1; }
-
-ol, ul {
-  list-style: none; }
-
-table {
-  border-collapse: collapse;
-  border-spacing: 0; }
-
-* {
-  box-sizing: border-box;
-  vertical-align: top; }
-
-body * {
-  position: relative; }
-
-a {
-  text-decoration: inherit;
-  color: inherit;
-  cursor: inherit; }
-
-div, span {
-  cursor: inherit; }
-
-text {
-  cursor: default; }
-
-button, input, textarea {
-  border: 0;
-  margin: 0; }
-  button:focus, input:focus, textarea:focus {
-    outline: none; }
-
-body {
-  margin-top: 54px; }
-
-html, body {
-  position: relative;
-  color: #1C1C26;
-  font-family: 'Open Sans', Arial, Helvetica, sans-serif;
-  font-weight: 400;
-  font-size: 15px;
-  word-wrap: break-word; }
-  html h1, html h2, html h3, html h4, html h5, html h6, html .h1, html .h2, html .h3, html .h4, html .h5, html .h6, body h1, body h2, body h3, body h4, body h5, body h6, body .h1, body .h2, body .h3, body .h4, body .h5, body .h6 {
-    font-weight: 600;
-    line-height: 140%;
-    margin-bottom: 14px;
-    margin-top: 28px; }
-  html h1, body h1 {
-    font-size: 2.7em; }
-  html h2, body h2 {
-    font-size: 2.2em; }
-  html h3, body h3 {
-    font-size: 1.7em; }
-  html h4, body h4 {
-    font-size: 1.4em; }
-  html h5, body h5 {
-    font-weight: bold; }
-  html h6, body h6 {
-    font-weight: bold;
-    color: #999999; }
-  html p, body p {
-    line-height: 170%;
-    margin-bottom: 14px;
-    margin-top: 14px; }
-    html p:first-child, body p:first-child {
-      margin-top: 28px; }
-  html strong, body strong {
-    font-weight: 700; }
-  html hr, body hr {
-    margin: 30px 0 30px 0; }
-  html a, body a {
-    cursor: pointer; }
-  html p a, html table a, html ul a, html li a, body p a, body table a, body ul a, body li a {
-    color: #4460de;
-    cursor: pointer;
-    font-weight: 600; }
-    html p a:hover, html table a:hover, html ul a:hover, html li a:hover, body p a:hover, body table a:hover, body ul a:hover, body li a:hover {
-      text-decoration: underline; }
-  html ul, body ul {
-    margin-top: 14px;
-    margin-bottom: 14px;
-    line-height: 170%; }
-    html ul li, body ul li {
-      margin-left: 18px;
-      list-style-type: disc; }
-  html ol, body ol {
-    margin-top: 14px;
-    margin-bottom: 14px;
-    line-height: 170%; }
-    html ol li, body ol li {
-      margin-left: 22px;
-      list-style-type: decimal; }
-  html table, body table {
-    width: 100%;
-    table-layout: fixed;
-    margin-top: 14px;
-    margin-bottom: 14px; }
-    html table th, body table th {
-      font-weight: 700; }
-    html table th, html table td, body table th, body table td {
-      padding: 5px; }
-  html blockquote, body blockquote {
-    font-size: 14px;
-    font-style: italic;
-    color: #777; }
-
-.druid-header {
-  padding: 24px 0 34px;
-  margin-bottom: 14px;
-  color: #1c1c26;
-  text-align: center;
-  background-image: url("/img/watermark-light.png");
-  background-size: 330px 330px;
-  background-repeat: no-repeat;
-  background-position: 18% -30px;
-  background-color: #e7e7ec;
-  overflow: hidden; }
-  .druid-header h1 {
-    margin-top: 14px;
-    font-size: 2.8em; }
-  .druid-header h4 {
-    font-weight: 400;
-    font-size: 15px;
-    margin-top: -5px;
-    margin-bottom: 0; }
-    .druid-header h4 a {
-      color: #4460de;
-      font-weight: 600; }
-      .druid-header h4 a .fa {
-        margin-right: 4px; }
-      .druid-header h4 a:hover {
-        text-decoration: underline; }
-
-.text-indent {
-  padding-left: 50px; }
-
-.text-indent-2 {
-  padding-left: 100px; }
-
-.text-indent-p p {
-  padding-left: 50px; }
-
-.image-large {
-  text-align: center;
-  margin-top: 28px;
-  margin-bottom: 28px; }
-  .image-large img {
-    width: 100%;
-    max-width: 660px; }
-
-.large-button {
-  display: inline-block;
-  padding: 10px 22px;
-  color: white;
-  background: #4460de;
-  border-radius: 2px;
-  font-size: 15px;
-  margin-top: 14px;
-  margin-bottom: 14px; }
-  .large-button .fa {
-    margin-right: 3px; }
-  .large-button:hover {
-    background: #2442cb;
-    text-decoration: none; }
-
-.features {
-  margin-bottom: 28px;
-  margin-top: 38px; }
-  .features .feature {
-    padding-left: 74px;
-    margin-bottom: 34px; }
-    .features .feature:nth-child(3n-2) .fa {
-      background: #cbd5ff; }
-    .features .feature:nth-child(3n-1) .fa {
-      background: #a7f1d9; }
-    .features .feature:nth-child(3n) .fa {
-      background: #ffd8a8; }
-    .features .feature .fa {
-      top: 0;
-      left: 0;
-      position: absolute;
-      width: 54px;
-      height: 54px;
-      line-height: 54px;
-      border-radius: 40px;
-      text-align: center;
-      font-size: 20px;
-      background: #cbd5ff;
-      color: #1C1C26; }
-    .features .feature p {
-      margin-top: 0; }
-    .features .feature h5 {
-      margin-bottom: 0;
-      font-size: 1.2em; }
diff --git a/css/blogs.css b/css/blogs.css
deleted file mode 100644
index 081b39e..0000000
--- a/css/blogs.css
+++ /dev/null
@@ -1,68 +0,0 @@
-.blog-listing {
-  margin-bottom: 70px; }
-
-.blog-listing h2 {
-  color: #333; }
-
-.blog-listing h2 a {
-  color: inherit;
-  color: #575B61; }
-
-.blog-listing h2 a:hover,
-.blog-listing h2 a:focus {
-  color: #b1bac6;
-  text-decoration: none; }
-
-.blog-listing .btn-default {
-  border-color: #b1b1ac;
-  border-color: #2ceefb;
-  border-color: #2C90FB;
-  border-color: #2576CC;
-  color: #575B61;
-  color: #2C90FB;
-  color: #2576CC; }
-
-.blog-listing .btn-default:hover,
-.blog-listing .btn-default:focus {
-  /* background-color: #b1b1ac; */
-  background-color: #2C90FB;
-  background-color: #2576CC;
-  color: #fff; }
-
-.blog-entry {
-  margin-bottom: 70px; }
-
-.druid-header.blog {
-  padding: 0;
-  overflow: hidden; }
-
-.blog .title-spacer {
-  min-height: 240px; }
-
-.blog .title-image-wrap {
-  top: -50%;
-  left: -50%;
-  width: 200%;
-  height: 200%;
-  position: relative;
-  overflow: hidden;
-  min-height: 45px;
-  /* min-height: 200px; */ }
-
-.blog-entry img {
-  max-width: 100%; }
-
-.blog .title-image {
-  position: absolute;
-  min-width: 30%;
-  min-height: 200px;
-  margin: auto;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  box-shadow: 0px 2px 9px rgba(0, 0, 0, 0.5); }
-
-.recents ul li {
-  font-weight: 400;
-  margin-bottom: 15px; }
diff --git a/css/bootstrap-pure.css b/css/bootstrap-pure.css
deleted file mode 100644
index 820c985..0000000
--- a/css/bootstrap-pure.css
+++ /dev/null
@@ -1,1855 +0,0 @@
-/*!
- * Bootstrap v3.3.5 (http://getbootstrap.com)
- * Copyright 2011-2015 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * Modified by Vadim Ogievetsky
- */
-article, aside, details, figure, footer, header, main, menu, nav, section, summary {
-  display: block; }
-
-progress, video {
-  display: inline-block;
-  vertical-align: baseline; }
-
-[hidden], template {
-  display: none; }
-
-b, strong {
-  font-weight: bold; }
-
-mark {
-  color: #000;
-  background: #ff0; }
-
-small {
-  font-size: 80%; }
-
-sub {
-  position: relative;
-  font-size: 75%;
-  line-height: 0;
-  vertical-align: baseline; }
-
-sub {
-  bottom: -.25em; }
-
-img {
-  border: 0; }
-
-figure {
-  margin: 1em 40px; }
-
-hr {
-  height: 0;
-  -webkit-box-sizing: content-box;
-  -moz-box-sizing: content-box;
-  box-sizing: content-box; }
-
-pre {
-  overflow: auto; }
-
-code, pre {
-  font-family: monospace, monospace;
-  font-size: 1em; }
-
-button, input, select {
-  margin: 0;
-  font: inherit;
-  color: inherit; }
-
-button {
-  overflow: visible; }
-
-button, select {
-  text-transform: none; }
-
-button, html input[type="button"], input[type="reset"], input[type="submit"] {
-  -webkit-appearance: button;
-  cursor: pointer; }
-
-button[disabled], html input[disabled] {
-  cursor: default; }
-
-button::-moz-focus-inner, input::-moz-focus-inner {
-  padding: 0;
-  border: 0; }
-
-input {
-  line-height: normal; }
-
-input[type="checkbox"], input[type="radio"] {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-  padding: 0; }
-
-input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button {
-  height: auto; }
-
-input[type="search"] {
-  -webkit-box-sizing: content-box;
-  -moz-box-sizing: content-box;
-  box-sizing: content-box;
-  -webkit-appearance: textfield; }
-
-input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration {
-  -webkit-appearance: none; }
-
-table {
-  border-spacing: 0;
-  border-collapse: collapse; }
-
-td, th {
-  padding: 0; }
-
-/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
-@media print {
-  *, *:before, *:after {
-    color: #000 !important;
-    text-shadow: none !important;
-    background: transparent !important;
-    -webkit-box-shadow: none !important;
-    box-shadow: none !important; }
-  a, a:visited {
-    text-decoration: underline; }
-  a[href]:after {
-    content: " (" attr(href) ")"; }
-  a[href^="#"]:after, a[href^="javascript:"]:after {
-    content: ""; }
-  pre, blockquote {
-    border: 1px solid #999;
-    page-break-inside: avoid; }
-  thead {
-    display: table-header-group; }
-  tr, img {
-    page-break-inside: avoid; }
-  img {
-    max-width: 100% !important; }
-  p, h2, h3 {
-    orphans: 3;
-    widows: 3; }
-  h2, h3 {
-    page-break-after: avoid; }
-  .navbar {
-    display: none; }
-  .label {
-    border: 1px solid #000; }
-  .table {
-    border-collapse: collapse !important; }
-  .table td, .table th {
-    background-color: #fff !important; } }
-
-@font-face {
-  font-family: 'Glyphicons Halflings';
-  src: url("../fonts/glyphicons-halflings-regular.eot");
-  src: url("../fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"), url("../fonts/glyphicons-halflings-regular.woff2") format("woff2"), url("../fonts/glyphicons-halflings-regular.woff") format("woff"), url("../fonts/glyphicons-halflings-regular.ttf") format("truetype"), url("../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg"); }
-
-* {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box; }
-
-*:before, *:after {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box; }
-
-input, button, select {
-  font-family: inherit;
-  font-size: inherit;
-  line-height: inherit; }
-
-figure {
-  margin: 0; }
-
-.img-rounded {
-  border-radius: 6px; }
-
-.img-circle {
-  border-radius: 50%; }
-
-hr {
-  margin-top: 20px;
-  margin-bottom: 20px;
-  border: 0;
-  border-top: 1px solid #eee; }
-
-.sr-only {
-  position: absolute;
-  width: 1px;
-  height: 1px;
-  padding: 0;
-  margin: -1px;
-  overflow: hidden;
-  clip: rect(0, 0, 0, 0);
-  border: 0; }
-
-[role="button"] {
-  cursor: pointer; }
-
-.lead {
-  margin-bottom: 20px;
-  font-size: 16px;
-  font-weight: 300;
-  line-height: 1.4; }
-
-@media (min-width: 768px) {
-  .lead {
-    font-size: 21px; } }
-
-small, .small {
-  font-size: 85%; }
-
-mark, .mark {
-  padding: .2em;
-  background-color: #fcf8e3; }
-
-.text-left {
-  text-align: left; }
-
-.text-right {
-  text-align: right; }
-
-.text-center {
-  text-align: center; }
-
-.text-lowercase {
-  text-transform: lowercase; }
-
-.text-uppercase {
-  text-transform: uppercase; }
-
-.text-muted {
-  color: #777; }
-
-.text-primary {
-  color: #337ab7; }
-
-a.text-primary:hover, a.text-primary:focus {
-  color: #286090; }
-
-.text-success {
-  color: #3c763d; }
-
-a.text-success:hover, a.text-success:focus {
-  color: #2b542c; }
-
-.text-info {
-  color: #31708f; }
-
-a.text-info:hover, a.text-info:focus {
-  color: #245269; }
-
-.text-warning {
-  color: #8a6d3b; }
-
-a.text-warning:hover, a.text-warning:focus {
-  color: #66512c; }
-
-.text-danger {
-  color: #a94442; }
-
-a.text-danger:hover, a.text-danger:focus {
-  color: #843534; }
-
-.bg-primary {
-  color: #fff;
-  background-color: #337ab7; }
-
-a.bg-primary:hover, a.bg-primary:focus {
-  background-color: #286090; }
-
-.bg-success {
-  background-color: #dff0d8; }
-
-a.bg-success:hover, a.bg-success:focus {
-  background-color: #c1e2b3; }
-
-.bg-info {
-  background-color: #d9edf7; }
-
-a.bg-info:hover, a.bg-info:focus {
-  background-color: #afd9ee; }
-
-.bg-warning {
-  background-color: #fcf8e3; }
-
-a.bg-warning:hover, a.bg-warning:focus {
-  background-color: #f7ecb5; }
-
-.bg-danger {
-  background-color: #f2dede; }
-
-a.bg-danger:hover, a.bg-danger:focus {
-  background-color: #e4b9b9; }
-
-.page-header {
-  padding-bottom: 9px;
-  margin: 40px 0 20px;
-  border-bottom: 1px solid #eee; }
-
-ul, ol {
-  margin-top: 0;
-  margin-bottom: 10px; }
-
-ul ul, ol ul, ul ol, ol ol {
-  margin-bottom: 0; }
-
-.list-inline {
-  padding-left: 0;
-  margin-left: -5px;
-  list-style: none; }
-
-.list-inline > li {
-  display: inline-block;
-  padding-right: 5px;
-  padding-left: 5px; }
-
-dl {
-  margin-top: 0;
-  margin-bottom: 20px; }
-
-dt, dd {
-  line-height: 1.42857143; }
-
-dt {
-  font-weight: bold; }
-
-dd {
-  margin-left: 0; }
-
-@media (min-width: 768px) {
-  .dl-horizontal dt {
-    float: left;
-    width: 160px;
-    overflow: hidden;
-    clear: left;
-    text-align: right;
-    text-overflow: ellipsis;
-    white-space: nowrap; }
-  .dl-horizontal dd {
-    margin-left: 180px; } }
-
-blockquote {
-  padding: 10px 20px;
-  margin: 0 0 20px;
-  font-size: 17.5px;
-  border-left: 5px solid #eee; }
-
-blockquote p:last-child, blockquote ul:last-child, blockquote ol:last-child {
-  margin-bottom: 0; }
-
-blockquote footer, blockquote small, blockquote .small {
-  display: block;
-  font-size: 80%;
-  line-height: 1.42857143;
-  color: #777; }
-
-blockquote footer:before, blockquote small:before, blockquote .small:before {
-  content: '\2014 \00A0'; }
-
-.blockquote-reverse, blockquote.pull-right {
-  padding-right: 15px;
-  padding-left: 0;
-  text-align: right;
-  border-right: 5px solid #eee;
-  border-left: 0; }
-
-.blockquote-reverse footer:before, blockquote.pull-right footer:before, .blockquote-reverse small:before, blockquote.pull-right small:before, .blockquote-reverse .small:before, blockquote.pull-right .small:before {
-  content: ''; }
-
-.blockquote-reverse footer:after, blockquote.pull-right footer:after, .blockquote-reverse small:after, blockquote.pull-right small:after, .blockquote-reverse .small:after, blockquote.pull-right .small:after {
-  content: '\00A0 \2014'; }
-
-address {
-  margin-bottom: 20px;
-  font-style: normal;
-  line-height: 1.42857143; }
-
-code, pre {
-  font-family: Menlo, Monaco, Consolas, "Courier New", monospace; }
-
-code {
-  padding: 2px 4px;
-  font-size: 90%;
-  color: #c7254e;
-  background-color: #f9f2f4;
-  border-radius: 4px; }
-
-pre {
-  display: block;
-  padding: 9.5px;
-  margin: 0 0 10px;
-  font-size: 13px;
-  line-height: 1.42857143;
-  color: #333;
-  word-break: break-all;
-  word-wrap: break-word;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  border-radius: 4px; }
-
-pre code {
-  padding: 0;
-  font-size: inherit;
-  color: inherit;
-  white-space: pre-wrap;
-  background-color: transparent;
-  border-radius: 0; }
-
-.container {
-  padding-right: 15px;
-  padding-left: 15px;
-  margin-right: auto;
-  margin-left: auto; }
-
-@media (min-width: 768px) {
-  .container {
-    width: 750px; } }
-
-@media (min-width: 992px) {
-  .container {
-    width: 970px; } }
-
-@media (min-width: 1200px) {
-  .container {
-    width: 1170px; } }
-
-.container-fluid {
-  padding-right: 15px;
-  padding-left: 15px;
-  margin-right: auto;
-  margin-left: auto; }
-
-.row {
-  margin-right: -15px;
-  margin-left: -15px; }
-
-.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11,  [...]
-  position: relative;
-  min-height: 1px;
-  padding-right: 15px;
-  padding-left: 15px; }
-
-.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
-  float: left; }
-
-@media (min-width: 992px) {
-  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
-    float: left; }
-  .col-md-12 {
-    width: 100%; }
-  .col-md-11 {
-    width: 91.66666667%; }
-  .col-md-10 {
-    width: 83.33333333%; }
-  .col-md-9 {
-    width: 75%; }
-  .col-md-8 {
-    width: 66.66666667%; }
-  .col-md-7 {
-    width: 58.33333333%; }
-  .col-md-6 {
-    width: 50%; }
-  .col-md-5 {
-    width: 41.66666667%; }
-  .col-md-4 {
-    width: 33.33333333%; }
-  .col-md-3 {
-    width: 25%; }
-  .col-md-2 {
-    width: 16.66666667%; }
-  .col-md-1 {
-    width: 8.33333333%; }
-  .col-md-pull-12 {
-    right: 100%; }
-  .col-md-pull-11 {
-    right: 91.66666667%; }
-  .col-md-pull-10 {
-    right: 83.33333333%; }
-  .col-md-pull-9 {
-    right: 75%; }
-  .col-md-pull-8 {
-    right: 66.66666667%; }
-  .col-md-pull-7 {
-    right: 58.33333333%; }
-  .col-md-pull-6 {
-    right: 50%; }
-  .col-md-pull-5 {
-    right: 41.66666667%; }
-  .col-md-pull-4 {
-    right: 33.33333333%; }
-  .col-md-pull-3 {
-    right: 25%; }
-  .col-md-pull-2 {
-    right: 16.66666667%; }
-  .col-md-pull-1 {
-    right: 8.33333333%; }
-  .col-md-pull-0 {
-    right: auto; }
-  .col-md-push-12 {
-    left: 100%; }
-  .col-md-push-11 {
-    left: 91.66666667%; }
-  .col-md-push-10 {
-    left: 83.33333333%; }
-  .col-md-push-9 {
-    left: 75%; }
-  .col-md-push-8 {
-    left: 66.66666667%; }
-  .col-md-push-7 {
-    left: 58.33333333%; }
-  .col-md-push-6 {
-    left: 50%; }
-  .col-md-push-5 {
-    left: 41.66666667%; }
-  .col-md-push-4 {
-    left: 33.33333333%; }
-  .col-md-push-3 {
-    left: 25%; }
-  .col-md-push-2 {
-    left: 16.66666667%; }
-  .col-md-push-1 {
-    left: 8.33333333%; }
-  .col-md-push-0 {
-    left: auto; }
-  .col-md-offset-12 {
-    margin-left: 100%; }
-  .col-md-offset-11 {
-    margin-left: 91.66666667%; }
-  .col-md-offset-10 {
-    margin-left: 83.33333333%; }
-  .col-md-offset-9 {
-    margin-left: 75%; }
-  .col-md-offset-8 {
-    margin-left: 66.66666667%; }
-  .col-md-offset-7 {
-    margin-left: 58.33333333%; }
-  .col-md-offset-6 {
-    margin-left: 50%; }
-  .col-md-offset-5 {
-    margin-left: 41.66666667%; }
-  .col-md-offset-4 {
-    margin-left: 33.33333333%; }
-  .col-md-offset-3 {
-    margin-left: 25%; }
-  .col-md-offset-2 {
-    margin-left: 16.66666667%; }
-  .col-md-offset-1 {
-    margin-left: 8.33333333%; }
-  .col-md-offset-0 {
-    margin-left: 0; } }
-
-table {
-  background-color: transparent; }
-
-caption {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  color: #777;
-  text-align: left; }
-
-th {
-  text-align: left; }
-
-.table {
-  width: 100%;
-  max-width: 100%;
-  margin-bottom: 20px; }
-
-.table > thead > tr > th, .table > tbody > tr > th, .table > thead > tr > td, .table > tbody > tr > td {
-  padding: 8px;
-  line-height: 1.42857143;
-  vertical-align: top;
-  border-top: 1px solid #ddd; }
-
-.table > thead > tr > th {
-  vertical-align: bottom;
-  border-bottom: 2px solid #ddd; }
-
-.table > caption + thead > tr:first-child > th, .table > thead:first-child > tr:first-child > th, .table > caption + thead > tr:first-child > td, .table > thead:first-child > tr:first-child > td {
-  border-top: 0; }
-
-.table > tbody + tbody {
-  border-top: 2px solid #ddd; }
-
-.table .table {
-  background-color: #fff; }
-
-.table-condensed > thead > tr > th, .table-condensed > tbody > tr > th, .table-condensed > thead > tr > td, .table-condensed > tbody > tr > td {
-  padding: 5px; }
-
-table col[class*="col-"] {
-  position: static;
-  display: table-column;
-  float: none; }
-
-table td[class*="col-"], table th[class*="col-"] {
-  position: static;
-  display: table-cell;
-  float: none; }
-
-.table > thead > tr > td.active, .table > tbody > tr > td.active, .table > thead > tr > th.active, .table > tbody > tr > th.active, .table > thead > tr.active > td, .table > tbody > tr.active > td, .table > thead > tr.active > th, .table > tbody > tr.active > th {
-  background-color: #f5f5f5; }
-
-.table > thead > tr > td.success, .table > tbody > tr > td.success, .table > thead > tr > th.success, .table > tbody > tr > th.success, .table > thead > tr.success > td, .table > tbody > tr.success > td, .table > thead > tr.success > th, .table > tbody > tr.success > th {
-  background-color: #dff0d8; }
-
-.table > thead > tr > td.info, .table > tbody > tr > td.info, .table > thead > tr > th.info, .table > tbody > tr > th.info, .table > thead > tr.info > td, .table > tbody > tr.info > td, .table > thead > tr.info > th, .table > tbody > tr.info > th {
-  background-color: #d9edf7; }
-
-.table > thead > tr > td.warning, .table > tbody > tr > td.warning, .table > thead > tr > th.warning, .table > tbody > tr > th.warning, .table > thead > tr.warning > td, .table > tbody > tr.warning > td, .table > thead > tr.warning > th, .table > tbody > tr.warning > th {
-  background-color: #fcf8e3; }
-
-.table > thead > tr > td.danger, .table > tbody > tr > td.danger, .table > thead > tr > th.danger, .table > tbody > tr > th.danger, .table > thead > tr.danger > td, .table > tbody > tr.danger > td, .table > thead > tr.danger > th, .table > tbody > tr.danger > th {
-  background-color: #f2dede; }
-
-label {
-  display: inline-block;
-  max-width: 100%;
-  margin-bottom: 5px;
-  font-weight: bold; }
-
-input[type="search"] {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box; }
-
-input[type="radio"], input[type="checkbox"] {
-  margin: 4px 0 0;
-  margin-top: 1px \9;
-  line-height: normal; }
-
-input[type="file"] {
-  display: block; }
-
-input[type="range"] {
-  display: block;
-  width: 100%; }
-
-select[multiple], select[size] {
-  height: auto; }
-
-input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px; }
-
-output {
-  display: block;
-  padding-top: 7px;
-  font-size: 14px;
-  line-height: 1.42857143;
-  color: #555; }
-
-input[type="search"] {
-  -webkit-appearance: none; }
-
-@media screen and (-webkit-min-device-pixel-ratio: 0) {
-  input[type="date"].form-control, input[type="time"].form-control, input[type="datetime-local"].form-control, input[type="month"].form-control {
-    line-height: 34px; }
-  input[type="date"].input-sm, input[type="time"].input-sm, input[type="datetime-local"].input-sm, input[type="month"].input-sm, .input-group-sm input[type="date"], .input-group-sm input[type="time"], .input-group-sm input[type="datetime-local"], .input-group-sm input[type="month"] {
-    line-height: 30px; }
-  input[type="date"].input-lg, input[type="time"].input-lg, input[type="datetime-local"].input-lg, input[type="month"].input-lg, .input-group-lg input[type="date"], .input-group-lg input[type="time"], .input-group-lg input[type="datetime-local"], .input-group-lg input[type="month"] {
-    line-height: 46px; } }
-
-.form-group {
-  margin-bottom: 15px; }
-
-input[type="radio"][disabled], input[type="checkbox"][disabled], input[type="radio"].disabled, input[type="checkbox"].disabled {
-  cursor: not-allowed; }
-
-.form-control-static {
-  min-height: 34px;
-  padding-top: 7px;
-  padding-bottom: 7px;
-  margin-bottom: 0; }
-
-.form-control-static.input-lg, .form-control-static.input-sm {
-  padding-right: 0;
-  padding-left: 0; }
-
-.input-sm {
-  height: 30px;
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px; }
-
-select.input-sm {
-  height: 30px;
-  line-height: 30px; }
-
-select[multiple].input-sm {
-  height: auto; }
-
-.input-lg {
-  height: 46px;
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.3333333;
-  border-radius: 6px; }
-
-select.input-lg {
-  height: 46px;
-  line-height: 46px; }
-
-select[multiple].input-lg {
-  height: auto; }
-
-.has-feedback {
-  position: relative; }
-
-.has-feedback .form-control {
-  padding-right: 42.5px; }
-
-.form-control-feedback {
-  position: absolute;
-  top: 0;
-  right: 0;
-  z-index: 2;
-  display: block;
-  width: 34px;
-  height: 34px;
-  line-height: 34px;
-  text-align: center;
-  pointer-events: none; }
-
-.input-lg + .form-control-feedback, .input-group-lg + .form-control-feedback, .form-group-lg .form-control + .form-control-feedback {
-  width: 46px;
-  height: 46px;
-  line-height: 46px; }
-
-.input-sm + .form-control-feedback, .input-group-sm + .form-control-feedback, .form-group-sm .form-control + .form-control-feedback {
-  width: 30px;
-  height: 30px;
-  line-height: 30px; }
-
-.has-success .help-block, .has-success .control-label {
-  color: #3c763d; }
-
-.has-success .form-control {
-  border-color: #3c763d;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); }
-
-.has-success .form-control:focus {
-  border-color: #2b542c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; }
-
-.has-success .form-control-feedback {
-  color: #3c763d; }
-
-.has-warning .help-block, .has-warning .control-label {
-  color: #8a6d3b; }
-
-.has-warning .form-control {
-  border-color: #8a6d3b;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); }
-
-.has-warning .form-control:focus {
-  border-color: #66512c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; }
-
-.has-warning .form-control-feedback {
-  color: #8a6d3b; }
-
-.has-error .help-block, .has-error .control-label {
-  color: #a94442; }
-
-.has-error .form-control {
-  border-color: #a94442;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); }
-
-.has-error .form-control:focus {
-  border-color: #843534;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; }
-
-.has-error .form-control-feedback {
-  color: #a94442; }
-
-.has-feedback label ~ .form-control-feedback {
-  top: 25px; }
-
-.has-feedback label.sr-only ~ .form-control-feedback {
-  top: 0; }
-
-.help-block {
-  display: block;
-  margin-top: 5px;
-  margin-bottom: 10px;
-  color: #737373; }
-
-@media (min-width: 768px) {
-  .form-inline .form-group {
-    display: inline-block;
-    margin-bottom: 0;
-    vertical-align: middle; }
-  .form-inline .form-control {
-    display: inline-block;
-    width: auto;
-    vertical-align: middle; }
-  .form-inline .form-control-static {
-    display: inline-block; }
-  .form-inline .input-group {
-    display: inline-table;
-    vertical-align: middle; }
-  .form-inline .input-group .input-group-btn, .form-inline .input-group .form-control {
-    width: auto; }
-  .form-inline .input-group > .form-control {
-    width: 100%; }
-  .form-inline .control-label {
-    margin-bottom: 0;
-    vertical-align: middle; }
-  .form-inline .has-feedback .form-control-feedback {
-    top: 0; } }
-
-.form-horizontal .form-group {
-  margin-right: -15px;
-  margin-left: -15px; }
-
-@media (min-width: 768px) {
-  .form-horizontal .control-label {
-    padding-top: 7px;
-    margin-bottom: 0;
-    text-align: right; } }
-
-.form-horizontal .has-feedback .form-control-feedback {
-  right: 15px; }
-
-@media (min-width: 768px) {
-  .form-horizontal .form-group-lg .control-label {
-    padding-top: 14.333333px;
-    font-size: 18px; } }
-
-@media (min-width: 768px) {
-  .form-horizontal .form-group-sm .control-label {
-    padding-top: 6px;
-    font-size: 12px; } }
-
-.btn {
-  display: inline-block;
-  padding: 6px 12px;
-  margin-bottom: 0;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 1.42857143;
-  text-align: center;
-  white-space: nowrap;
-  vertical-align: middle;
-  -ms-touch-action: manipulation;
-  touch-action: manipulation;
-  cursor: pointer;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-  background-image: none;
-  border: 1px solid transparent;
-  border-radius: 4px; }
-
-.btn:focus, .btn:active:focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn.active.focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px; }
-
-.btn:hover, .btn:focus, .btn.focus {
-  color: #333;
-  text-decoration: none; }
-
-.btn:active, .btn.active {
-  background-image: none;
-  outline: 0;
-  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); }
-
-.btn.disabled, .btn[disabled] {
-  cursor: not-allowed;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-  box-shadow: none;
-  opacity: .65; }
-
-a.btn.disabled {
-  pointer-events: none; }
-
-.btn-default {
-  color: #333;
-  background-color: #fff;
-  border-color: #ccc; }
-
-.btn-default:focus, .btn-default.focus {
-  color: #333;
-  background-color: #e6e6e6;
-  border-color: #8c8c8c; }
-
-.btn-default:hover {
-  color: #333;
-  background-color: #e6e6e6;
-  border-color: #adadad; }
-
-.btn-default:active, .btn-default.active {
-  color: #333;
-  background-color: #e6e6e6;
-  border-color: #adadad; }
-
-.btn-default:active:hover, .btn-default.active:hover, .btn-default:active:focus, .btn-default.active:focus, .btn-default:active.focus, .btn-default.active.focus {
-  color: #333;
-  background-color: #d4d4d4;
-  border-color: #8c8c8c; }
-
-.btn-default:active, .btn-default.active {
-  background-image: none; }
-
-.btn-default.disabled, .btn-default[disabled], .btn-default.disabled:hover, .btn-default[disabled]:hover, .btn-default.disabled:focus, .btn-default[disabled]:focus, .btn-default.disabled.focus, .btn-default[disabled].focus, .btn-default.disabled:active, .btn-default[disabled]:active, .btn-default.disabled.active, .btn-default[disabled].active {
-  background-color: #fff;
-  border-color: #ccc; }
-
-.btn-primary {
-  color: #fff;
-  background-color: #337ab7;
-  border-color: #2e6da4; }
-
-.btn-primary:focus, .btn-primary.focus {
-  color: #fff;
-  background-color: #286090;
-  border-color: #122b40; }
-
-.btn-primary:hover {
-  color: #fff;
-  background-color: #286090;
-  border-color: #204d74; }
-
-.btn-primary:active, .btn-primary.active {
-  color: #fff;
-  background-color: #286090;
-  border-color: #204d74; }
-
-.btn-primary:active:hover, .btn-primary.active:hover, .btn-primary:active:focus, .btn-primary.active:focus, .btn-primary:active.focus, .btn-primary.active.focus {
-  color: #fff;
-  background-color: #204d74;
-  border-color: #122b40; }
-
-.btn-primary:active, .btn-primary.active {
-  background-image: none; }
-
-.btn-primary.disabled, .btn-primary[disabled], .btn-primary.disabled:hover, .btn-primary[disabled]:hover, .btn-primary.disabled:focus, .btn-primary[disabled]:focus, .btn-primary.disabled.focus, .btn-primary[disabled].focus, .btn-primary.disabled:active, .btn-primary[disabled]:active, .btn-primary.disabled.active, .btn-primary[disabled].active {
-  background-color: #337ab7;
-  border-color: #2e6da4; }
-
-.btn-success {
-  color: #fff;
-  background-color: #5cb85c;
-  border-color: #4cae4c; }
-
-.btn-success:focus, .btn-success.focus {
-  color: #fff;
-  background-color: #449d44;
-  border-color: #255625; }
-
-.btn-success:hover {
-  color: #fff;
-  background-color: #449d44;
-  border-color: #398439; }
-
-.btn-success:active, .btn-success.active {
-  color: #fff;
-  background-color: #449d44;
-  border-color: #398439; }
-
-.btn-success:active:hover, .btn-success.active:hover, .btn-success:active:focus, .btn-success.active:focus, .btn-success:active.focus, .btn-success.active.focus {
-  color: #fff;
-  background-color: #398439;
-  border-color: #255625; }
-
-.btn-success:active, .btn-success.active {
-  background-image: none; }
-
-.btn-success.disabled, .btn-success[disabled], .btn-success.disabled:hover, .btn-success[disabled]:hover, .btn-success.disabled:focus, .btn-success[disabled]:focus, .btn-success.disabled.focus, .btn-success[disabled].focus, .btn-success.disabled:active, .btn-success[disabled]:active, .btn-success.disabled.active, .btn-success[disabled].active {
-  background-color: #5cb85c;
-  border-color: #4cae4c; }
-
-.btn-info {
-  color: #fff;
-  background-color: #5bc0de;
-  border-color: #46b8da; }
-
-.btn-info:focus, .btn-info.focus {
-  color: #fff;
-  background-color: #31b0d5;
-  border-color: #1b6d85; }
-
-.btn-info:hover {
-  color: #fff;
-  background-color: #31b0d5;
-  border-color: #269abc; }
-
-.btn-info:active, .btn-info.active {
-  color: #fff;
-  background-color: #31b0d5;
-  border-color: #269abc; }
-
-.btn-info:active:hover, .btn-info.active:hover, .btn-info:active:focus, .btn-info.active:focus, .btn-info:active.focus, .btn-info.active.focus {
-  color: #fff;
-  background-color: #269abc;
-  border-color: #1b6d85; }
-
-.btn-info:active, .btn-info.active {
-  background-image: none; }
-
-.btn-info.disabled, .btn-info[disabled], .btn-info.disabled:hover, .btn-info[disabled]:hover, .btn-info.disabled:focus, .btn-info[disabled]:focus, .btn-info.disabled.focus, .btn-info[disabled].focus, .btn-info.disabled:active, .btn-info[disabled]:active, .btn-info.disabled.active, .btn-info[disabled].active {
-  background-color: #5bc0de;
-  border-color: #46b8da; }
-
-.btn-warning {
-  color: #fff;
-  background-color: #f0ad4e;
-  border-color: #eea236; }
-
-.btn-warning:focus, .btn-warning.focus {
-  color: #fff;
-  background-color: #ec971f;
-  border-color: #985f0d; }
-
-.btn-warning:hover {
-  color: #fff;
-  background-color: #ec971f;
-  border-color: #d58512; }
-
-.btn-warning:active, .btn-warning.active {
-  color: #fff;
-  background-color: #ec971f;
-  border-color: #d58512; }
-
-.btn-warning:active:hover, .btn-warning.active:hover, .btn-warning:active:focus, .btn-warning.active:focus, .btn-warning:active.focus, .btn-warning.active.focus {
-  color: #fff;
-  background-color: #d58512;
-  border-color: #985f0d; }
-
-.btn-warning:active, .btn-warning.active {
-  background-image: none; }
-
-.btn-warning.disabled, .btn-warning[disabled], .btn-warning.disabled:hover, .btn-warning[disabled]:hover, .btn-warning.disabled:focus, .btn-warning[disabled]:focus, .btn-warning.disabled.focus, .btn-warning[disabled].focus, .btn-warning.disabled:active, .btn-warning[disabled]:active, .btn-warning.disabled.active, .btn-warning[disabled].active {
-  background-color: #f0ad4e;
-  border-color: #eea236; }
-
-.btn-danger {
-  color: #fff;
-  background-color: #d9534f;
-  border-color: #d43f3a; }
-
-.btn-danger:focus, .btn-danger.focus {
-  color: #fff;
-  background-color: #c9302c;
-  border-color: #761c19; }
-
-.btn-danger:hover {
-  color: #fff;
-  background-color: #c9302c;
-  border-color: #ac2925; }
-
-.btn-danger:active, .btn-danger.active {
-  color: #fff;
-  background-color: #c9302c;
-  border-color: #ac2925; }
-
-.btn-danger:active:hover, .btn-danger.active:hover, .btn-danger:active:focus, .btn-danger.active:focus, .btn-danger:active.focus, .btn-danger.active.focus {
-  color: #fff;
-  background-color: #ac2925;
-  border-color: #761c19; }
-
-.btn-danger:active, .btn-danger.active {
-  background-image: none; }
-
-.btn-danger.disabled, .btn-danger[disabled], .btn-danger.disabled:hover, .btn-danger[disabled]:hover, .btn-danger.disabled:focus, .btn-danger[disabled]:focus, .btn-danger.disabled.focus, .btn-danger[disabled].focus, .btn-danger.disabled:active, .btn-danger[disabled]:active, .btn-danger.disabled.active, .btn-danger[disabled].active {
-  background-color: #d9534f;
-  border-color: #d43f3a; }
-
-.btn-link {
-  font-weight: normal;
-  color: #337ab7;
-  border-radius: 0; }
-
-.btn-link, .btn-link:active, .btn-link.active, .btn-link[disabled] {
-  background-color: transparent;
-  -webkit-box-shadow: none;
-  box-shadow: none; }
-
-.btn-link, .btn-link:hover, .btn-link:focus, .btn-link:active {
-  border-color: transparent; }
-
-.btn-link:hover, .btn-link:focus {
-  color: #23527c;
-  text-decoration: underline;
-  background-color: transparent; }
-
-.btn-link[disabled]:hover, .btn-link[disabled]:focus {
-  color: #777;
-  text-decoration: none; }
-
-.btn-lg, .btn-group-lg > .btn {
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.3333333;
-  border-radius: 6px; }
-
-.btn-sm, .btn-group-sm > .btn {
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px; }
-
-.btn-xs, .btn-group-xs > .btn {
-  padding: 1px 5px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px; }
-
-.btn-block {
-  display: block;
-  width: 100%; }
-
-.btn-block + .btn-block {
-  margin-top: 5px; }
-
-input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="button"].btn-block {
-  width: 100%; }
-
-.collapse {
-  display: none; }
-
-.collapse.in {
-  display: block; }
-
-tr.collapse.in {
-  display: table-row; }
-
-tbody.collapse.in {
-  display: table-row-group; }
-
-.open > a {
-  outline: 0; }
-
-.btn-group {
-  position: relative;
-  display: inline-block;
-  vertical-align: middle; }
-
-.btn-group > .btn {
-  position: relative;
-  float: left; }
-
-.btn-group > .btn:hover, .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active {
-  z-index: 2; }
-
-.btn-group .btn + .btn, .btn-group .btn + .btn-group, .btn-group .btn-group + .btn, .btn-group .btn-group + .btn-group {
-  margin-left: -1px; }
-
-.btn-group > .btn:first-child {
-  margin-left: 0; }
-
-.btn-group > .btn:last-child:not(:first-child) {
-  border-top-left-radius: 0;
-  border-bottom-left-radius: 0; }
-
-.btn-group > .btn-group {
-  float: left; }
-
-.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
-  border-radius: 0; }
-
-.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child {
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 0; }
-
-.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
-  border-top-left-radius: 0;
-  border-bottom-left-radius: 0; }
-
-[data-toggle="buttons"] > .btn input[type="radio"], [data-toggle="buttons"] > .btn-group > .btn input[type="radio"], [data-toggle="buttons"] > .btn input[type="checkbox"], [data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
-  position: absolute;
-  clip: rect(0, 0, 0, 0);
-  pointer-events: none; }
-
-.input-group {
-  position: relative;
-  display: table;
-  border-collapse: separate; }
-
-.input-group[class*="col-"] {
-  float: none;
-  padding-right: 0;
-  padding-left: 0; }
-
-.input-group .form-control {
-  position: relative;
-  z-index: 2;
-  float: left;
-  width: 100%;
-  margin-bottom: 0; }
-
-.input-group-lg > .form-control, .input-group-lg > .input-group-btn > .btn {
-  height: 46px;
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.3333333;
-  border-radius: 6px; }
-
-select.input-group-lg > .form-control, select.input-group-lg > .input-group-btn > .btn {
-  height: 46px;
-  line-height: 46px; }
-
-select[multiple].input-group-lg > .form-control, select[multiple].input-group-lg > .input-group-btn > .btn {
-  height: auto; }
-
-.input-group-sm > .form-control, .input-group-sm > .input-group-btn > .btn {
-  height: 30px;
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px; }
-
-select.input-group-sm > .form-control, select.input-group-sm > .input-group-btn > .btn {
-  height: 30px;
-  line-height: 30px; }
-
-select[multiple].input-group-sm > .form-control, select[multiple].input-group-sm > .input-group-btn > .btn {
-  height: auto; }
-
-.input-group-btn, .input-group .form-control {
-  display: table-cell; }
-
-.input-group-btn:not(:first-child):not(:last-child), .input-group .form-control:not(:first-child):not(:last-child) {
-  border-radius: 0; }
-
-.input-group-btn {
-  width: 1%;
-  white-space: nowrap;
-  vertical-align: middle; }
-
-.input-group .form-control:first-child, .input-group-btn:first-child > .btn, .input-group-btn:first-child > .btn-group > .btn, .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 0; }
-
-.input-group .form-control:last-child, .input-group-btn:last-child > .btn, .input-group-btn:last-child > .btn-group > .btn, .input-group-btn:first-child > .btn:not(:first-child), .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
-  border-top-left-radius: 0;
-  border-bottom-left-radius: 0; }
-
-.input-group-btn {
-  position: relative;
-  font-size: 0;
-  white-space: nowrap; }
-
-.input-group-btn > .btn {
-  position: relative; }
-
-.input-group-btn > .btn + .btn {
-  margin-left: -1px; }
-
-.input-group-btn > .btn:hover, .input-group-btn > .btn:focus, .input-group-btn > .btn:active {
-  z-index: 2; }
-
-.input-group-btn:first-child > .btn, .input-group-btn:first-child > .btn-group {
-  margin-right: -1px; }
-
-.input-group-btn:last-child > .btn, .input-group-btn:last-child > .btn-group {
-  z-index: 2;
-  margin-left: -1px; }
-
-.nav {
-  padding-left: 0;
-  margin-bottom: 0;
-  list-style: none; }
-
-.nav > li {
-  position: relative;
-  display: block; }
-
-.nav > li > a {
-  position: relative;
-  display: block;
-  padding: 10px 15px; }
-
-.nav > li > a:hover, .nav > li > a:focus {
-  text-decoration: none;
-  background-color: #eee; }
-
-.nav > li.disabled > a {
-  color: #777; }
-
-.nav > li.disabled > a:hover, .nav > li.disabled > a:focus {
-  color: #777;
-  text-decoration: none;
-  cursor: not-allowed;
-  background-color: transparent; }
-
-.nav .open > a, .nav .open > a:hover, .nav .open > a:focus {
-  background-color: #eee;
-  border-color: #337ab7; }
-
-.nav > li > a > img {
-  max-width: none; }
-
-.tab-content > .active {
-  display: block; }
-
-.navbar {
-  position: relative;
-  min-height: 50px;
-  margin-bottom: 20px;
-  border: 1px solid transparent; }
-
-@media (min-width: 768px) {
-  .navbar {
-    border-radius: 4px; } }
-
-@media (min-width: 768px) {
-  .navbar-header {
-    float: left; } }
-
-.navbar-collapse {
-  padding-right: 15px;
-  padding-left: 15px;
-  overflow-x: visible;
-  -webkit-overflow-scrolling: touch;
-  border-top: 1px solid transparent;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); }
-
-.navbar-collapse.in {
-  overflow-y: auto; }
-
-@media (min-width: 768px) {
-  .navbar-collapse {
-    width: auto;
-    border-top: 0;
-    -webkit-box-shadow: none;
-    box-shadow: none; }
-  .navbar-collapse.collapse {
-    display: block !important;
-    height: auto !important;
-    padding-bottom: 0;
-    overflow: visible !important; }
-  .navbar-collapse.in {
-    overflow-y: visible; }
-  .navbar-fixed-top .navbar-collapse, .navbar-static-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse {
-    padding-right: 0;
-    padding-left: 0; } }
-
-.navbar-fixed-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse {
-  max-height: 340px; }
-
-@media (max-device-width: 480px) and (orientation: landscape) {
-  .navbar-fixed-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse {
-    max-height: 200px; } }
-
-.container > .navbar-header, .container-fluid > .navbar-header, .container > .navbar-collapse, .container-fluid > .navbar-collapse {
-  margin-right: -15px;
-  margin-left: -15px; }
-
-@media (min-width: 768px) {
-  .container > .navbar-header, .container-fluid > .navbar-header, .container > .navbar-collapse, .container-fluid > .navbar-collapse {
-    margin-right: 0;
-    margin-left: 0; } }
-
-.navbar-static-top {
-  z-index: 1000;
-  border-width: 0 0 1px; }
-
-@media (min-width: 768px) {
-  .navbar-static-top {
-    border-radius: 0; } }
-
-.navbar-fixed-top, .navbar-fixed-bottom {
-  position: fixed;
-  right: 0;
-  left: 0;
-  z-index: 1030; }
-
-@media (min-width: 768px) {
-  .navbar-fixed-top, .navbar-fixed-bottom {
-    border-radius: 0; } }
-
-.navbar-fixed-top {
-  top: 0;
-  border-width: 0 0 1px; }
-
-.navbar-fixed-bottom {
-  bottom: 0;
-  margin-bottom: 0;
-  border-width: 1px 0 0; }
-
-.navbar-brand {
-  float: left;
-  height: 50px;
-  padding: 15px 15px;
-  font-size: 18px;
-  line-height: 20px; }
-
-.navbar-brand:hover, .navbar-brand:focus {
-  text-decoration: none; }
-
-.navbar-brand > img {
-  display: block; }
-
-@media (min-width: 768px) {
-  .navbar > .container .navbar-brand, .navbar > .container-fluid .navbar-brand {
-    margin-left: -15px; } }
-
-.navbar-toggle {
-  position: relative;
-  float: right;
-  padding: 9px 10px;
-  margin-top: 8px;
-  margin-right: 15px;
-  margin-bottom: 8px;
-  background-color: transparent;
-  background-image: none;
-  border: 1px solid transparent;
-  border-radius: 4px; }
-
-.navbar-toggle:focus {
-  outline: 0; }
-
-.navbar-toggle .icon-bar {
-  display: block;
-  width: 22px;
-  height: 2px;
-  border-radius: 1px; }
-
-.navbar-toggle .icon-bar + .icon-bar {
-  margin-top: 4px; }
-
-@media (min-width: 768px) {
-  .navbar-toggle {
-    display: none; } }
-
-.navbar-nav {
-  margin: 7.5px -15px; }
-
-.navbar-nav > li > a {
-  padding-top: 10px;
-  padding-bottom: 10px;
-  line-height: 20px; }
-
-@media (min-width: 768px) {
-  .navbar-nav {
-    float: left;
-    margin: 0; }
-  .navbar-nav > li {
-    float: left; }
-  .navbar-nav > li > a {
-    padding-top: 15px;
-    padding-bottom: 15px; } }
-
-@media (min-width: 768px) {
-  .navbar-right {
-    float: right !important;
-    margin-right: -15px; }
-  .navbar-right ~ .navbar-right {
-    margin-right: 0; } }
-
-.navbar-default {
-  background-color: #f8f8f8;
-  border-color: #e7e7e7; }
-
-.navbar-default .navbar-brand {
-  color: #777; }
-
-.navbar-default .navbar-brand:hover, .navbar-default .navbar-brand:focus {
-  color: #5e5e5e;
-  background-color: transparent; }
-
-.navbar-default .navbar-text {
-  color: #777; }
-
-.navbar-default .navbar-nav > li > a {
-  color: #777; }
-
-.navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus {
-  color: #333;
-  background-color: transparent; }
-
-.navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus {
-  color: #555;
-  background-color: #e7e7e7; }
-
-.navbar-default .navbar-nav > .disabled > a, .navbar-default .navbar-nav > .disabled > a:hover, .navbar-default .navbar-nav > .disabled > a:focus {
-  color: #ccc;
-  background-color: transparent; }
-
-.navbar-default .navbar-toggle {
-  border-color: #ddd; }
-
-.navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus {
-  background-color: #ddd; }
-
-.navbar-default .navbar-toggle .icon-bar {
-  background-color: #888; }
-
-.navbar-default .navbar-collapse, .navbar-default .navbar-form {
-  border-color: #e7e7e7; }
-
-.navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus {
-  color: #555;
-  background-color: #e7e7e7; }
-
-.navbar-default .navbar-link {
-  color: #777; }
-
-.navbar-default .navbar-link:hover {
-  color: #333; }
-
-.navbar-default .btn-link {
-  color: #777; }
-
-.navbar-default .btn-link:hover, .navbar-default .btn-link:focus {
-  color: #333; }
-
-.navbar-default .btn-link[disabled]:hover, .navbar-default .btn-link[disabled]:focus {
-  color: #ccc; }
-
-.navbar-inverse {
-  background-color: #222;
-  border-color: #080808; }
-
-.navbar-inverse .navbar-brand {
-  color: #9d9d9d; }
-
-.navbar-inverse .navbar-brand:hover, .navbar-inverse .navbar-brand:focus {
-  color: #fff;
-  background-color: transparent; }
-
-.navbar-inverse .navbar-text {
-  color: #9d9d9d; }
-
-.navbar-inverse .navbar-nav > li > a {
-  color: #9d9d9d; }
-
-.navbar-inverse .navbar-nav > li > a:hover, .navbar-inverse .navbar-nav > li > a:focus {
-  color: #fff;
-  background-color: transparent; }
-
-.navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:hover, .navbar-inverse .navbar-nav > .active > a:focus {
-  color: #fff;
-  background-color: #080808; }
-
-.navbar-inverse .navbar-nav > .disabled > a, .navbar-inverse .navbar-nav > .disabled > a:hover, .navbar-inverse .navbar-nav > .disabled > a:focus {
-  color: #444;
-  background-color: transparent; }
-
-.navbar-inverse .navbar-toggle {
-  border-color: #333; }
-
-.navbar-inverse .navbar-toggle:hover, .navbar-inverse .navbar-toggle:focus {
-  background-color: #333; }
-
-.navbar-inverse .navbar-toggle .icon-bar {
-  background-color: #fff; }
-
-.navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form {
-  border-color: #101010; }
-
-.navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:hover, .navbar-inverse .navbar-nav > .open > a:focus {
-  color: #fff;
-  background-color: #080808; }
-
-.navbar-inverse .navbar-link {
-  color: #9d9d9d; }
-
-.navbar-inverse .navbar-link:hover {
-  color: #fff; }
-
-.navbar-inverse .btn-link {
-  color: #9d9d9d; }
-
-.navbar-inverse .btn-link:hover, .navbar-inverse .btn-link:focus {
-  color: #fff; }
-
-.navbar-inverse .btn-link[disabled]:hover, .navbar-inverse .btn-link[disabled]:focus {
-  color: #444; }
-
-.label {
-  display: inline;
-  padding: .2em .6em .3em;
-  font-size: 75%;
-  font-weight: bold;
-  line-height: 1;
-  color: #fff;
-  text-align: center;
-  white-space: nowrap;
-  vertical-align: baseline;
-  border-radius: .25em; }
-
-a.label:hover, a.label:focus {
-  color: #fff;
-  text-decoration: none;
-  cursor: pointer; }
-
-.label:empty {
-  display: none; }
-
-.btn .label {
-  position: relative;
-  top: -1px; }
-
-.alert {
-  padding: 15px;
-  margin-bottom: 20px;
-  border: 1px solid transparent;
-  border-radius: 4px; }
-
-.alert h4 {
-  margin-top: 0;
-  color: inherit; }
-
-.alert .alert-link {
-  font-weight: bold; }
-
-.alert > p, .alert > ul {
-  margin-bottom: 0; }
-
-.alert > p + p {
-  margin-top: 5px; }
-
-.alert-success {
-  color: #3c763d;
-  background-color: #dff0d8;
-  border-color: #d6e9c6; }
-
-.alert-success hr {
-  border-top-color: #c9e2b3; }
-
-.alert-success .alert-link {
-  color: #2b542c; }
-
-.alert-info {
-  color: #31708f;
-  background-color: #d9edf7;
-  border-color: #bce8f1; }
-
-.alert-info hr {
-  border-top-color: #a6e1ec; }
-
-.alert-info .alert-link {
-  color: #245269; }
-
-.alert-warning {
-  color: #8a6d3b;
-  background-color: #fcf8e3;
-  border-color: #faebcc; }
-
-.alert-warning hr {
-  border-top-color: #f7e1b5; }
-
-.alert-warning .alert-link {
-  color: #66512c; }
-
-.alert-danger {
-  color: #a94442;
-  background-color: #f2dede;
-  border-color: #ebccd1; }
-
-.alert-danger hr {
-  border-top-color: #e4b9c0; }
-
-.alert-danger .alert-link {
-  color: #843534; }
-
-.media {
-  margin-top: 15px; }
-
-.media:first-child {
-  margin-top: 0; }
-
-.media, .media-body {
-  overflow: hidden;
-  zoom: 1; }
-
-.media-body {
-  width: 10000px; }
-
-.media-object {
-  display: block; }
-
-.media-right, .media > .pull-right {
-  padding-left: 10px; }
-
-.media-left, .media > .pull-left {
-  padding-right: 10px; }
-
-.media-left, .media-right, .media-body {
-  display: table-cell;
-  vertical-align: top; }
-
-.media-middle {
-  vertical-align: middle; }
-
-.media-bottom {
-  vertical-align: bottom; }
-
-.media-heading {
-  margin-top: 0;
-  margin-bottom: 5px; }
-
-.media-list {
-  padding-left: 0;
-  list-style: none; }
-
-.close {
-  float: right;
-  font-size: 21px;
-  font-weight: bold;
-  line-height: 1;
-  color: #000;
-  text-shadow: 0 1px 0 #fff;
-  filter: alpha(opacity=20);
-  opacity: .2; }
-
-.close:hover, .close:focus {
-  color: #000;
-  text-decoration: none;
-  cursor: pointer;
-  filter: alpha(opacity=50);
-  opacity: .5; }
-
-button.close {
-  -webkit-appearance: none;
-  padding: 0;
-  cursor: pointer;
-  background: transparent;
-  border: 0; }
-
-.dl-horizontal dd:before, .dl-horizontal dd:after, .container:before, .container:after, .container-fluid:before, .container-fluid:after, .row:before, .row:after, .form-horizontal .form-group:before, .form-horizontal .form-group:after, .nav:before, .nav:after, .navbar:before, .navbar:after, .navbar-header:before, .navbar-header:after, .navbar-collapse:before, .navbar-collapse:after, .panel-body:before, .panel-body:after {
-  display: table;
-  content: " "; }
-
-.dl-horizontal dd:after, .container:after, .container-fluid:after, .row:after, .form-horizontal .form-group:after, .nav:after, .navbar:after, .navbar-header:after, .navbar-collapse:after, .panel-body:after {
-  clear: both; }
-
-.center-block {
-  display: block;
-  margin-right: auto;
-  margin-left: auto; }
-
-.pull-right {
-  float: right !important; }
-
-.pull-left {
-  float: left !important; }
-
-.hide {
-  display: none !important; }
-
-.show {
-  display: block !important; }
-
-.text-hide {
-  font: 0/0 a;
-  color: transparent;
-  text-shadow: none;
-  background-color: transparent;
-  border: 0; }
-
-.hidden {
-  display: none !important; }
-
-@-ms-viewport {
-  width: device-width; }
-
-.visible-xs, .visible-sm, .visible-md, .visible-lg {
-  display: none !important; }
-
-.visible-xs-block, .visible-xs-inline, .visible-xs-inline-block, .visible-sm-block, .visible-sm-inline, .visible-sm-inline-block, .visible-md-block, .visible-md-inline, .visible-md-inline-block, .visible-lg-block, .visible-lg-inline, .visible-lg-inline-block {
-  display: none !important; }
-
-@media (max-width: 767px) {
-  .visible-xs {
-    display: block !important; }
-  table.visible-xs {
-    display: table !important; }
-  tr.visible-xs {
-    display: table-row !important; }
-  th.visible-xs, td.visible-xs {
-    display: table-cell !important; } }
-
-@media (max-width: 767px) {
-  .visible-xs-block {
-    display: block !important; } }
-
-@media (max-width: 767px) {
-  .visible-xs-inline {
-    display: inline !important; } }
-
-@media (max-width: 767px) {
-  .visible-xs-inline-block {
-    display: inline-block !important; } }
-
-@media (min-width: 768px) and (max-width: 991px) {
-  .visible-sm {
-    display: block !important; }
-  table.visible-sm {
-    display: table !important; }
-  tr.visible-sm {
-    display: table-row !important; }
-  th.visible-sm, td.visible-sm {
-    display: table-cell !important; } }
-
-@media (min-width: 768px) and (max-width: 991px) {
-  .visible-sm-block {
-    display: block !important; } }
-
-@media (min-width: 768px) and (max-width: 991px) {
-  .visible-sm-inline {
-    display: inline !important; } }
-
-@media (min-width: 768px) and (max-width: 991px) {
-  .visible-sm-inline-block {
-    display: inline-block !important; } }
-
-@media (min-width: 992px) and (max-width: 1199px) {
-  .visible-md {
-    display: block !important; }
-  table.visible-md {
-    display: table !important; }
-  tr.visible-md {
-    display: table-row !important; }
-  th.visible-md, td.visible-md {
-    display: table-cell !important; } }
-
-@media (min-width: 992px) and (max-width: 1199px) {
-  .visible-md-block {
-    display: block !important; } }
-
-@media (min-width: 992px) and (max-width: 1199px) {
-  .visible-md-inline {
-    display: inline !important; } }
-
-@media (min-width: 992px) and (max-width: 1199px) {
-  .visible-md-inline-block {
-    display: inline-block !important; } }
-
-@media (max-width: 767px) {
-  .hidden-xs {
-    display: none !important; } }
-
-@media (min-width: 768px) and (max-width: 991px) {
-  .hidden-sm {
-    display: none !important; } }
-
-@media (min-width: 992px) and (max-width: 1199px) {
-  .hidden-md {
-    display: none !important; } }
-
-@media (min-width: 1200px) {
-  .hidden-lg {
-    display: none !important; } }
-
-@media print {
-  .hidden-print {
-    display: none !important; } }
diff --git a/css/docs.css b/css/docs.css
deleted file mode 100644
index 1bea588..0000000
--- a/css/docs.css
+++ /dev/null
@@ -1,126 +0,0 @@
-.doc-container {
-  padding-top: 28px; }
-
-.doc-content pre, .doc-content pre code {
-  overflow: auto;
-  white-space: pre;
-  word-wrap: normal; }
-
-.doc-content img {
-  max-width: 847.5px; }
-
-.doc-content code {
-  background-color: #e0e0e0; }
-
-.doc-content pre code {
-  background-color: transparent; }
-
-.doc-content table,
-.doc-content pre {
-  margin: 35px 0 35px 0; }
-
-.doc-content table,
-.doc-content table > thead > tr > th,
-.doc-content table > tbody > tr > th,
-.doc-content table > tfoot > tr > th,
-.doc-content table > thead > tr > td,
-.doc-content table > tbody > tr > td,
-.doc-content table > tfoot > tr > td {
-  border: 1px solid #dddddd; }
-
-.doc-content table > thead > tr > th,
-.doc-content table > thead > tr > td {
-  border-bottom-width: 2px; }
-
-.doc-content table > tbody > tr:nth-child(odd) > td,
-.doc-content table > tbody > tr:nth-child(odd) > th {
-  background-color: #f9f9f9; }
-
-.doc-content table > tbody > tr:hover > td,
-.doc-content table > tbody > tr:hover > th,
-.doc-content table > tbody > tr:focus > td,
-.doc-content table > tbody > tr:focus > th {
-  background-color: #d5d5d5; }
-
-.doc-content table code {
-  background-color: transparent; }
-
-.doc-content td, .doc-content th {
-  padding: 5px; }
-
-.doc-content .note {
-  position: relative;
-  display: block;
-  padding: 10px 14px 10px 42px;
-  margin: 35px 0 35px 0;
-  background: light-gray;
-  border-radius: 3px;
-  line-height: 170%; }
-  .doc-content .note:after {
-    content: '';
-    position: absolute;
-    top: 2px;
-    left: 0;
-    bottom: 0;
-    width: 42px;
-    background-position: 10px 9px;
-    background-size: 22px 22px;
-    background-repeat: no-repeat; }
-  .doc-content .note.info {
-    background: rgba(51, 200, 208, 0.26);
-    border-left: 2px solid rgba(51, 200, 208, 0.5); }
-    .doc-content .note.info:after {
-      background-image: url(/img/note-info.svg); }
-  .doc-content .note.caution {
-    background: rgba(249, 169, 86, 0.26);
-    border-left: 2px solid rgba(249, 169, 86, 0.5); }
-    .doc-content .note.caution:after {
-      background-image: url(/img/note-caution.svg); }
-
-.toc h2 {
-  font-size: 28px; }
-
-.toc ul {
-  list-style: none;
-  list-style-position: inside;
-  color: #4460de;
-  line-height: 1.9em; }
-  .toc ul li {
-    color: #999999;
-    font-weight: 600;
-    list-style-type: none;
-    margin-left: 0; }
-    .toc ul li a {
-      color: #4460de;
-      display: block; }
-      .toc ul li a:hover {
-        text-decoration: underline; }
-  .toc ul ul {
-    margin-top: 0;
-    margin-bottom: 0;
-    padding-left: 20px; }
-
-.searchbox {
-  position: relative;
-  height: 26px;
-  margin-top: 17px; }
-  .searchbox .gsc-search-button, .searchbox .searchbox .gsib_b {
-    display: none; }
-  .searchbox input {
-    background: white !important;
-    width: 100% !important;
-    padding: 5px 8px !important;
-    font-size: 13px !important;
-    border: 1px solid #dfdfdf !important;
-    height: 30px !important;
-    text-indent: 0 !important;
-    border-radius: 2px !important; }
-    .searchbox input:hover {
-      border-color: #c4c4c4 !important; }
-    .searchbox input:focus {
-      border-color: #c4c4c4 !important; }
-  .searchbox form, .searchbox table, .searchbox tbody, .searchbox tr, .searchbox td, .searchbox .gsc-input-box {
-    border: none !important;
-    padding: 0 !important;
-    margin: 0 !important;
-    background: none !important; }
diff --git a/css/footer.css b/css/footer.css
deleted file mode 100644
index 4c22d96..0000000
--- a/css/footer.css
+++ /dev/null
@@ -1,29 +0,0 @@
-footer {
-  line-height: 1.4em; }
-  footer a:hover {
-    color: #4460de; }
-  footer .license {
-    margin-top: 12px;
-    font-size: 11px;
-    color: #aaa;
-    line-height: 1.4em; }
-    footer .license a:hover {
-      text-decoration: underline; }
-
-footer .license {
-  margin-top: 12px;
-  font-size: 11px;
-  color: #aaa; }
-  footer .license a:hover {
-    color: #4460de;
-    text-decoration: underline; }
-
-.druid-footer {
-  padding: 32px 0 48px 0;
-  background-color: #f3f3f3;
-  border-top: 1px solid white;
-  margin-top: 50px; }
-  .druid-footer .fa, .druid-footer .fab, .druid-footer .fas {
-    font-size: 18px;
-    margin: 6px 0;
-    color: #4460de; }
diff --git a/css/header.css b/css/header.css
deleted file mode 100644
index 0fb02ec..0000000
--- a/css/header.css
+++ /dev/null
@@ -1,110 +0,0 @@
-.top-navigator {
-  background: #1C1C26;
-  height: 54px;
-  position: fixed;
-  top: 0;
-  left: 0;
-  right: 0;
-  z-index: 100; }
-  .top-navigator .left-cont .druid-logo {
-    display: inline-block;
-    height: 54px;
-    width: 120px;
-    margin-bottom: -2px;
-    background-position: center;
-    background-image: url("/img/druid_nav.png");
-    background-size: 120px auto;
-    background-repeat: no-repeat; }
-  .top-navigator .right-cont {
-    position: absolute;
-    top: 0;
-    right: 15px; }
-    .top-navigator .right-cont ul {
-      margin: 0; }
-    .top-navigator .right-cont li {
-      line-height: 54px;
-      display: inline-block;
-      font-size: 15px;
-      margin: 0; }
-      .top-navigator .right-cont li.active a {
-        color: white; }
-      .top-navigator .right-cont li.active:after {
-        content: '';
-        position: absolute;
-        height: 2px;
-        bottom: 0;
-        left: 0;
-        right: 0; }
-      .top-navigator .right-cont li a {
-        display: block;
-        padding-left: 8px;
-        padding-right: 8px;
-        color: #9caeff; }
-        .top-navigator .right-cont li a:hover {
-          text-decoration: none;
-          color: white; }
-      .top-navigator .right-cont li.button-link {
-        margin-left: 8px; }
-        .top-navigator .right-cont li.button-link a {
-          display: inline-block;
-          height: 32px;
-          line-height: 32px;
-          margin-top: 9px;
-          background: #9caeff;
-          border-radius: 2px;
-          padding: 0 10px;
-          color: #1C1C26;
-          font-weight: 600;
-          min-width: 106px;
-          text-align: center; }
-          .top-navigator .right-cont li.button-link a:hover {
-            background: white; }
-  .top-navigator .action-button {
-    position: absolute;
-    top: 10px;
-    right: 30px;
-    padding: 8px 16px;
-    text-align: center;
-    border-radius: 2px;
-    cursor: pointer;
-    display: none;
-    color: #9caeff;
-    font-size: 18px;
-    line-height: 18px;
-    font-weight: 600; }
-    .top-navigator .action-button .fa {
-      margin-right: 6px; }
-    .top-navigator .action-button:hover {
-      color: white; }
-  .top-navigator .header-dropdown .header-dropdown-menu {
-    display: none;
-    z-index: 100;
-    position: absolute;
-    top: 54px;
-    left: 0;
-    width: 200px;
-    background: #3a3a52;
-    box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.18);
-    overflow: visible; }
-  .top-navigator .header-dropdown:hover .header-dropdown-menu {
-    display: block; }
-
-@media (max-width: 840px) {
-  body {
-    margin-top: 0; }
-  .top-navigator {
-    height: auto;
-    min-height: 54px;
-    position: relative; }
-    .top-navigator .right-cont {
-      position: relative;
-      display: block;
-      display: none;
-      padding-bottom: 28px; }
-      .top-navigator .right-cont ul {
-        margin-left: 20px; }
-      .top-navigator .right-cont li {
-        display: block;
-        line-height: 42px; }
-    .top-navigator .action-button.menu-icon {
-      display: block; } }
diff --git a/css/index.css b/css/index.css
deleted file mode 100644
index 244ec40..0000000
--- a/css/index.css
+++ /dev/null
@@ -1,50 +0,0 @@
-.druid-masthead {
-  padding: 40px 20px 32px 20px;
-  background-color: #3b3b50;
-  text-align: center;
-  margin: 0 auto 20px;
-  margin-bottom: 14px;
-  color: white;
-  overflow: hidden;
-  background-image: url("/img/watermark-dark.png");
-  background-size: 800px auto;
-  background-repeat: no-repeat;
-  background-position: 26% -76px; }
-  .druid-masthead .button {
-    display: inline-block;
-    min-width: 155px;
-    margin: 6px;
-    font-size: 1.1em;
-    line-height: 1.4em;
-    font-weight: 600;
-    padding: 9px 12px;
-    border-radius: 2px;
-    background: #9caeff;
-    color: #1C1C26;
-    transition: background-color 0.1s ease; }
-    .druid-masthead .button .fa, .druid-masthead .button .fab {
-      font-size: 16px;
-      margin-right: 3px; }
-    .druid-masthead .button:hover, .druid-masthead .button:active {
-      background: white;
-      text-decoration: none; }
-  .druid-masthead .lead {
-    font-size: 1.7em;
-    line-height: 1.7em;
-    font-weight: 600;
-    margin-top: 8px;
-    margin-bottom: 26px;
-    max-width: 820px;
-    margin-left: auto;
-    margin-right: auto; }
-  .druid-masthead b {
-    font-weight: 700; }
-
-.bottom-news {
-  display: block; }
-
-@media (max-width: 500px) {
-  .druid-masthead .lead {
-    font-size: 1.4em; }
-  .druid-masthead .button {
-    min-width: 130px; } }
diff --git a/css/news-list.css b/css/news-list.css
deleted file mode 100644
index dfea42e..0000000
--- a/css/news-list.css
+++ /dev/null
@@ -1,63 +0,0 @@
-.item-list {
-  margin-top: 6px;
-  padding: 0 10px; }
-  .item-list h3 {
-    font-size: 22px; }
-  .item-list a {
-    display: block;
-    line-height: 1.5em; }
-    .item-list a:hover {
-      text-decoration: none; }
-      .item-list a:hover span.title {
-        text-decoration: underline; }
-  .item-list .text-muted {
-    color: #888;
-    font-weight: 400;
-    font-size: 14px;
-    line-height: 15px; }
-  .item-list .event {
-    position: relative;
-    padding-left: 42px;
-    margin-bottom: 12px; }
-  .item-list .mini-cal {
-    position: absolute;
-    top: 4px;
-    left: 0;
-    background: #4460de;
-    padding: 2px;
-    width: 32px;
-    text-align: center;
-    border-radius: 2px;
-    padding-top: 16px; }
-  .item-list .date-month {
-    position: absolute;
-    top: 0;
-    left: 0;
-    right: 0;
-    padding: 1px;
-    background: #4460de;
-    border-radius: 2px;
-    color: white;
-    font-size: 10px;
-    line-height: 14px;
-    font-weight: 600;
-    text-transform: uppercase; }
-  .item-list .date-day {
-    background: white;
-    color: #2442cb;
-    font-size: 16px;
-    font-weight: 600;
-    line-height: 19px; }
-  .item-list .btn-default {
-    border-color: #4460de;
-    background: #4460de;
-    color: white;
-    font-weight: 600;
-    display: inline-block;
-    margin-top: 10px;
-    margin-bottom: 10px;
-    padding: 3px 8px; }
-    .item-list .btn-default:hover, .item-list .btn-default:active {
-      background-color: #4460de;
-      border-color: #4460de;
-      color: #fff; }
diff --git a/css/reset.css b/css/reset.css
deleted file mode 100644
index 6d44268..0000000
--- a/css/reset.css
+++ /dev/null
@@ -1,44 +0,0 @@
-html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, menu, nav, output, ruby, section, summary, time, mark, audio, video {
-  margin: 0;
-  padding: 0;
-  border: 0;
-  font-size: 100%;
-  font: inherit;
-  vertical-align: baseline; }
-
-article, aside, details, figcaption, figure, footer, header, menu, nav, section {
-  display: block; }
-
-body {
-  line-height: 1; }
-
-ol, ul {
-  list-style: none; }
-
-table {
-  border-collapse: collapse;
-  border-spacing: 0; }
-
-* {
-  box-sizing: border-box;
-  vertical-align: top; }
-
-body * {
-  position: relative; }
-
-a {
-  text-decoration: inherit;
-  color: inherit;
-  cursor: inherit; }
-
-div, span {
-  cursor: inherit; }
-
-text {
-  cursor: default; }
-
-button, input, textarea {
-  border: 0;
-  margin: 0; }
-  button:focus, input:focus, textarea:focus {
-    outline: none; }
diff --git a/css/syntax.css b/css/syntax.css
deleted file mode 100644
index 03b781b..0000000
--- a/css/syntax.css
+++ /dev/null
@@ -1,281 +0,0 @@
-.hll {
-  background-color: #ffffcc; }
-
-.c {
-  color: #93a1a1;
-  font-style: italic; }
-
-/* Comment */
-.err {
-  color: #dc322f; }
-
-/* Error */
-.g {
-  color: #657b83; }
-
-/* Generic */
-.k {
-  color: #859900; }
-
-/* Keyword */
-.l {
-  color: #657b83; }
-
-/* Literal */
-.n {
-  color: #586e75; }
-
-/* Name */
-.o {
-  color: #657b83; }
-
-/* Operator */
-.x {
-  color: #657b83; }
-
-/* Other */
-.p {
-  color: #657b83; }
-
-/* Punctuation */
-.cm {
-  color: #93a1a1;
-  font-style: italic; }
-
-/* Comment.Multiline */
-.cp {
-  color: #93a1a1;
-  font-style: italic; }
-
-/* Comment.Preproc */
-.c1 {
-  color: #93a1a1;
-  font-style: italic; }
-
-/* Comment.Single */
-.cs {
-  color: #93a1a1;
-  font-style: italic; }
-
-/* Comment.Special */
-.gd {
-  color: #657b83; }
-
-/* Generic.Deleted */
-.ge {
-  color: #657b83; }
-
-/* Generic.Emph */
-.gr {
-  color: #657b83; }
-
-/* Generic.Error */
-.gh {
-  color: #657b83; }
-
-/* Generic.Heading */
-.gi {
-  color: #657b83; }
-
-/* Generic.Inserted */
-.go {
-  color: #657b83; }
-
-/* Generic.Output */
-.gp {
-  color: #657b83; }
-
-/* Generic.Prompt */
-.gs {
-  color: #657b83; }
-
-/* Generic.Strong */
-.gu {
-  color: #657b83; }
-
-/* Generic.Subheading */
-.gt {
-  color: #657b83; }
-
-/* Generic.Traceback */
-.kc {
-  color: #859900; }
-
-/* Keyword.Constant */
-.kd {
-  color: #859900; }
-
-/* Keyword.Declaration */
-.kn {
-  color: #cb4b16; }
-
-/* Keyword.Namespace */
-.kp {
-  color: #cb4b16; }
-
-/* Keyword.Pseudo */
-.kr {
-  color: #859900; }
-
-/* Keyword.Reserved */
-.kt {
-  color: #859900; }
-
-/* Keyword.Type */
-.ld {
-  color: #657b83; }
-
-/* Literal.Date */
-.m {
-  color: #2aa198; }
-
-/* Literal.Number */
-.s {
-  color: #2aa198; }
-
-/* Literal.String */
-.na {
-  color: #657b83; }
-
-/* Name.Attribute */
-.nb {
-  color: #268bd2; }
-
-/* Name.Builtin */
-.nc {
-  color: #268bd2; }
-
-/* Name.Class */
-.no {
-  color: #b58900; }
-
-/* Name.Constant */
-.nd {
-  color: #cb4b16; }
-
-/* Name.Decorator */
-.ni {
-  color: #cb4b16; }
-
-/* Name.Entity */
-.ne {
-  color: #cb4b16; }
-
-/* Name.Exception */
-.nf {
-  color: #268bd2; }
-
-/* Name.Function */
-.nl {
-  color: #657b83; }
-
-/* Name.Label */
-.nn {
-  color: #b58900; }
-
-/* Name.Namespace */
-.nx {
-  color: #657b83; }
-
-/* Name.Other */
-.py {
-  color: #268bd2; }
-
-/* Name.Property */
-.nt {
-  color: #859900; }
-
-/* Name.Tag */
-.nv {
-  color: #cd4b16; }
-
-/* Name.Variable */
-.ow {
-  color: #859900; }
-
-/* Operator.Word */
-.w {
-  color: #fdf6e3; }
-
-/* Text.Whitespace */
-.mf {
-  color: #2aa198; }
-
-/* Literal.Number.Float */
-.mh {
-  color: #2aa198; }
-
-/* Literal.Number.Hex */
-.mi {
-  color: #2aa198; }
-
-/* Literal.Number.Integer */
-.mo {
-  color: #2aa198; }
-
-/* Literal.Number.Oct */
-.sb {
-  color: #2aa198; }
-
-/* Literal.String.Backtick */
-.sc {
-  color: #2aa198; }
-
-/* Literal.String.Char */
-.sd {
-  color: #2aa198; }
-
-/* Literal.String.Doc */
-.s2 {
-  color: #2aa198; }
-
-/* Literal.String.Double */
-.se {
-  color: #cb4b16; }
-
-/* Literal.String.Escape */
-.sh {
-  color: #2aa198; }
-
-/* Literal.String.Heredoc */
-.si {
-  color: #cb4b16; }
-
-/* Literal.String.Interpol */
-.sx {
-  color: #2aa198; }
-
-/* Literal.String.Other */
-.sr {
-  color: #2aa198; }
-
-/* Literal.String.Regex */
-.s1 {
-  color: #2aa198; }
-
-/* Literal.String.Single */
-.ss {
-  color: #2aa198; }
-
-/* Literal.String.Symbol */
-.bp {
-  color: #268bd2;
-  font-weight: bold; }
-
-/* Name.Builtin.Pseudo */
-.vc {
-  color: #268bd2; }
-
-/* Name.Variable.Class */
-.vg {
-  color: #268bd2; }
-
-/* Name.Variable.Global */
-.vi {
-  color: #268bd2; }
-
-/* Name.Variable.Instance */
-.il {
-  color: #2aa198; }
-
-/* Literal.Number.Integer.Long */
diff --git a/css/variables.css b/css/variables.css
deleted file mode 100644
index e69de29..0000000
diff --git a/docs/0.17.0/About-Experimental-Features.html b/docs/0.17.0/About-Experimental-Features.html
new file mode 100644
index 0000000..4c16ee2
--- /dev/null
+++ b/docs/0.17.0/About-Experimental-Features.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="development/experimental.html">
+<meta http-equiv="refresh" content="0; url=development/experimental.html">
+<h1>Redirecting...</h1>
+<a href="development/experimental.html">Click here if you are not redirected.</a>
+<script>location="development/experimental.html"</script>
diff --git a/docs/0.17.0/Aggregations.html b/docs/0.17.0/Aggregations.html
new file mode 100644
index 0000000..08794b9
--- /dev/null
+++ b/docs/0.17.0/Aggregations.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="querying/aggregations.html">
+<meta http-equiv="refresh" content="0; url=querying/aggregations.html">
+<h1>Redirecting...</h1>
+<a href="querying/aggregations.html">Click here if you are not redirected.</a>
+<script>location="querying/aggregations.html"</script>
diff --git a/docs/0.17.0/ApproxHisto.html b/docs/0.17.0/ApproxHisto.html
new file mode 100644
index 0000000..4e654a9
--- /dev/null
+++ b/docs/0.17.0/ApproxHisto.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="development/extensions-core/approximate-histograms.html">
+<meta http-equiv="refresh" content="0; url=development/extensions-core/approximate-histograms.html">
+<h1>Redirecting...</h1>
+<a href="development/extensions-core/approximate-histograms.html">Click here if you are not redirected.</a>
+<script>location="development/extensions-core/approximate-histograms.html"</script>
diff --git a/docs/0.17.0/Batch-ingestion.html b/docs/0.17.0/Batch-ingestion.html
new file mode 100644
index 0000000..b571cbd
--- /dev/null
+++ b/docs/0.17.0/Batch-ingestion.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="ingestion/index.html">
+<meta http-equiv="refresh" content="0; url=ingestion/index.html">
+<h1>Redirecting...</h1>
+<a href="ingestion/index.html">Click here if you are not redirected.</a>
+<script>location="ingestion/index.html"</script>
diff --git a/docs/0.17.0/Booting-a-production-cluster.html b/docs/0.17.0/Booting-a-production-cluster.html
new file mode 100644
index 0000000..bd0e468
--- /dev/null
+++ b/docs/0.17.0/Booting-a-production-cluster.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="tutorials/cluster.html">
+<meta http-equiv="refresh" content="0; url=tutorials/cluster.html">
+<h1>Redirecting...</h1>
+<a href="tutorials/cluster.html">Click here if you are not redirected.</a>
+<script>location="tutorials/cluster.html"</script>
diff --git a/docs/0.17.0/Broker-Config.html b/docs/0.17.0/Broker-Config.html
new file mode 100644
index 0000000..01b38ae
--- /dev/null
+++ b/docs/0.17.0/Broker-Config.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="configuration/index.html#broker">
+<meta http-equiv="refresh" content="0; url=configuration/index.html#broker">
+<h1>Redirecting...</h1>
+<a href="configuration/index.html#broker">Click here if you are not redirected.</a>
+<script>location="configuration/index.html#broker"</script>
diff --git a/docs/0.17.0/Broker.html b/docs/0.17.0/Broker.html
new file mode 100644
index 0000000..a28166f
--- /dev/null
+++ b/docs/0.17.0/Broker.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="design/broker.html">
+<meta http-equiv="refresh" content="0; url=design/broker.html">
+<h1>Redirecting...</h1>
+<a href="design/broker.html">Click here if you are not redirected.</a>
+<script>location="design/broker.html"</script>
diff --git a/docs/0.17.0/Build-from-source.html b/docs/0.17.0/Build-from-source.html
new file mode 100644
index 0000000..30898e7
--- /dev/null
+++ b/docs/0.17.0/Build-from-source.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="development/build.html">
+<meta http-equiv="refresh" content="0; url=development/build.html">
+<h1>Redirecting...</h1>
+<a href="development/build.html">Click here if you are not redirected.</a>
+<script>location="development/build.html"</script>
diff --git a/docs/0.17.0/Cassandra-Deep-Storage.html b/docs/0.17.0/Cassandra-Deep-Storage.html
new file mode 100644
index 0000000..31d6841
--- /dev/null
+++ b/docs/0.17.0/Cassandra-Deep-Storage.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="configuration/index.html#cassandra-deep-storage">
+<meta http-equiv="refresh" content="0; url=configuration/index.html#cassandra-deep-storage">
+<h1>Redirecting...</h1>
+<a href="configuration/index.html#cassandra-deep-storage">Click here if you are not redirected.</a>
+<script>location="configuration/index.html#cassandra-deep-storage"</script>
diff --git a/docs/0.17.0/Cluster-setup.html b/docs/0.17.0/Cluster-setup.html
new file mode 100644
index 0000000..bd0e468
--- /dev/null
+++ b/docs/0.17.0/Cluster-setup.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="tutorials/cluster.html">
+<meta http-equiv="refresh" content="0; url=tutorials/cluster.html">
+<h1>Redirecting...</h1>
+<a href="tutorials/cluster.html">Click here if you are not redirected.</a>
+<script>location="tutorials/cluster.html"</script>
diff --git a/docs/0.17.0/Compute.html b/docs/0.17.0/Compute.html
new file mode 100644
index 0000000..c3bea73
--- /dev/null
+++ b/docs/0.17.0/Compute.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="design/processes.html">
+<meta http-equiv="refresh" content="0; url=design/processes.html">
+<h1>Redirecting...</h1>
+<a href="design/processes.html">Click here if you are not redirected.</a>
+<script>location="design/processes.html"</script>
diff --git a/docs/0.17.0/Concepts-and-Terminology.html b/docs/0.17.0/Concepts-and-Terminology.html
new file mode 100644
index 0000000..57986ec
--- /dev/null
+++ b/docs/0.17.0/Concepts-and-Terminology.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="design/index.html">
+<meta http-equiv="refresh" content="0; url=design/index.html">
+<h1>Redirecting...</h1>
+<a href="design/index.html">Click here if you are not redirected.</a>
+<script>location="design/index.html"</script>
diff --git a/docs/0.17.0/Configuration.html b/docs/0.17.0/Configuration.html
new file mode 100644
index 0000000..ea6ae53
--- /dev/null
+++ b/docs/0.17.0/Configuration.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="configuration/index.html">
+<meta http-equiv="refresh" content="0; url=configuration/index.html">
+<h1>Redirecting...</h1>
+<a href="configuration/index.html">Click here if you are not redirected.</a>
+<script>location="configuration/index.html"</script>
diff --git a/docs/0.17.0/Contribute.html b/docs/0.17.0/Contribute.html
new file mode 100644
index 0000000..ea71408
--- /dev/null
+++ b/docs/0.17.0/Contribute.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="/community/">
+<meta http-equiv="refresh" content="0; url=/community/">
+<h1>Redirecting...</h1>
+<a href="/community/">Click here if you are not redirected.</a>
+<script>location="/community/"</script>
diff --git a/docs/0.17.0/Coordinator-Config.html b/docs/0.17.0/Coordinator-Config.html
new file mode 100644
index 0000000..bb3def4
--- /dev/null
+++ b/docs/0.17.0/Coordinator-Config.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="configuration/index.html#coordinator">
+<meta http-equiv="refresh" content="0; url=configuration/index.html#coordinator">
+<h1>Redirecting...</h1>
+<a href="configuration/index.html#coordinator">Click here if you are not redirected.</a>
+<script>location="configuration/index.html#coordinator"</script>
diff --git a/docs/0.17.0/Coordinator.html b/docs/0.17.0/Coordinator.html
new file mode 100644
index 0000000..accfe43
--- /dev/null
+++ b/docs/0.17.0/Coordinator.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="design/coordinator.html">
+<meta http-equiv="refresh" content="0; url=design/coordinator.html">
+<h1>Redirecting...</h1>
+<a href="design/coordinator.html">Click here if you are not redirected.</a>
+<script>location="design/coordinator.html"</script>
diff --git a/docs/0.17.0/DataSource.html b/docs/0.17.0/DataSource.html
new file mode 100644
index 0000000..cde1771
--- /dev/null
+++ b/docs/0.17.0/DataSource.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="querying/datasource.html">
+<meta http-equiv="refresh" content="0; url=querying/datasource.html">
+<h1>Redirecting...</h1>
+<a href="querying/datasource.html">Click here if you are not redirected.</a>
+<script>location="querying/datasource.html"</script>
diff --git a/docs/0.17.0/DataSourceMetadataQuery.html b/docs/0.17.0/DataSourceMetadataQuery.html
new file mode 100644
index 0000000..6c7cd57
--- /dev/null
+++ b/docs/0.17.0/DataSourceMetadataQuery.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="querying/datasourcemetadataquery.html">
+<meta http-equiv="refresh" content="0; url=querying/datasourcemetadataquery.html">
+<h1>Redirecting...</h1>
+<a href="querying/datasourcemetadataquery.html">Click here if you are not redirected.</a>
+<script>location="querying/datasourcemetadataquery.html"</script>
diff --git a/docs/0.17.0/Data_formats.html b/docs/0.17.0/Data_formats.html
new file mode 100644
index 0000000..ae6f673
--- /dev/null
+++ b/docs/0.17.0/Data_formats.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="ingestion/data-formats.html">
+<meta http-equiv="refresh" content="0; url=ingestion/data-formats.html">
+<h1>Redirecting...</h1>
+<a href="ingestion/data-formats.html">Click here if you are not redirected.</a>
+<script>location="ingestion/data-formats.html"</script>
diff --git a/docs/0.17.0/Deep-Storage.html b/docs/0.17.0/Deep-Storage.html
new file mode 100644
index 0000000..07a7cd5
--- /dev/null
+++ b/docs/0.17.0/Deep-Storage.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="dependencies/deep-storage.html">
+<meta http-equiv="refresh" content="0; url=dependencies/deep-storage.html">
+<h1>Redirecting...</h1>
+<a href="dependencies/deep-storage.html">Click here if you are not redirected.</a>
+<script>location="dependencies/deep-storage.html"</script>
diff --git a/docs/0.17.0/Design.html b/docs/0.17.0/Design.html
new file mode 100644
index 0000000..57986ec
--- /dev/null
+++ b/docs/0.17.0/Design.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="design/index.html">
+<meta http-equiv="refresh" content="0; url=design/index.html">
+<h1>Redirecting...</h1>
+<a href="design/index.html">Click here if you are not redirected.</a>
+<script>location="design/index.html"</script>
diff --git a/docs/0.17.0/DimensionSpecs.html b/docs/0.17.0/DimensionSpecs.html
new file mode 100644
index 0000000..7ab536a
--- /dev/null
+++ b/docs/0.17.0/DimensionSpecs.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="querying/dimensionspecs.html">
+<meta http-equiv="refresh" content="0; url=querying/dimensionspecs.html">
+<h1>Redirecting...</h1>
+<a href="querying/dimensionspecs.html">Click here if you are not redirected.</a>
+<script>location="querying/dimensionspecs.html"</script>
diff --git a/docs/0.17.0/Download.html b/docs/0.17.0/Download.html
new file mode 100644
index 0000000..cfb2d2b
--- /dev/null
+++ b/docs/0.17.0/Download.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="/downloads.html">
+<meta http-equiv="refresh" content="0; url=/downloads.html">
+<h1>Redirecting...</h1>
+<a href="/downloads.html">Click here if you are not redirected.</a>
+<script>location="/downloads.html"</script>
diff --git a/docs/0.17.0/Druid-Personal-Demo-Cluster.html b/docs/0.17.0/Druid-Personal-Demo-Cluster.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.17.0/Druid-Personal-Demo-Cluster.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="tutorials/index.html">
+<meta http-equiv="refresh" content="0; url=tutorials/index.html">
+<h1>Redirecting...</h1>
+<a href="tutorials/index.html">Click here if you are not redirected.</a>
+<script>location="tutorials/index.html"</script>
diff --git a/docs/0.17.0/Druid-vs-Cassandra.html b/docs/0.17.0/Druid-vs-Cassandra.html
new file mode 100644
index 0000000..1a0249a
--- /dev/null
+++ b/docs/0.17.0/Druid-vs-Cassandra.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="comparisons/druid-vs-key-value.html">
+<meta http-equiv="refresh" content="0; url=comparisons/druid-vs-key-value.html">
+<h1>Redirecting...</h1>
+<a href="comparisons/druid-vs-key-value.html">Click here if you are not redirected.</a>
+<script>location="comparisons/druid-vs-key-value.html"</script>
diff --git a/docs/0.17.0/Druid-vs-Elasticsearch.html b/docs/0.17.0/Druid-vs-Elasticsearch.html
new file mode 100644
index 0000000..5d519fb
--- /dev/null
+++ b/docs/0.17.0/Druid-vs-Elasticsearch.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="comparisons/druid-vs-elasticsearch.html">
+<meta http-equiv="refresh" content="0; url=comparisons/druid-vs-elasticsearch.html">
+<h1>Redirecting...</h1>
+<a href="comparisons/druid-vs-elasticsearch.html">Click here if you are not redirected.</a>
+<script>location="comparisons/druid-vs-elasticsearch.html"</script>
diff --git a/docs/0.17.0/Druid-vs-Hadoop.html b/docs/0.17.0/Druid-vs-Hadoop.html
new file mode 100644
index 0000000..d5202e7
--- /dev/null
+++ b/docs/0.17.0/Druid-vs-Hadoop.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="comparisons/druid-vs-sql-on-hadoop.html">
+<meta http-equiv="refresh" content="0; url=comparisons/druid-vs-sql-on-hadoop.html">
+<h1>Redirecting...</h1>
+<a href="comparisons/druid-vs-sql-on-hadoop.html">Click here if you are not redirected.</a>
+<script>location="comparisons/druid-vs-sql-on-hadoop.html"</script>
diff --git a/docs/0.17.0/Druid-vs-Impala-or-Shark.html b/docs/0.17.0/Druid-vs-Impala-or-Shark.html
new file mode 100644
index 0000000..d5202e7
--- /dev/null
+++ b/docs/0.17.0/Druid-vs-Impala-or-Shark.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="comparisons/druid-vs-sql-on-hadoop.html">
+<meta http-equiv="refresh" content="0; url=comparisons/druid-vs-sql-on-hadoop.html">
+<h1>Redirecting...</h1>
+<a href="comparisons/druid-vs-sql-on-hadoop.html">Click here if you are not redirected.</a>
+<script>location="comparisons/druid-vs-sql-on-hadoop.html"</script>
diff --git a/docs/0.17.0/Druid-vs-Redshift.html b/docs/0.17.0/Druid-vs-Redshift.html
new file mode 100644
index 0000000..4199696
--- /dev/null
+++ b/docs/0.17.0/Druid-vs-Redshift.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="comparisons/druid-vs-redshift.html">
+<meta http-equiv="refresh" content="0; url=comparisons/druid-vs-redshift.html">
+<h1>Redirecting...</h1>
+<a href="comparisons/druid-vs-redshift.html">Click here if you are not redirected.</a>
+<script>location="comparisons/druid-vs-redshift.html"</script>
diff --git a/docs/0.17.0/Druid-vs-Spark.html b/docs/0.17.0/Druid-vs-Spark.html
new file mode 100644
index 0000000..31713ad
--- /dev/null
+++ b/docs/0.17.0/Druid-vs-Spark.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="comparisons/druid-vs-spark.html">
+<meta http-equiv="refresh" content="0; url=comparisons/druid-vs-spark.html">
+<h1>Redirecting...</h1>
+<a href="comparisons/druid-vs-spark.html">Click here if you are not redirected.</a>
+<script>location="comparisons/druid-vs-spark.html"</script>
diff --git a/docs/0.17.0/Druid-vs-Vertica.html b/docs/0.17.0/Druid-vs-Vertica.html
new file mode 100644
index 0000000..4199696
--- /dev/null
+++ b/docs/0.17.0/Druid-vs-Vertica.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="comparisons/druid-vs-redshift.html">
+<meta http-equiv="refresh" content="0; url=comparisons/druid-vs-redshift.html">
+<h1>Redirecting...</h1>
+<a href="comparisons/druid-vs-redshift.html">Click here if you are not redirected.</a>
+<script>location="comparisons/druid-vs-redshift.html"</script>
diff --git a/docs/0.17.0/Evaluate.html b/docs/0.17.0/Evaluate.html
new file mode 100644
index 0000000..bd0e468
--- /dev/null
+++ b/docs/0.17.0/Evaluate.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="tutorials/cluster.html">
+<meta http-equiv="refresh" content="0; url=tutorials/cluster.html">
+<h1>Redirecting...</h1>
+<a href="tutorials/cluster.html">Click here if you are not redirected.</a>
+<script>location="tutorials/cluster.html"</script>
diff --git a/docs/0.17.0/Examples.html b/docs/0.17.0/Examples.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.17.0/Examples.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="tutorials/index.html">
+<meta http-equiv="refresh" content="0; url=tutorials/index.html">
+<h1>Redirecting...</h1>
+<a href="tutorials/index.html">Click here if you are not redirected.</a>
+<script>location="tutorials/index.html"</script>
diff --git a/docs/0.17.0/Filters.html b/docs/0.17.0/Filters.html
new file mode 100644
index 0000000..a318095
--- /dev/null
+++ b/docs/0.17.0/Filters.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="querying/filters.html">
+<meta http-equiv="refresh" content="0; url=querying/filters.html">
+<h1>Redirecting...</h1>
+<a href="querying/filters.html">Click here if you are not redirected.</a>
+<script>location="querying/filters.html"</script>
diff --git a/docs/0.17.0/GeographicQueries.html b/docs/0.17.0/GeographicQueries.html
new file mode 100644
index 0000000..566645a
--- /dev/null
+++ b/docs/0.17.0/GeographicQueries.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="development/geo.html">
+<meta http-equiv="refresh" content="0; url=development/geo.html">
+<h1>Redirecting...</h1>
+<a href="development/geo.html">Click here if you are not redirected.</a>
+<script>location="development/geo.html"</script>
diff --git a/docs/0.17.0/Granularities.html b/docs/0.17.0/Granularities.html
new file mode 100644
index 0000000..05ddc32
--- /dev/null
+++ b/docs/0.17.0/Granularities.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="querying/granularities.html">
+<meta http-equiv="refresh" content="0; url=querying/granularities.html">
+<h1>Redirecting...</h1>
+<a href="querying/granularities.html">Click here if you are not redirected.</a>
+<script>location="querying/granularities.html"</script>
diff --git a/docs/0.17.0/GroupByQuery.html b/docs/0.17.0/GroupByQuery.html
new file mode 100644
index 0000000..51a97c6
--- /dev/null
+++ b/docs/0.17.0/GroupByQuery.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="querying/groupbyquery.html">
+<meta http-equiv="refresh" content="0; url=querying/groupbyquery.html">
+<h1>Redirecting...</h1>
+<a href="querying/groupbyquery.html">Click here if you are not redirected.</a>
+<script>location="querying/groupbyquery.html"</script>
diff --git a/docs/0.17.0/Hadoop-Configuration.html b/docs/0.17.0/Hadoop-Configuration.html
new file mode 100644
index 0000000..7e5143c
--- /dev/null
+++ b/docs/0.17.0/Hadoop-Configuration.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="ingestion/hadoop.html">
+<meta http-equiv="refresh" content="0; url=ingestion/hadoop.html">
+<h1>Redirecting...</h1>
+<a href="ingestion/hadoop.html">Click here if you are not redirected.</a>
+<script>location="ingestion/hadoop.html"</script>
diff --git a/docs/0.17.0/Having.html b/docs/0.17.0/Having.html
new file mode 100644
index 0000000..7715018
--- /dev/null
+++ b/docs/0.17.0/Having.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="querying/having.html">
+<meta http-equiv="refresh" content="0; url=querying/having.html">
+<h1>Redirecting...</h1>
+<a href="querying/having.html">Click here if you are not redirected.</a>
+<script>location="querying/having.html"</script>
diff --git a/docs/0.17.0/Historical-Config.html b/docs/0.17.0/Historical-Config.html
new file mode 100644
index 0000000..20901ec
--- /dev/null
+++ b/docs/0.17.0/Historical-Config.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="configuration/index.html#historical">
+<meta http-equiv="refresh" content="0; url=configuration/index.html#historical">
+<h1>Redirecting...</h1>
+<a href="configuration/index.html#historical">Click here if you are not redirected.</a>
+<script>location="configuration/index.html#historical"</script>
diff --git a/docs/0.17.0/Historical.html b/docs/0.17.0/Historical.html
new file mode 100644
index 0000000..4654f6a
--- /dev/null
+++ b/docs/0.17.0/Historical.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="design/historical.html">
+<meta http-equiv="refresh" content="0; url=design/historical.html">
+<h1>Redirecting...</h1>
+<a href="design/historical.html">Click here if you are not redirected.</a>
+<script>location="design/historical.html"</script>
diff --git a/docs/0.17.0/Home.html b/docs/0.17.0/Home.html
new file mode 100644
index 0000000..57986ec
--- /dev/null
+++ b/docs/0.17.0/Home.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="design/index.html">
+<meta http-equiv="refresh" content="0; url=design/index.html">
+<h1>Redirecting...</h1>
+<a href="design/index.html">Click here if you are not redirected.</a>
+<script>location="design/index.html"</script>
diff --git a/docs/0.17.0/Including-Extensions.html b/docs/0.17.0/Including-Extensions.html
new file mode 100644
index 0000000..89a2675
--- /dev/null
+++ b/docs/0.17.0/Including-Extensions.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="development/extensions.html#loading-extensions">
+<meta http-equiv="refresh" content="0; url=development/extensions.html#loading-extensions">
+<h1>Redirecting...</h1>
+<a href="development/extensions.html#loading-extensions">Click here if you are not redirected.</a>
+<script>location="development/extensions.html#loading-extensions"</script>
diff --git a/docs/0.17.0/Indexing-Service-Config.html b/docs/0.17.0/Indexing-Service-Config.html
new file mode 100644
index 0000000..b6aa387
--- /dev/null
+++ b/docs/0.17.0/Indexing-Service-Config.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="configuration/index.html#overlord">
+<meta http-equiv="refresh" content="0; url=configuration/index.html#overlord">
+<h1>Redirecting...</h1>
+<a href="configuration/index.html#overlord">Click here if you are not redirected.</a>
+<script>location="configuration/index.html#overlord"</script>
diff --git a/docs/0.17.0/Indexing-Service.html b/docs/0.17.0/Indexing-Service.html
new file mode 100644
index 0000000..20f139d
--- /dev/null
+++ b/docs/0.17.0/Indexing-Service.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="design/indexing-service.html">
+<meta http-equiv="refresh" content="0; url=design/indexing-service.html">
+<h1>Redirecting...</h1>
+<a href="design/indexing-service.html">Click here if you are not redirected.</a>
+<script>location="design/indexing-service.html"</script>
diff --git a/docs/0.17.0/Ingestion-FAQ.html b/docs/0.17.0/Ingestion-FAQ.html
new file mode 100644
index 0000000..dddd3a4
--- /dev/null
+++ b/docs/0.17.0/Ingestion-FAQ.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="ingestion/faq.html">
+<meta http-equiv="refresh" content="0; url=ingestion/faq.html">
+<h1>Redirecting...</h1>
+<a href="ingestion/faq.html">Click here if you are not redirected.</a>
+<script>location="ingestion/faq.html"</script>
diff --git a/docs/0.17.0/Ingestion-overview.html b/docs/0.17.0/Ingestion-overview.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.17.0/Ingestion-overview.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="tutorials/index.html">
+<meta http-equiv="refresh" content="0; url=tutorials/index.html">
+<h1>Redirecting...</h1>
+<a href="tutorials/index.html">Click here if you are not redirected.</a>
+<script>location="tutorials/index.html"</script>
diff --git a/docs/0.17.0/Ingestion.html b/docs/0.17.0/Ingestion.html
new file mode 100644
index 0000000..b571cbd
--- /dev/null
+++ b/docs/0.17.0/Ingestion.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="ingestion/index.html">
+<meta http-equiv="refresh" content="0; url=ingestion/index.html">
+<h1>Redirecting...</h1>
+<a href="ingestion/index.html">Click here if you are not redirected.</a>
+<script>location="ingestion/index.html"</script>
diff --git a/docs/0.17.0/Kafka-Eight.html b/docs/0.17.0/Kafka-Eight.html
new file mode 100644
index 0000000..b654b03
--- /dev/null
+++ b/docs/0.17.0/Kafka-Eight.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="development/extensions-core/kafka-ingestion.html">
+<meta http-equiv="refresh" content="0; url=development/extensions-core/kafka-ingestion.html">
+<h1>Redirecting...</h1>
+<a href="development/extensions-core/kafka-ingestion.html">Click here if you are not redirected.</a>
+<script>location="development/extensions-core/kafka-ingestion.html"</script>
diff --git a/docs/0.17.0/Libraries.html b/docs/0.17.0/Libraries.html
new file mode 100644
index 0000000..545edee
--- /dev/null
+++ b/docs/0.17.0/Libraries.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="/libraries.html">
+<meta http-equiv="refresh" content="0; url=/libraries.html">
+<h1>Redirecting...</h1>
+<a href="/libraries.html">Click here if you are not redirected.</a>
+<script>location="/libraries.html"</script>
diff --git a/docs/0.17.0/LimitSpec.html b/docs/0.17.0/LimitSpec.html
new file mode 100644
index 0000000..8b6a28d
--- /dev/null
+++ b/docs/0.17.0/LimitSpec.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="querying/limitspec.html">
+<meta http-equiv="refresh" content="0; url=querying/limitspec.html">
+<h1>Redirecting...</h1>
+<a href="querying/limitspec.html">Click here if you are not redirected.</a>
+<script>location="querying/limitspec.html"</script>
diff --git a/docs/0.17.0/Loading-Your-Data.html b/docs/0.17.0/Loading-Your-Data.html
new file mode 100644
index 0000000..b571cbd
--- /dev/null
+++ b/docs/0.17.0/Loading-Your-Data.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="ingestion/index.html">
+<meta http-equiv="refresh" content="0; url=ingestion/index.html">
+<h1>Redirecting...</h1>
+<a href="ingestion/index.html">Click here if you are not redirected.</a>
+<script>location="ingestion/index.html"</script>
diff --git a/docs/0.17.0/Logging.html b/docs/0.17.0/Logging.html
new file mode 100644
index 0000000..3b2b135
--- /dev/null
+++ b/docs/0.17.0/Logging.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="configuration/logging.html">
+<meta http-equiv="refresh" content="0; url=configuration/logging.html">
+<h1>Redirecting...</h1>
+<a href="configuration/logging.html">Click here if you are not redirected.</a>
+<script>location="configuration/logging.html"</script>
diff --git a/docs/0.17.0/Master.html b/docs/0.17.0/Master.html
new file mode 100644
index 0000000..c3bea73
--- /dev/null
+++ b/docs/0.17.0/Master.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="design/processes.html">
+<meta http-equiv="refresh" content="0; url=design/processes.html">
+<h1>Redirecting...</h1>
+<a href="design/processes.html">Click here if you are not redirected.</a>
+<script>location="design/processes.html"</script>
diff --git a/docs/0.17.0/Metadata-storage.html b/docs/0.17.0/Metadata-storage.html
new file mode 100644
index 0000000..f13b365
--- /dev/null
+++ b/docs/0.17.0/Metadata-storage.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="dependencies/metadata-storage.html">
+<meta http-equiv="refresh" content="0; url=dependencies/metadata-storage.html">
+<h1>Redirecting...</h1>
+<a href="dependencies/metadata-storage.html">Click here if you are not redirected.</a>
+<script>location="dependencies/metadata-storage.html"</script>
diff --git a/docs/0.17.0/Metrics.html b/docs/0.17.0/Metrics.html
new file mode 100644
index 0000000..011ab0b
--- /dev/null
+++ b/docs/0.17.0/Metrics.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="operations/metrics.html">
+<meta http-equiv="refresh" content="0; url=operations/metrics.html">
+<h1>Redirecting...</h1>
+<a href="operations/metrics.html">Click here if you are not redirected.</a>
+<script>location="operations/metrics.html"</script>
diff --git a/docs/0.17.0/Middlemanager.html b/docs/0.17.0/Middlemanager.html
new file mode 100644
index 0000000..8e9da09
--- /dev/null
+++ b/docs/0.17.0/Middlemanager.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="design/middlemanager.html">
+<meta http-equiv="refresh" content="0; url=design/middlemanager.html">
+<h1>Redirecting...</h1>
+<a href="design/middlemanager.html">Click here if you are not redirected.</a>
+<script>location="design/middlemanager.html"</script>
diff --git a/docs/0.17.0/Modules.html b/docs/0.17.0/Modules.html
new file mode 100644
index 0000000..93a8be1
--- /dev/null
+++ b/docs/0.17.0/Modules.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="development/modules.html">
+<meta http-equiv="refresh" content="0; url=development/modules.html">
+<h1>Redirecting...</h1>
+<a href="development/modules.html">Click here if you are not redirected.</a>
+<script>location="development/modules.html"</script>
diff --git a/docs/0.17.0/MySQL.html b/docs/0.17.0/MySQL.html
new file mode 100644
index 0000000..5c90272
--- /dev/null
+++ b/docs/0.17.0/MySQL.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="development/extensions-core/mysql.html">
+<meta http-equiv="refresh" content="0; url=development/extensions-core/mysql.html">
+<h1>Redirecting...</h1>
+<a href="development/extensions-core/mysql.html">Click here if you are not redirected.</a>
+<script>location="development/extensions-core/mysql.html"</script>
diff --git a/docs/0.17.0/OrderBy.html b/docs/0.17.0/OrderBy.html
new file mode 100644
index 0000000..8b6a28d
--- /dev/null
+++ b/docs/0.17.0/OrderBy.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="querying/limitspec.html">
+<meta http-equiv="refresh" content="0; url=querying/limitspec.html">
+<h1>Redirecting...</h1>
+<a href="querying/limitspec.html">Click here if you are not redirected.</a>
+<script>location="querying/limitspec.html"</script>
diff --git a/docs/0.17.0/Other-Hadoop.html b/docs/0.17.0/Other-Hadoop.html
new file mode 100644
index 0000000..b7bdd99
--- /dev/null
+++ b/docs/0.17.0/Other-Hadoop.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="operations/other-hadoop.html">
+<meta http-equiv="refresh" content="0; url=operations/other-hadoop.html">
+<h1>Redirecting...</h1>
+<a href="operations/other-hadoop.html">Click here if you are not redirected.</a>
+<script>location="operations/other-hadoop.html"</script>
diff --git a/docs/0.17.0/Papers-and-talks.html b/docs/0.17.0/Papers-and-talks.html
new file mode 100644
index 0000000..4602adb
--- /dev/null
+++ b/docs/0.17.0/Papers-and-talks.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="misc/papers-and-talks.html">
+<meta http-equiv="refresh" content="0; url=misc/papers-and-talks.html">
+<h1>Redirecting...</h1>
+<a href="misc/papers-and-talks.html">Click here if you are not redirected.</a>
+<script>location="misc/papers-and-talks.html"</script>
diff --git a/docs/0.17.0/Peons.html b/docs/0.17.0/Peons.html
new file mode 100644
index 0000000..e9793f4
--- /dev/null
+++ b/docs/0.17.0/Peons.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="design/peons.html">
+<meta http-equiv="refresh" content="0; url=design/peons.html">
+<h1>Redirecting...</h1>
+<a href="design/peons.html">Click here if you are not redirected.</a>
+<script>location="design/peons.html"</script>
diff --git a/docs/0.17.0/Performance-FAQ.html b/docs/0.17.0/Performance-FAQ.html
new file mode 100644
index 0000000..e6da9b2
--- /dev/null
+++ b/docs/0.17.0/Performance-FAQ.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="operations/basic-cluster-tuning.html">
+<meta http-equiv="refresh" content="0; url=operations/basic-cluster-tuning.html">
+<h1>Redirecting...</h1>
+<a href="operations/basic-cluster-tuning.html">Click here if you are not redirected.</a>
+<script>location="operations/basic-cluster-tuning.html"</script>
diff --git a/docs/0.17.0/Plumber.html b/docs/0.17.0/Plumber.html
new file mode 100644
index 0000000..b571cbd
--- /dev/null
+++ b/docs/0.17.0/Plumber.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="ingestion/index.html">
+<meta http-equiv="refresh" content="0; url=ingestion/index.html">
+<h1>Redirecting...</h1>
+<a href="ingestion/index.html">Click here if you are not redirected.</a>
+<script>location="ingestion/index.html"</script>
diff --git a/docs/0.17.0/Post-aggregations.html b/docs/0.17.0/Post-aggregations.html
new file mode 100644
index 0000000..e0c4e24
--- /dev/null
+++ b/docs/0.17.0/Post-aggregations.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="querying/post-aggregations.html">
+<meta http-equiv="refresh" content="0; url=querying/post-aggregations.html">
+<h1>Redirecting...</h1>
+<a href="querying/post-aggregations.html">Click here if you are not redirected.</a>
+<script>location="querying/post-aggregations.html"</script>
diff --git a/docs/0.17.0/Production-Cluster-Configuration.html b/docs/0.17.0/Production-Cluster-Configuration.html
new file mode 100644
index 0000000..bd0e468
--- /dev/null
+++ b/docs/0.17.0/Production-Cluster-Configuration.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="tutorials/cluster.html">
+<meta http-equiv="refresh" content="0; url=tutorials/cluster.html">
+<h1>Redirecting...</h1>
+<a href="tutorials/cluster.html">Click here if you are not redirected.</a>
+<script>location="tutorials/cluster.html"</script>
diff --git a/docs/0.17.0/Query-Context.html b/docs/0.17.0/Query-Context.html
new file mode 100644
index 0000000..711a21e
--- /dev/null
+++ b/docs/0.17.0/Query-Context.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="querying/query-context.html">
+<meta http-equiv="refresh" content="0; url=querying/query-context.html">
+<h1>Redirecting...</h1>
+<a href="querying/query-context.html">Click here if you are not redirected.</a>
+<script>location="querying/query-context.html"</script>
diff --git a/docs/0.17.0/Querying-your-data.html b/docs/0.17.0/Querying-your-data.html
new file mode 100644
index 0000000..702ed7a
--- /dev/null
+++ b/docs/0.17.0/Querying-your-data.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="querying/querying.html">
+<meta http-equiv="refresh" content="0; url=querying/querying.html">
+<h1>Redirecting...</h1>
+<a href="querying/querying.html">Click here if you are not redirected.</a>
+<script>location="querying/querying.html"</script>
diff --git a/docs/0.17.0/Querying.html b/docs/0.17.0/Querying.html
new file mode 100644
index 0000000..702ed7a
--- /dev/null
+++ b/docs/0.17.0/Querying.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="querying/querying.html">
+<meta http-equiv="refresh" content="0; url=querying/querying.html">
+<h1>Redirecting...</h1>
+<a href="querying/querying.html">Click here if you are not redirected.</a>
+<script>location="querying/querying.html"</script>
diff --git a/docs/0.17.0/Realtime-Config.html b/docs/0.17.0/Realtime-Config.html
new file mode 100644
index 0000000..3b8f656
--- /dev/null
+++ b/docs/0.17.0/Realtime-Config.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="ingestion/standalone-realtime.html">
+<meta http-equiv="refresh" content="0; url=ingestion/standalone-realtime.html">
+<h1>Redirecting...</h1>
+<a href="ingestion/standalone-realtime.html">Click here if you are not redirected.</a>
+<script>location="ingestion/standalone-realtime.html"</script>
diff --git a/docs/0.17.0/Realtime-ingestion.html b/docs/0.17.0/Realtime-ingestion.html
new file mode 100644
index 0000000..b571cbd
--- /dev/null
+++ b/docs/0.17.0/Realtime-ingestion.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="ingestion/index.html">
+<meta http-equiv="refresh" content="0; url=ingestion/index.html">
+<h1>Redirecting...</h1>
+<a href="ingestion/index.html">Click here if you are not redirected.</a>
+<script>location="ingestion/index.html"</script>
diff --git a/docs/0.17.0/Realtime.html b/docs/0.17.0/Realtime.html
new file mode 100644
index 0000000..3b8f656
--- /dev/null
+++ b/docs/0.17.0/Realtime.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="ingestion/standalone-realtime.html">
+<meta http-equiv="refresh" content="0; url=ingestion/standalone-realtime.html">
+<h1>Redirecting...</h1>
+<a href="ingestion/standalone-realtime.html">Click here if you are not redirected.</a>
+<script>location="ingestion/standalone-realtime.html"</script>
diff --git a/docs/0.17.0/Rolling-Updates.html b/docs/0.17.0/Rolling-Updates.html
new file mode 100644
index 0000000..90bc8b0
--- /dev/null
+++ b/docs/0.17.0/Rolling-Updates.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="operations/rolling-updates.html">
+<meta http-equiv="refresh" content="0; url=operations/rolling-updates.html">
+<h1>Redirecting...</h1>
+<a href="operations/rolling-updates.html">Click here if you are not redirected.</a>
+<script>location="operations/rolling-updates.html"</script>
diff --git a/docs/0.17.0/Router.html b/docs/0.17.0/Router.html
new file mode 100644
index 0000000..64ba7f4
--- /dev/null
+++ b/docs/0.17.0/Router.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="design/router.html">
+<meta http-equiv="refresh" content="0; url=design/router.html">
+<h1>Redirecting...</h1>
+<a href="design/router.html">Click here if you are not redirected.</a>
+<script>location="design/router.html"</script>
diff --git a/docs/0.17.0/Rule-Configuration.html b/docs/0.17.0/Rule-Configuration.html
new file mode 100644
index 0000000..19c0e7e
--- /dev/null
+++ b/docs/0.17.0/Rule-Configuration.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="operations/rule-configuration.html">
+<meta http-equiv="refresh" content="0; url=operations/rule-configuration.html">
+<h1>Redirecting...</h1>
+<a href="operations/rule-configuration.html">Click here if you are not redirected.</a>
+<script>location="operations/rule-configuration.html"</script>
diff --git a/docs/0.17.0/SearchQuery.html b/docs/0.17.0/SearchQuery.html
new file mode 100644
index 0000000..ee66987
--- /dev/null
+++ b/docs/0.17.0/SearchQuery.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="querying/searchquery.html">
+<meta http-equiv="refresh" content="0; url=querying/searchquery.html">
+<h1>Redirecting...</h1>
+<a href="querying/searchquery.html">Click here if you are not redirected.</a>
+<script>location="querying/searchquery.html"</script>
diff --git a/docs/0.17.0/SearchQuerySpec.html b/docs/0.17.0/SearchQuerySpec.html
new file mode 100644
index 0000000..c28fca2
--- /dev/null
+++ b/docs/0.17.0/SearchQuerySpec.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="querying/searchqueryspec.html">
+<meta http-equiv="refresh" content="0; url=querying/searchqueryspec.html">
+<h1>Redirecting...</h1>
+<a href="querying/searchqueryspec.html">Click here if you are not redirected.</a>
+<script>location="querying/searchqueryspec.html"</script>
diff --git a/docs/0.17.0/SegmentMetadataQuery.html b/docs/0.17.0/SegmentMetadataQuery.html
new file mode 100644
index 0000000..21294cb
--- /dev/null
+++ b/docs/0.17.0/SegmentMetadataQuery.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="querying/segmentmetadataquery.html">
+<meta http-equiv="refresh" content="0; url=querying/segmentmetadataquery.html">
+<h1>Redirecting...</h1>
+<a href="querying/segmentmetadataquery.html">Click here if you are not redirected.</a>
+<script>location="querying/segmentmetadataquery.html"</script>
diff --git a/docs/0.17.0/Segments.html b/docs/0.17.0/Segments.html
new file mode 100644
index 0000000..040d647
--- /dev/null
+++ b/docs/0.17.0/Segments.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="design/segments.html">
+<meta http-equiv="refresh" content="0; url=design/segments.html">
+<h1>Redirecting...</h1>
+<a href="design/segments.html">Click here if you are not redirected.</a>
+<script>location="design/segments.html"</script>
diff --git a/docs/0.17.0/SelectQuery.html b/docs/0.17.0/SelectQuery.html
new file mode 100644
index 0000000..526110d
--- /dev/null
+++ b/docs/0.17.0/SelectQuery.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="querying/select-query.html">
+<meta http-equiv="refresh" content="0; url=querying/select-query.html">
+<h1>Redirecting...</h1>
+<a href="querying/select-query.html">Click here if you are not redirected.</a>
+<script>location="querying/select-query.html"</script>
diff --git a/docs/0.17.0/Simple-Cluster-Configuration.html b/docs/0.17.0/Simple-Cluster-Configuration.html
new file mode 100644
index 0000000..bd0e468
--- /dev/null
+++ b/docs/0.17.0/Simple-Cluster-Configuration.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="tutorials/cluster.html">
+<meta http-equiv="refresh" content="0; url=tutorials/cluster.html">
+<h1>Redirecting...</h1>
+<a href="tutorials/cluster.html">Click here if you are not redirected.</a>
+<script>location="tutorials/cluster.html"</script>
diff --git a/docs/0.17.0/Spatial-Filters.html b/docs/0.17.0/Spatial-Filters.html
new file mode 100644
index 0000000..566645a
--- /dev/null
+++ b/docs/0.17.0/Spatial-Filters.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="development/geo.html">
+<meta http-equiv="refresh" content="0; url=development/geo.html">
+<h1>Redirecting...</h1>
+<a href="development/geo.html">Click here if you are not redirected.</a>
+<script>location="development/geo.html"</script>
diff --git a/docs/0.17.0/Spatial-Indexing.html b/docs/0.17.0/Spatial-Indexing.html
new file mode 100644
index 0000000..566645a
--- /dev/null
+++ b/docs/0.17.0/Spatial-Indexing.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="development/geo.html">
+<meta http-equiv="refresh" content="0; url=development/geo.html">
+<h1>Redirecting...</h1>
+<a href="development/geo.html">Click here if you are not redirected.</a>
+<script>location="development/geo.html"</script>
diff --git a/docs/0.17.0/Stand-Alone-With-Riak-CS.html b/docs/0.17.0/Stand-Alone-With-Riak-CS.html
new file mode 100644
index 0000000..57986ec
--- /dev/null
+++ b/docs/0.17.0/Stand-Alone-With-Riak-CS.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="design/index.html">
+<meta http-equiv="refresh" content="0; url=design/index.html">
+<h1>Redirecting...</h1>
+<a href="design/index.html">Click here if you are not redirected.</a>
+<script>location="design/index.html"</script>
diff --git a/docs/0.17.0/Support.html b/docs/0.17.0/Support.html
new file mode 100644
index 0000000..ea71408
--- /dev/null
+++ b/docs/0.17.0/Support.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="/community/">
+<meta http-equiv="refresh" content="0; url=/community/">
+<h1>Redirecting...</h1>
+<a href="/community/">Click here if you are not redirected.</a>
+<script>location="/community/"</script>
diff --git a/docs/0.17.0/Tasks.html b/docs/0.17.0/Tasks.html
new file mode 100644
index 0000000..71e90f8
--- /dev/null
+++ b/docs/0.17.0/Tasks.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="ingestion/tasks.html">
+<meta http-equiv="refresh" content="0; url=ingestion/tasks.html">
+<h1>Redirecting...</h1>
+<a href="ingestion/tasks.html">Click here if you are not redirected.</a>
+<script>location="ingestion/tasks.html"</script>
diff --git a/docs/0.17.0/Thanks.html b/docs/0.17.0/Thanks.html
new file mode 100644
index 0000000..ea71408
--- /dev/null
+++ b/docs/0.17.0/Thanks.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="/community/">
+<meta http-equiv="refresh" content="0; url=/community/">
+<h1>Redirecting...</h1>
+<a href="/community/">Click here if you are not redirected.</a>
+<script>location="/community/"</script>
diff --git a/docs/0.17.0/TimeBoundaryQuery.html b/docs/0.17.0/TimeBoundaryQuery.html
new file mode 100644
index 0000000..8e512e1
--- /dev/null
+++ b/docs/0.17.0/TimeBoundaryQuery.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="querying/timeboundaryquery.html">
+<meta http-equiv="refresh" content="0; url=querying/timeboundaryquery.html">
+<h1>Redirecting...</h1>
+<a href="querying/timeboundaryquery.html">Click here if you are not redirected.</a>
+<script>location="querying/timeboundaryquery.html"</script>
diff --git a/docs/0.17.0/TimeseriesQuery.html b/docs/0.17.0/TimeseriesQuery.html
new file mode 100644
index 0000000..8d7f3e8
--- /dev/null
+++ b/docs/0.17.0/TimeseriesQuery.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="querying/timeseriesquery.html">
+<meta http-equiv="refresh" content="0; url=querying/timeseriesquery.html">
+<h1>Redirecting...</h1>
+<a href="querying/timeseriesquery.html">Click here if you are not redirected.</a>
+<script>location="querying/timeseriesquery.html"</script>
diff --git a/docs/0.17.0/TopNMetricSpec.html b/docs/0.17.0/TopNMetricSpec.html
new file mode 100644
index 0000000..14acf27
--- /dev/null
+++ b/docs/0.17.0/TopNMetricSpec.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="querying/topnmetricspec.html">
+<meta http-equiv="refresh" content="0; url=querying/topnmetricspec.html">
+<h1>Redirecting...</h1>
+<a href="querying/topnmetricspec.html">Click here if you are not redirected.</a>
+<script>location="querying/topnmetricspec.html"</script>
diff --git a/docs/0.17.0/TopNQuery.html b/docs/0.17.0/TopNQuery.html
new file mode 100644
index 0000000..dd719fd
--- /dev/null
+++ b/docs/0.17.0/TopNQuery.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="querying/topnquery.html">
+<meta http-equiv="refresh" content="0; url=querying/topnquery.html">
+<h1>Redirecting...</h1>
+<a href="querying/topnquery.html">Click here if you are not redirected.</a>
+<script>location="querying/topnquery.html"</script>
diff --git a/docs/0.17.0/Tutorial-A-First-Look-at-Druid.html b/docs/0.17.0/Tutorial-A-First-Look-at-Druid.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.17.0/Tutorial-A-First-Look-at-Druid.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="tutorials/index.html">
+<meta http-equiv="refresh" content="0; url=tutorials/index.html">
+<h1>Redirecting...</h1>
+<a href="tutorials/index.html">Click here if you are not redirected.</a>
+<script>location="tutorials/index.html"</script>
diff --git a/docs/0.17.0/Tutorial-All-About-Queries.html b/docs/0.17.0/Tutorial-All-About-Queries.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.17.0/Tutorial-All-About-Queries.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="tutorials/index.html">
+<meta http-equiv="refresh" content="0; url=tutorials/index.html">
+<h1>Redirecting...</h1>
+<a href="tutorials/index.html">Click here if you are not redirected.</a>
+<script>location="tutorials/index.html"</script>
diff --git a/docs/0.17.0/Tutorial-Loading-Batch-Data.html b/docs/0.17.0/Tutorial-Loading-Batch-Data.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.17.0/Tutorial-Loading-Batch-Data.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="tutorials/index.html">
+<meta http-equiv="refresh" content="0; url=tutorials/index.html">
+<h1>Redirecting...</h1>
+<a href="tutorials/index.html">Click here if you are not redirected.</a>
+<script>location="tutorials/index.html"</script>
diff --git a/docs/0.17.0/Tutorial-Loading-Streaming-Data.html b/docs/0.17.0/Tutorial-Loading-Streaming-Data.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.17.0/Tutorial-Loading-Streaming-Data.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="tutorials/index.html">
+<meta http-equiv="refresh" content="0; url=tutorials/index.html">
+<h1>Redirecting...</h1>
+<a href="tutorials/index.html">Click here if you are not redirected.</a>
+<script>location="tutorials/index.html"</script>
diff --git a/docs/0.17.0/Tutorial-The-Druid-Cluster.html b/docs/0.17.0/Tutorial-The-Druid-Cluster.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.17.0/Tutorial-The-Druid-Cluster.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="tutorials/index.html">
+<meta http-equiv="refresh" content="0; url=tutorials/index.html">
+<h1>Redirecting...</h1>
+<a href="tutorials/index.html">Click here if you are not redirected.</a>
+<script>location="tutorials/index.html"</script>
diff --git a/docs/0.17.0/Tutorial:-A-First-Look-at-Druid.html b/docs/0.17.0/Tutorial:-A-First-Look-at-Druid.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.17.0/Tutorial:-A-First-Look-at-Druid.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="tutorials/index.html">
+<meta http-equiv="refresh" content="0; url=tutorials/index.html">
+<h1>Redirecting...</h1>
+<a href="tutorials/index.html">Click here if you are not redirected.</a>
+<script>location="tutorials/index.html"</script>
diff --git a/docs/0.17.0/Tutorial:-All-About-Queries.html b/docs/0.17.0/Tutorial:-All-About-Queries.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.17.0/Tutorial:-All-About-Queries.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="tutorials/index.html">
+<meta http-equiv="refresh" content="0; url=tutorials/index.html">
+<h1>Redirecting...</h1>
+<a href="tutorials/index.html">Click here if you are not redirected.</a>
+<script>location="tutorials/index.html"</script>
diff --git a/docs/0.17.0/Tutorial:-Loading-Batch-Data.html b/docs/0.17.0/Tutorial:-Loading-Batch-Data.html
new file mode 100644
index 0000000..744d5b6
--- /dev/null
+++ b/docs/0.17.0/Tutorial:-Loading-Batch-Data.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="tutorials/tutorial-batch.html">
+<meta http-equiv="refresh" content="0; url=tutorials/tutorial-batch.html">
+<h1>Redirecting...</h1>
+<a href="tutorials/tutorial-batch.html">Click here if you are not redirected.</a>
+<script>location="tutorials/tutorial-batch.html"</script>
diff --git a/docs/0.17.0/Tutorial:-Loading-Streaming-Data.html b/docs/0.17.0/Tutorial:-Loading-Streaming-Data.html
new file mode 100644
index 0000000..487fb6d
--- /dev/null
+++ b/docs/0.17.0/Tutorial:-Loading-Streaming-Data.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="tutorials/tutorial-kafka.html">
+<meta http-equiv="refresh" content="0; url=tutorials/tutorial-kafka.html">
+<h1>Redirecting...</h1>
+<a href="tutorials/tutorial-kafka.html">Click here if you are not redirected.</a>
+<script>location="tutorials/tutorial-kafka.html"</script>
diff --git a/docs/0.17.0/Tutorial:-Loading-Your-Data-Part-1.html b/docs/0.17.0/Tutorial:-Loading-Your-Data-Part-1.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.17.0/Tutorial:-Loading-Your-Data-Part-1.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="tutorials/index.html">
+<meta http-equiv="refresh" content="0; url=tutorials/index.html">
+<h1>Redirecting...</h1>
+<a href="tutorials/index.html">Click here if you are not redirected.</a>
+<script>location="tutorials/index.html"</script>
diff --git a/docs/0.17.0/Tutorial:-Loading-Your-Data-Part-2.html b/docs/0.17.0/Tutorial:-Loading-Your-Data-Part-2.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.17.0/Tutorial:-Loading-Your-Data-Part-2.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="tutorials/index.html">
+<meta http-equiv="refresh" content="0; url=tutorials/index.html">
+<h1>Redirecting...</h1>
+<a href="tutorials/index.html">Click here if you are not redirected.</a>
+<script>location="tutorials/index.html"</script>
diff --git a/docs/0.17.0/Tutorial:-The-Druid-Cluster.html b/docs/0.17.0/Tutorial:-The-Druid-Cluster.html
new file mode 100644
index 0000000..bd0e468
--- /dev/null
+++ b/docs/0.17.0/Tutorial:-The-Druid-Cluster.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="tutorials/cluster.html">
+<meta http-equiv="refresh" content="0; url=tutorials/cluster.html">
+<h1>Redirecting...</h1>
+<a href="tutorials/cluster.html">Click here if you are not redirected.</a>
+<script>location="tutorials/cluster.html"</script>
diff --git a/docs/0.17.0/Tutorial:-Webstream.html b/docs/0.17.0/Tutorial:-Webstream.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.17.0/Tutorial:-Webstream.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="tutorials/index.html">
+<meta http-equiv="refresh" content="0; url=tutorials/index.html">
+<h1>Redirecting...</h1>
+<a href="tutorials/index.html">Click here if you are not redirected.</a>
+<script>location="tutorials/index.html"</script>
diff --git a/docs/0.17.0/Tutorials.html b/docs/0.17.0/Tutorials.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.17.0/Tutorials.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="tutorials/index.html">
+<meta http-equiv="refresh" content="0; url=tutorials/index.html">
+<h1>Redirecting...</h1>
+<a href="tutorials/index.html">Click here if you are not redirected.</a>
+<script>location="tutorials/index.html"</script>
diff --git a/docs/0.17.0/Twitter-Tutorial.html b/docs/0.17.0/Twitter-Tutorial.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.17.0/Twitter-Tutorial.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="tutorials/index.html">
+<meta http-equiv="refresh" content="0; url=tutorials/index.html">
+<h1>Redirecting...</h1>
+<a href="tutorials/index.html">Click here if you are not redirected.</a>
+<script>location="tutorials/index.html"</script>
diff --git a/docs/0.17.0/Versioning.html b/docs/0.17.0/Versioning.html
new file mode 100644
index 0000000..fe2eb7c
--- /dev/null
+++ b/docs/0.17.0/Versioning.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="development/versioning.html">
+<meta http-equiv="refresh" content="0; url=development/versioning.html">
+<h1>Redirecting...</h1>
+<a href="development/versioning.html">Click here if you are not redirected.</a>
+<script>location="development/versioning.html"</script>
diff --git a/docs/0.17.0/ZooKeeper.html b/docs/0.17.0/ZooKeeper.html
new file mode 100644
index 0000000..52406ac
--- /dev/null
+++ b/docs/0.17.0/ZooKeeper.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="dependencies/zookeeper.html">
+<meta http-equiv="refresh" content="0; url=dependencies/zookeeper.html">
+<h1>Redirecting...</h1>
+<a href="dependencies/zookeeper.html">Click here if you are not redirected.</a>
+<script>location="dependencies/zookeeper.html"</script>
diff --git a/docs/0.17.0/alerts.html b/docs/0.17.0/alerts.html
new file mode 100644
index 0000000..6286bcd
--- /dev/null
+++ b/docs/0.17.0/alerts.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="operations/alerts.html">
+<meta http-equiv="refresh" content="0; url=operations/alerts.html">
+<h1>Redirecting...</h1>
+<a href="operations/alerts.html">Click here if you are not redirected.</a>
+<script>location="operations/alerts.html"</script>
diff --git a/docs/0.17.0/assets/druid-architecture.png b/docs/0.17.0/assets/druid-architecture.png
new file mode 100644
index 0000000..954a87b
Binary files /dev/null and b/docs/0.17.0/assets/druid-architecture.png differ
diff --git a/docs/0.17.0/assets/druid-column-types.png b/docs/0.17.0/assets/druid-column-types.png
new file mode 100644
index 0000000..9db56c0
Binary files /dev/null and b/docs/0.17.0/assets/druid-column-types.png differ
diff --git a/docs/0.17.0/assets/druid-dataflow-2x.png b/docs/0.17.0/assets/druid-dataflow-2x.png
new file mode 100644
index 0000000..ab1c583
Binary files /dev/null and b/docs/0.17.0/assets/druid-dataflow-2x.png differ
diff --git a/docs/0.17.0/assets/druid-dataflow-3.png b/docs/0.17.0/assets/druid-dataflow-3.png
new file mode 100644
index 0000000..355215c
Binary files /dev/null and b/docs/0.17.0/assets/druid-dataflow-3.png differ
diff --git a/docs/0.17.0/assets/druid-manage-1.png b/docs/0.17.0/assets/druid-manage-1.png
new file mode 100644
index 0000000..0d10c6e
Binary files /dev/null and b/docs/0.17.0/assets/druid-manage-1.png differ
diff --git a/docs/0.17.0/assets/druid-timeline.png b/docs/0.17.0/assets/druid-timeline.png
new file mode 100644
index 0000000..40380e2
Binary files /dev/null and b/docs/0.17.0/assets/druid-timeline.png differ
diff --git a/docs/0.17.0/assets/indexing_service.png b/docs/0.17.0/assets/indexing_service.png
new file mode 100644
index 0000000..a4462a4
Binary files /dev/null and b/docs/0.17.0/assets/indexing_service.png differ
diff --git a/docs/0.17.0/assets/segmentPropagation.png b/docs/0.17.0/assets/segmentPropagation.png
new file mode 100644
index 0000000..e1ec820
Binary files /dev/null and b/docs/0.17.0/assets/segmentPropagation.png differ
diff --git a/docs/0.17.0/assets/tutorial-batch-data-loader-01.png b/docs/0.17.0/assets/tutorial-batch-data-loader-01.png
new file mode 100644
index 0000000..ac3ef94
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-batch-data-loader-01.png differ
diff --git a/docs/0.17.0/assets/tutorial-batch-data-loader-02.png b/docs/0.17.0/assets/tutorial-batch-data-loader-02.png
new file mode 100644
index 0000000..b9def66
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-batch-data-loader-02.png differ
diff --git a/docs/0.17.0/assets/tutorial-batch-data-loader-03.png b/docs/0.17.0/assets/tutorial-batch-data-loader-03.png
new file mode 100644
index 0000000..4fa6138
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-batch-data-loader-03.png differ
diff --git a/docs/0.17.0/assets/tutorial-batch-data-loader-04.png b/docs/0.17.0/assets/tutorial-batch-data-loader-04.png
new file mode 100644
index 0000000..e96cd1b
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-batch-data-loader-04.png differ
diff --git a/docs/0.17.0/assets/tutorial-batch-data-loader-05.png b/docs/0.17.0/assets/tutorial-batch-data-loader-05.png
new file mode 100644
index 0000000..4b6ba4d
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-batch-data-loader-05.png differ
diff --git a/docs/0.17.0/assets/tutorial-batch-data-loader-06.png b/docs/0.17.0/assets/tutorial-batch-data-loader-06.png
new file mode 100644
index 0000000..57ad576
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-batch-data-loader-06.png differ
diff --git a/docs/0.17.0/assets/tutorial-batch-data-loader-07.png b/docs/0.17.0/assets/tutorial-batch-data-loader-07.png
new file mode 100644
index 0000000..0b53ecc
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-batch-data-loader-07.png differ
diff --git a/docs/0.17.0/assets/tutorial-batch-data-loader-08.png b/docs/0.17.0/assets/tutorial-batch-data-loader-08.png
new file mode 100644
index 0000000..6738ceb
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-batch-data-loader-08.png differ
diff --git a/docs/0.17.0/assets/tutorial-batch-data-loader-09.png b/docs/0.17.0/assets/tutorial-batch-data-loader-09.png
new file mode 100644
index 0000000..1a3af00
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-batch-data-loader-09.png differ
diff --git a/docs/0.17.0/assets/tutorial-batch-data-loader-10.png b/docs/0.17.0/assets/tutorial-batch-data-loader-10.png
new file mode 100644
index 0000000..0e72071
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-batch-data-loader-10.png differ
diff --git a/docs/0.17.0/assets/tutorial-batch-data-loader-11.png b/docs/0.17.0/assets/tutorial-batch-data-loader-11.png
new file mode 100644
index 0000000..d04497a
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-batch-data-loader-11.png differ
diff --git a/docs/0.17.0/assets/tutorial-batch-submit-task-01.png b/docs/0.17.0/assets/tutorial-batch-submit-task-01.png
new file mode 100644
index 0000000..0300318
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-batch-submit-task-01.png differ
diff --git a/docs/0.17.0/assets/tutorial-batch-submit-task-02.png b/docs/0.17.0/assets/tutorial-batch-submit-task-02.png
new file mode 100644
index 0000000..22243f4
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-batch-submit-task-02.png differ
diff --git a/docs/0.17.0/assets/tutorial-compaction-01.png b/docs/0.17.0/assets/tutorial-compaction-01.png
new file mode 100644
index 0000000..aeb9bf3
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-compaction-01.png differ
diff --git a/docs/0.17.0/assets/tutorial-compaction-02.png b/docs/0.17.0/assets/tutorial-compaction-02.png
new file mode 100644
index 0000000..836d8a7
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-compaction-02.png differ
diff --git a/docs/0.17.0/assets/tutorial-compaction-03.png b/docs/0.17.0/assets/tutorial-compaction-03.png
new file mode 100644
index 0000000..d51f8f8
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-compaction-03.png differ
diff --git a/docs/0.17.0/assets/tutorial-compaction-04.png b/docs/0.17.0/assets/tutorial-compaction-04.png
new file mode 100644
index 0000000..46c5b1d
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-compaction-04.png differ
diff --git a/docs/0.17.0/assets/tutorial-compaction-05.png b/docs/0.17.0/assets/tutorial-compaction-05.png
new file mode 100644
index 0000000..e692694
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-compaction-05.png differ
diff --git a/docs/0.17.0/assets/tutorial-compaction-06.png b/docs/0.17.0/assets/tutorial-compaction-06.png
new file mode 100644
index 0000000..55c999f
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-compaction-06.png differ
diff --git a/docs/0.17.0/assets/tutorial-compaction-07.png b/docs/0.17.0/assets/tutorial-compaction-07.png
new file mode 100644
index 0000000..661e897
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-compaction-07.png differ
diff --git a/docs/0.17.0/assets/tutorial-compaction-08.png b/docs/0.17.0/assets/tutorial-compaction-08.png
new file mode 100644
index 0000000..6e3f1aa
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-compaction-08.png differ
diff --git a/docs/0.17.0/assets/tutorial-deletion-01.png b/docs/0.17.0/assets/tutorial-deletion-01.png
new file mode 100644
index 0000000..de68d38
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-deletion-01.png differ
diff --git a/docs/0.17.0/assets/tutorial-deletion-02.png b/docs/0.17.0/assets/tutorial-deletion-02.png
new file mode 100644
index 0000000..ffe4585
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-deletion-02.png differ
diff --git a/docs/0.17.0/assets/tutorial-deletion-03.png b/docs/0.17.0/assets/tutorial-deletion-03.png
new file mode 100644
index 0000000..221774f
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-deletion-03.png differ
diff --git a/docs/0.17.0/assets/tutorial-kafka-data-loader-01.png b/docs/0.17.0/assets/tutorial-kafka-data-loader-01.png
new file mode 100644
index 0000000..12e2820
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-kafka-data-loader-01.png differ
diff --git a/docs/0.17.0/assets/tutorial-kafka-data-loader-02.png b/docs/0.17.0/assets/tutorial-kafka-data-loader-02.png
new file mode 100644
index 0000000..7ba3583
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-kafka-data-loader-02.png differ
diff --git a/docs/0.17.0/assets/tutorial-kafka-data-loader-03.png b/docs/0.17.0/assets/tutorial-kafka-data-loader-03.png
new file mode 100644
index 0000000..0c827b9
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-kafka-data-loader-03.png differ
diff --git a/docs/0.17.0/assets/tutorial-kafka-data-loader-04.png b/docs/0.17.0/assets/tutorial-kafka-data-loader-04.png
new file mode 100644
index 0000000..c772e35
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-kafka-data-loader-04.png differ
diff --git a/docs/0.17.0/assets/tutorial-kafka-data-loader-05.png b/docs/0.17.0/assets/tutorial-kafka-data-loader-05.png
new file mode 100644
index 0000000..4b6ba4d
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-kafka-data-loader-05.png differ
diff --git a/docs/0.17.0/assets/tutorial-kafka-data-loader-06.png b/docs/0.17.0/assets/tutorial-kafka-data-loader-06.png
new file mode 100644
index 0000000..bcd9567
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-kafka-data-loader-06.png differ
diff --git a/docs/0.17.0/assets/tutorial-kafka-data-loader-07.png b/docs/0.17.0/assets/tutorial-kafka-data-loader-07.png
new file mode 100644
index 0000000..b2b9c25
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-kafka-data-loader-07.png differ
diff --git a/docs/0.17.0/assets/tutorial-kafka-data-loader-08.png b/docs/0.17.0/assets/tutorial-kafka-data-loader-08.png
new file mode 100644
index 0000000..1b202b4
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-kafka-data-loader-08.png differ
diff --git a/docs/0.17.0/assets/tutorial-kafka-data-loader-09.png b/docs/0.17.0/assets/tutorial-kafka-data-loader-09.png
new file mode 100644
index 0000000..1775ecd
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-kafka-data-loader-09.png differ
diff --git a/docs/0.17.0/assets/tutorial-kafka-data-loader-10.png b/docs/0.17.0/assets/tutorial-kafka-data-loader-10.png
new file mode 100644
index 0000000..cb9c44c
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-kafka-data-loader-10.png differ
diff --git a/docs/0.17.0/assets/tutorial-kafka-data-loader-11.png b/docs/0.17.0/assets/tutorial-kafka-data-loader-11.png
new file mode 100644
index 0000000..9b6aa24
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-kafka-data-loader-11.png differ
diff --git a/docs/0.17.0/assets/tutorial-kafka-data-loader-12.png b/docs/0.17.0/assets/tutorial-kafka-data-loader-12.png
new file mode 100644
index 0000000..c62276d
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-kafka-data-loader-12.png differ
diff --git a/docs/0.17.0/assets/tutorial-kafka-submit-supervisor-01.png b/docs/0.17.0/assets/tutorial-kafka-submit-supervisor-01.png
new file mode 100644
index 0000000..debf3e2
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-kafka-submit-supervisor-01.png differ
diff --git a/docs/0.17.0/assets/tutorial-query-01.png b/docs/0.17.0/assets/tutorial-query-01.png
new file mode 100644
index 0000000..8884d9b
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-query-01.png differ
diff --git a/docs/0.17.0/assets/tutorial-query-02.png b/docs/0.17.0/assets/tutorial-query-02.png
new file mode 100644
index 0000000..cf407e3
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-query-02.png differ
diff --git a/docs/0.17.0/assets/tutorial-query-03.png b/docs/0.17.0/assets/tutorial-query-03.png
new file mode 100644
index 0000000..c3b599c
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-query-03.png differ
diff --git a/docs/0.17.0/assets/tutorial-query-04.png b/docs/0.17.0/assets/tutorial-query-04.png
new file mode 100644
index 0000000..3f800a6
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-query-04.png differ
diff --git a/docs/0.17.0/assets/tutorial-query-05.png b/docs/0.17.0/assets/tutorial-query-05.png
new file mode 100644
index 0000000..2fc59ce
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-query-05.png differ
diff --git a/docs/0.17.0/assets/tutorial-query-06.png b/docs/0.17.0/assets/tutorial-query-06.png
new file mode 100644
index 0000000..60b4e1a
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-query-06.png differ
diff --git a/docs/0.17.0/assets/tutorial-query-07.png b/docs/0.17.0/assets/tutorial-query-07.png
new file mode 100644
index 0000000..d2e5a85
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-query-07.png differ
diff --git a/docs/0.17.0/assets/tutorial-quickstart-01.png b/docs/0.17.0/assets/tutorial-quickstart-01.png
new file mode 100644
index 0000000..d6ee11b
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-quickstart-01.png differ
diff --git a/docs/0.17.0/assets/tutorial-retention-00.png b/docs/0.17.0/assets/tutorial-retention-00.png
new file mode 100644
index 0000000..a3f84a9
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-retention-00.png differ
diff --git a/docs/0.17.0/assets/tutorial-retention-01.png b/docs/0.17.0/assets/tutorial-retention-01.png
new file mode 100644
index 0000000..35a97c2
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-retention-01.png differ
diff --git a/docs/0.17.0/assets/tutorial-retention-02.png b/docs/0.17.0/assets/tutorial-retention-02.png
new file mode 100644
index 0000000..f38fad0
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-retention-02.png differ
diff --git a/docs/0.17.0/assets/tutorial-retention-03.png b/docs/0.17.0/assets/tutorial-retention-03.png
new file mode 100644
index 0000000..256836a
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-retention-03.png differ
diff --git a/docs/0.17.0/assets/tutorial-retention-04.png b/docs/0.17.0/assets/tutorial-retention-04.png
new file mode 100644
index 0000000..d39495f
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-retention-04.png differ
diff --git a/docs/0.17.0/assets/tutorial-retention-05.png b/docs/0.17.0/assets/tutorial-retention-05.png
new file mode 100644
index 0000000..638a752
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-retention-05.png differ
diff --git a/docs/0.17.0/assets/tutorial-retention-06.png b/docs/0.17.0/assets/tutorial-retention-06.png
new file mode 100644
index 0000000..f47cbff
Binary files /dev/null and b/docs/0.17.0/assets/tutorial-retention-06.png differ
diff --git a/docs/0.17.0/assets/web-console-01-home-view.png b/docs/0.17.0/assets/web-console-01-home-view.png
new file mode 100644
index 0000000..8388636
Binary files /dev/null and b/docs/0.17.0/assets/web-console-01-home-view.png differ
diff --git a/docs/0.17.0/assets/web-console-02-data-loader-1.png b/docs/0.17.0/assets/web-console-02-data-loader-1.png
new file mode 100644
index 0000000..64c5189
Binary files /dev/null and b/docs/0.17.0/assets/web-console-02-data-loader-1.png differ
diff --git a/docs/0.17.0/assets/web-console-03-data-loader-2.png b/docs/0.17.0/assets/web-console-03-data-loader-2.png
new file mode 100644
index 0000000..ab3aad5
Binary files /dev/null and b/docs/0.17.0/assets/web-console-03-data-loader-2.png differ
diff --git a/docs/0.17.0/assets/web-console-04-datasources.png b/docs/0.17.0/assets/web-console-04-datasources.png
new file mode 100644
index 0000000..267c175
Binary files /dev/null and b/docs/0.17.0/assets/web-console-04-datasources.png differ
diff --git a/docs/0.17.0/assets/web-console-05-retention.png b/docs/0.17.0/assets/web-console-05-retention.png
new file mode 100644
index 0000000..409a624
Binary files /dev/null and b/docs/0.17.0/assets/web-console-05-retention.png differ
diff --git a/docs/0.17.0/assets/web-console-06-segments.png b/docs/0.17.0/assets/web-console-06-segments.png
new file mode 100644
index 0000000..8b6bd83
Binary files /dev/null and b/docs/0.17.0/assets/web-console-06-segments.png differ
diff --git a/docs/0.17.0/assets/web-console-07-supervisors.png b/docs/0.17.0/assets/web-console-07-supervisors.png
new file mode 100644
index 0000000..9d20b32
Binary files /dev/null and b/docs/0.17.0/assets/web-console-07-supervisors.png differ
diff --git a/docs/0.17.0/assets/web-console-08-supervisor-status.png b/docs/0.17.0/assets/web-console-08-supervisor-status.png
new file mode 100644
index 0000000..42625c2
Binary files /dev/null and b/docs/0.17.0/assets/web-console-08-supervisor-status.png differ
diff --git a/docs/0.17.0/assets/web-console-09-task-status.png b/docs/0.17.0/assets/web-console-09-task-status.png
new file mode 100644
index 0000000..1731b62
Binary files /dev/null and b/docs/0.17.0/assets/web-console-09-task-status.png differ
diff --git a/docs/0.17.0/assets/web-console-10-servers.png b/docs/0.17.0/assets/web-console-10-servers.png
new file mode 100644
index 0000000..a0df368
Binary files /dev/null and b/docs/0.17.0/assets/web-console-10-servers.png differ
diff --git a/docs/0.17.0/assets/web-console-11-query-sql.png b/docs/0.17.0/assets/web-console-11-query-sql.png
new file mode 100644
index 0000000..9b7ead5
Binary files /dev/null and b/docs/0.17.0/assets/web-console-11-query-sql.png differ
diff --git a/docs/0.17.0/assets/web-console-12-query-rune.png b/docs/0.17.0/assets/web-console-12-query-rune.png
new file mode 100644
index 0000000..f980cb5
Binary files /dev/null and b/docs/0.17.0/assets/web-console-12-query-rune.png differ
diff --git a/docs/0.17.0/assets/web-console-13-lookups.png b/docs/0.17.0/assets/web-console-13-lookups.png
new file mode 100644
index 0000000..b284d19
Binary files /dev/null and b/docs/0.17.0/assets/web-console-13-lookups.png differ
diff --git a/docs/0.17.0/comparisons/druid-vs-cassandra.html b/docs/0.17.0/comparisons/druid-vs-cassandra.html
new file mode 100644
index 0000000..235af8f
--- /dev/null
+++ b/docs/0.17.0/comparisons/druid-vs-cassandra.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="druid-vs-key-value.html">
+<meta http-equiv="refresh" content="0; url=druid-vs-key-value.html">
+<h1>Redirecting...</h1>
+<a href="druid-vs-key-value.html">Click here if you are not redirected.</a>
+<script>location="druid-vs-key-value.html"</script>
diff --git a/docs/0.17.0/comparisons/druid-vs-elasticsearch.html b/docs/0.17.0/comparisons/druid-vs-elasticsearch.html
new file mode 100644
index 0000000..5070027
--- /dev/null
+++ b/docs/0.17.0/comparisons/druid-vs-elasticsearch.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Druid vs Elasticsearch · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/comparisons/druid-vs-elasticsearch.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:ver [...]
+              window.dataLayer = window.dataLayer || [];
+              function gtag(){dataLayer.push(arguments); }
+              gtag('js', new Date());
+              gtag('config', 'UA-131010415-1');
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/comparisons/druid-vs-elasticsearch.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Apache Druid vs Elasticsearch</h1></header><article><div><span><!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<p>We are not experts on search systems, if anything is incorrect about our portrayal, please let us know on the mailing list or via some other means.</p>
+<p>Elasticsearch is a search system based on Apache Lucene. It provides full text search for schema-free documents
+and provides access to raw event level data. Elasticsearch is increasingly adding more support for analytics and aggregations.
+<a href="https://groups.google.com/forum/#!msg/druid-development/nlpwTHNclj8/sOuWlKOzPpYJ">Some members of the community</a> have pointed out
+the resource requirements for data ingestion and aggregation in Elasticsearch is much higher than those of Druid.</p>
+<p>Elasticsearch also does not support data summarization/roll-up at ingestion time, which can compact the data that needs to be
+stored up to 100x with real-world data sets. This leads to Elasticsearch having greater storage requirements.</p>
+<p>Druid focuses on OLAP work flows. Druid is optimized for high performance (fast aggregation and ingestion) at low cost,
+and supports a wide range of analytic operations. Druid has some basic search support for structured event data, but does not support
+full text search. Druid also does not support completely unstructured data. Measures must be defined in a Druid schema such that
+summarization/roll-up can be done.</p>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/misc/papers-and-talks.html"><span class="arrow-prev">← </span><span>Papers</span></a><a class="docs-next button" href="/docs/0.17.0/comparisons/druid-vs-key-value.html"><span class="function-name-prevnext">Apache Druid vs. Key/Value Stores (HBase/Cassandra/OpenTSDB)</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                
+                apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
+                indexName: 'apache_druid',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/docs/0.17.0/comparisons/druid-vs-hadoop.html b/docs/0.17.0/comparisons/druid-vs-hadoop.html
new file mode 100644
index 0000000..cab995e
--- /dev/null
+++ b/docs/0.17.0/comparisons/druid-vs-hadoop.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="druid-vs-sql-on-hadoop.html">
+<meta http-equiv="refresh" content="0; url=druid-vs-sql-on-hadoop.html">
+<h1>Redirecting...</h1>
+<a href="druid-vs-sql-on-hadoop.html">Click here if you are not redirected.</a>
+<script>location="druid-vs-sql-on-hadoop.html"</script>
diff --git a/docs/0.17.0/comparisons/druid-vs-impala-or-shark.html b/docs/0.17.0/comparisons/druid-vs-impala-or-shark.html
new file mode 100644
index 0000000..cab995e
--- /dev/null
+++ b/docs/0.17.0/comparisons/druid-vs-impala-or-shark.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="druid-vs-sql-on-hadoop.html">
+<meta http-equiv="refresh" content="0; url=druid-vs-sql-on-hadoop.html">
+<h1>Redirecting...</h1>
+<a href="druid-vs-sql-on-hadoop.html">Click here if you are not redirected.</a>
+<script>location="druid-vs-sql-on-hadoop.html"</script>
diff --git a/docs/0.17.0/comparisons/druid-vs-key-value.html b/docs/0.17.0/comparisons/druid-vs-key-value.html
new file mode 100644
index 0000000..764df63
--- /dev/null
+++ b/docs/0.17.0/comparisons/druid-vs-key-value.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Druid vs. Key/Value Stores (HBase/Cassandra/OpenTSDB) · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/comparisons/druid-vs-key-value.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en" [...]
+              window.dataLayer = window.dataLayer || [];
+              function gtag(){dataLayer.push(arguments); }
+              gtag('js', new Date());
+              gtag('config', 'UA-131010415-1');
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/comparisons/druid-vs-key-value.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Apache Druid vs. Key/Value Stores (HBase/Cassandra/OpenTSDB)</h1></header><article><div><span><!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<p>Druid is highly optimized for scans and aggregations, it supports arbitrarily deep drill downs into data sets. This same functionality
+is supported in key/value stores in 2 ways:</p>
+<ol>
+<li>Pre-compute all permutations of possible user queries</li>
+<li>Range scans on event data</li>
+</ol>
+<p>When pre-computing results, the key is the exact parameters of the query, and the value is the result of the query.
+The queries return extremely quickly, but at the cost of flexibility, as ad-hoc exploratory queries are not possible with
+pre-computing every possible query permutation. Pre-computing all permutations of all ad-hoc queries leads to result sets
+that grow exponentially with the number of columns of a data set, and pre-computing queries for complex real-world data sets
+can require hours of pre-processing time.</p>
+<p>The other approach to using key/value stores for aggregations to use the dimensions of an event as the key and the event measures as the value.
+Aggregations are done by issuing range scans on this data. Timeseries specific databases such as OpenTSDB use this approach.
+One of the limitations here is that the key/value storage model does not have indexes for any kind of filtering other than prefix ranges,
+which can be used to filter a query down to a metric and time range, but cannot resolve complex predicates to narrow the exact data to scan.
+When the number of rows to scan gets large, this limitation can greatly reduce performance. It is also harder to achieve good
+locality with key/value stores because most don’t support pushing down aggregates to the storage layer.</p>
+<p>For arbitrary exploration of data (flexible data filtering), Druid's custom column format enables ad-hoc queries without pre-computation. The format
+also enables fast scans on columns, which is important for good aggregation performance.</p>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/comparisons/druid-vs-elasticsearch.html"><span class="arrow-prev">← </span><span>Apache Druid vs Elasticsearch</span></a><a class="docs-next button" href="/docs/0.17.0/comparisons/druid-vs-kudu.html"><span>Apache Druid vs Kudu</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="c [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                
+                apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
+                indexName: 'apache_druid',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/docs/0.17.0/comparisons/druid-vs-kudu.html b/docs/0.17.0/comparisons/druid-vs-kudu.html
new file mode 100644
index 0000000..02caaa7
--- /dev/null
+++ b/docs/0.17.0/comparisons/druid-vs-kudu.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Druid vs Kudu · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/comparisons/druid-vs-kudu.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.1 [...]
+              window.dataLayer = window.dataLayer || [];
+              function gtag(){dataLayer.push(arguments); }
+              gtag('js', new Date());
+              gtag('config', 'UA-131010415-1');
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/comparisons/druid-vs-kudu.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Apache Druid vs Kudu</h1></header><article><div><span><!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<p>Kudu's storage format enables single row updates, whereas updates to existing Druid segments requires recreating the segment, so theoretically
+the process for updating old values should be higher latency in Druid. However, the requirements in Kudu for maintaining extra head space to store
+updates as well as organizing data by id instead of time has the potential to introduce some extra latency and accessing
+of data that is not need to answer a query at query time.</p>
+<p>Druid summarizes/rollups up data at ingestion time, which in practice reduces the raw data that needs to be
+stored significantly (up to 40 times on average), and increases performance of scanning raw data significantly.
+Druid segments also contain bitmap indexes for fast filtering, which Kudu does not currently support.
+Druid's segment architecture is heavily geared towards fast aggregates and filters, and for OLAP workflows. Appends are very
+fast in Druid, whereas updates of older data is higher latency. This is by design as the data Druid is good for is typically event data,
+and does not need to be updated too frequently. Kudu supports arbitrary primary keys with uniqueness constraints, and
+efficient lookup by ranges of those keys. Kudu chooses not to include the execution engine, but supports sufficient
+operations so as to allow node-local processing from the execution engines. This means that Kudu can support multiple frameworks on the same data (e.g., MR, Spark, and SQL).
+Druid includes its own query layer that allows it to push down aggregations and computations directly to data processes for faster query processing.</p>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/comparisons/druid-vs-key-value.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">Apache Druid vs. Key/Value Stores (HBase/Cassandra/OpenTSDB)</span></a><a class="docs-next button" href="/docs/0.17.0/comparisons/druid-vs-redshift.html"><span>Apache Druid vs Redshift</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                
+                apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
+                indexName: 'apache_druid',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/comparisons/druid-vs-redshift.html b/docs/0.17.0/comparisons/druid-vs-redshift.html
similarity index 50%
copy from docs/latest/comparisons/druid-vs-redshift.html
copy to docs/0.17.0/comparisons/druid-vs-redshift.html
index 873daf9..639fb6d 100644
--- a/docs/latest/comparisons/druid-vs-redshift.html
+++ b/docs/0.17.0/comparisons/druid-vs-redshift.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Druid vs Redshift · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/comparisons/druid-vs-redshift.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" cont [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Druid vs Redshift · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/comparisons/druid-vs-redshift.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" cont [...]
               window.dataLayer = window.dataLayer || [];
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -59,7 +59,7 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-druid/edit/master/docs/comparisons/druid-vs-redshift.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Apache Druid vs Redshift</h1></header><article><div><span><!--
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/comparisons/druid-vs-redshift.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Apache Druid vs Redshift</h1></header><article><div><span><!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
   ~ or more contributor license agreements.  See the NOTICE file
   ~ distributed with this work for additional information
@@ -99,7 +99,7 @@
 <h3><a class="anchor" aria-hidden="true" id="indexing-strategy"></a><a href="#indexing-strategy" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
 <p>Along with column oriented structures, Druid uses indexing structures to speed up query execution when a filter is provided. Indexing structures do increase storage overhead (and make it more difficult to allow for mutation), but they also significantly speed up queries.</p>
 <p>ParAccel does not appear to employ indexing strategies.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/comparisons/druid-vs-kudu.html"><span class="arrow-prev">← </span><span>Apache Druid vs Kudu</span></a><a class="docs-next button" href="/docs/latest/comparisons/druid-vs-spark.html"><span>Apache Druid vs Spark</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"><div c [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/comparisons/druid-vs-kudu.html"><span class="arrow-prev">← </span><span>Apache Druid vs Kudu</span></a><a class="docs-next button" href="/docs/0.17.0/comparisons/druid-vs-spark.html"><span>Apache Druid vs Spark</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"><div c [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -116,6 +116,6 @@
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.16.1-incubating"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.17.0/comparisons/druid-vs-spark.html b/docs/0.17.0/comparisons/druid-vs-spark.html
new file mode 100644
index 0000000..efacb92
--- /dev/null
+++ b/docs/0.17.0/comparisons/druid-vs-spark.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Druid vs Spark · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/comparisons/druid-vs-spark.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0 [...]
+              window.dataLayer = window.dataLayer || [];
+              function gtag(){dataLayer.push(arguments); }
+              gtag('js', new Date());
+              gtag('config', 'UA-131010415-1');
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/comparisons/druid-vs-spark.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Apache Druid vs Spark</h1></header><article><div><span><!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<p>Druid and Spark are complementary solutions as Druid can be used to accelerate OLAP queries in Spark.</p>
+<p>Spark is a general cluster computing framework initially designed around the concept of Resilient Distributed Datasets (RDDs).
+RDDs enable data reuse by persisting intermediate results
+in memory and enable Spark to provide fast computations for iterative algorithms.
+This is especially beneficial for certain work flows such as machine
+learning, where the same operation may be applied over and over
+again until some result is converged upon. The generality of Spark makes it very suitable as an engine to process (clean or transform) data.
+Although Spark provides the ability to query data through Spark SQL, much like Hadoop, the query latencies are not specifically targeted to be interactive (sub-second).</p>
+<p>Druid's focus is on extremely low latency queries, and is ideal for powering applications used by thousands of users, and where each query must
+return fast enough such that users can interactively explore through data. Druid fully indexes all data, and can act as a middle layer between Spark and your application.
+One typical setup seen in production is to process data in Spark, and load the processed data into Druid for faster access.</p>
+<p>For more information about using Druid and Spark together, including benchmarks of the two systems, please see:</p>
+<p><a href="https://www.linkedin.com/pulse/combining-druid-spark-interactive-flexible-analytics-scale-butani">https://www.linkedin.com/pulse/combining-druid-spark-interactive-flexible-analytics-scale-butani</a></p>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/comparisons/druid-vs-redshift.html"><span class="arrow-prev">← </span><span>Apache Druid vs Redshift</span></a><a class="docs-next button" href="/docs/0.17.0/comparisons/druid-vs-sql-on-hadoop.html"><span>Apache Druid vs SQL-on-Hadoop</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div  [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                
+                apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
+                indexName: 'apache_druid',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/docs/0.17.0/comparisons/druid-vs-sql-on-hadoop.html b/docs/0.17.0/comparisons/druid-vs-sql-on-hadoop.html
new file mode 100644
index 0000000..aa580c4
--- /dev/null
+++ b/docs/0.17.0/comparisons/druid-vs-sql-on-hadoop.html
@@ -0,0 +1,143 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Druid vs SQL-on-Hadoop · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/comparisons/druid-vs-sql-on-hadoop.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:ver [...]
+              window.dataLayer = window.dataLayer || [];
+              function gtag(){dataLayer.push(arguments); }
+              gtag('js', new Date());
+              gtag('config', 'UA-131010415-1');
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/comparisons/druid-vs-sql-on-hadoop.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Apache Druid vs SQL-on-Hadoop</h1></header><article><div><span><!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<p>SQL-on-Hadoop engines provide an
+execution engine for various data formats and data stores, and
+many can be made to push down computations down to Druid, while providing a SQL interface to Druid.</p>
+<p>For a direct comparison between the technologies and when to only use one or the other, things basically comes down to your
+product requirements and what the systems were designed to do.</p>
+<p>Druid was designed to</p>
+<ol>
+<li>be an always on service</li>
+<li>ingest data in real-time</li>
+<li>handle slice-n-dice style ad-hoc queries</li>
+</ol>
+<p>SQL-on-Hadoop engines generally sidestep Map/Reduce, instead querying data directly from HDFS or, in some cases, other storage systems.
+Some of these engines (including Impala and Presto) can be co-located with HDFS data nodes and coordinate with them to achieve data locality for queries.
+What does this mean?  We can talk about it in terms of three general areas</p>
+<ol>
+<li>Queries</li>
+<li>Data Ingestion</li>
+<li>Query Flexibility</li>
+</ol>
+<h3><a class="anchor" aria-hidden="true" id="queries"></a><a href="#queries" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
+<p>Druid segments stores data in a custom column format. Segments are scanned directly as part of queries and each Druid server
+calculates a set of results that are eventually merged at the Broker level. This means the data that is transferred between servers
+are queries and results, and all computation is done internally as part of the Druid servers.</p>
+<p>Most SQL-on-Hadoop engines are responsible for query planning and execution for underlying storage layers and storage formats.
+They are processes that stay on even if there is no query running (eliminating the JVM startup costs from Hadoop MapReduce).
+Some (Impala/Presto) SQL-on-Hadoop engines have daemon processes that can be run where the data is stored, virtually eliminating network transfer costs. There is still
+some latency overhead (e.g. serialization/deserialization time) associated with pulling data from the underlying storage layer into the computation layer. We are unaware of exactly
+how much of a performance impact this makes.</p>
+<h3><a class="anchor" aria-hidden="true" id="data-ingestion"></a><a href="#data-ingestion" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
+<p>Druid is built to allow for real-time ingestion of data.  You can ingest data and query it immediately upon ingestion,
+the latency between how quickly the event is reflected in the data is dominated by how long it takes to deliver the event to Druid.</p>
+<p>SQL-on-Hadoop, being based on data in HDFS or some other backing store, are limited in their data ingestion rates by the
+rate at which that backing store can make data available.  Generally, the backing store is the biggest bottleneck for
+how quickly data can become available.</p>
+<h3><a class="anchor" aria-hidden="true" id="query-flexibility"></a><a href="#query-flexibility" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
+<p>Druid's query language is fairly low level and maps to how Druid operates internally. Although Druid can be combined with a high level query
+planner such as <a href="https://github.com/implydata/plywood">Plywood</a> to support most SQL queries and analytic SQL queries (minus joins among large tables),
+base Druid is less flexible than SQL-on-Hadoop solutions for generic processing.</p>
+<p>SQL-on-Hadoop support SQL style queries with full joins.</p>
+<h2><a class="anchor" aria-hidden="true" id="druid-vs-parquet"></a><a href="#druid-vs-parquet" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>Parquet is a column storage format that is designed to work with SQL-on-Hadoop engines. Parquet doesn't have a query execution engine, and instead
+relies on external sources to pull data out of it.</p>
+<p>Druid's storage format is highly optimized for linear scans. Although Druid has support for nested data, Parquet's storage format is much
+more hierarchical, and is more designed for binary chunking. In theory, this should lead to faster scans in Druid.</p>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/comparisons/druid-vs-spark.html"><span class="arrow-prev">← </span><span>Apache Druid vs Spark</span></a><a class="docs-next button" href="/docs/0.17.0/design/auth.html"><span>Authentication and Authorization</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#druid-vs-parquet">Druid vs Parquet</a></li></ul></nav></ [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                
+                apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
+                indexName: 'apache_druid',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/docs/0.17.0/comparisons/druid-vs-vertica.html b/docs/0.17.0/comparisons/druid-vs-vertica.html
new file mode 100644
index 0000000..a1d74ac
--- /dev/null
+++ b/docs/0.17.0/comparisons/druid-vs-vertica.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="druid-vs-redshift.html">
+<meta http-equiv="refresh" content="0; url=druid-vs-redshift.html">
+<h1>Redirecting...</h1>
+<a href="druid-vs-redshift.html">Click here if you are not redirected.</a>
+<script>location="druid-vs-redshift.html"</script>
diff --git a/docs/0.17.0/configuration/auth.html b/docs/0.17.0/configuration/auth.html
new file mode 100644
index 0000000..ea2aebe
--- /dev/null
+++ b/docs/0.17.0/configuration/auth.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../design/auth.html">
+<meta http-equiv="refresh" content="0; url=../design/auth.html">
+<h1>Redirecting...</h1>
+<a href="../design/auth.html">Click here if you are not redirected.</a>
+<script>location="../design/auth.html"</script>
diff --git a/docs/0.17.0/configuration/broker.html b/docs/0.17.0/configuration/broker.html
new file mode 100644
index 0000000..72363c4
--- /dev/null
+++ b/docs/0.17.0/configuration/broker.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../configuration/index.html#broker">
+<meta http-equiv="refresh" content="0; url=../configuration/index.html#broker">
+<h1>Redirecting...</h1>
+<a href="../configuration/index.html#broker">Click here if you are not redirected.</a>
+<script>location="../configuration/index.html#broker"</script>
diff --git a/docs/0.17.0/configuration/caching.html b/docs/0.17.0/configuration/caching.html
new file mode 100644
index 0000000..dcb5dd6
--- /dev/null
+++ b/docs/0.17.0/configuration/caching.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../configuration/index.html#cache-configuration">
+<meta http-equiv="refresh" content="0; url=../configuration/index.html#cache-configuration">
+<h1>Redirecting...</h1>
+<a href="../configuration/index.html#cache-configuration">Click here if you are not redirected.</a>
+<script>location="../configuration/index.html#cache-configuration"</script>
diff --git a/docs/0.17.0/configuration/coordinator.html b/docs/0.17.0/configuration/coordinator.html
new file mode 100644
index 0000000..e32a17a
--- /dev/null
+++ b/docs/0.17.0/configuration/coordinator.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../configuration/index.html#coordinator">
+<meta http-equiv="refresh" content="0; url=../configuration/index.html#coordinator">
+<h1>Redirecting...</h1>
+<a href="../configuration/index.html#coordinator">Click here if you are not redirected.</a>
+<script>location="../configuration/index.html#coordinator"</script>
diff --git a/docs/0.17.0/configuration/hadoop.html b/docs/0.17.0/configuration/hadoop.html
new file mode 100644
index 0000000..a14b2fb
--- /dev/null
+++ b/docs/0.17.0/configuration/hadoop.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../ingestion/hadoop.html">
+<meta http-equiv="refresh" content="0; url=../ingestion/hadoop.html">
+<h1>Redirecting...</h1>
+<a href="../ingestion/hadoop.html">Click here if you are not redirected.</a>
+<script>location="../ingestion/hadoop.html"</script>
diff --git a/docs/0.17.0/configuration/historical.html b/docs/0.17.0/configuration/historical.html
new file mode 100644
index 0000000..1112bc0
--- /dev/null
+++ b/docs/0.17.0/configuration/historical.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../configuration/index.html#historical">
+<meta http-equiv="refresh" content="0; url=../configuration/index.html#historical">
+<h1>Redirecting...</h1>
+<a href="../configuration/index.html#historical">Click here if you are not redirected.</a>
+<script>location="../configuration/index.html#historical"</script>
diff --git a/docs/latest/configuration/index.html b/docs/0.17.0/configuration/index.html
similarity index 85%
copy from docs/latest/configuration/index.html
copy to docs/0.17.0/configuration/index.html
index 2c99879..26843cb 100644
--- a/docs/latest/configuration/index.html
+++ b/docs/0.17.0/configuration/index.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Configuration reference · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/configuration/index.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.16.1 [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Configuration reference · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/configuration/index.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.17.0 [...]
               window.dataLayer = window.dataLayer || [];
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -59,7 +59,7 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-druid/edit/master/docs/configuration/index.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Configuration reference</h1></header><article><div><span><!--
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/configuration/index.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Configuration reference</h1></header><article><div><span><!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
   ~ or more contributor license agreements.  See the NOTICE file
   ~ distributed with this work for additional information
@@ -81,7 +81,7 @@
 <h2><a class="anchor" aria-hidden="true" id="recommended-configuration-file-organization"></a><a href="#recommended-configuration-file-organization" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h [...]
 <p>A recommended way of organizing Druid configuration files can be seen in the <code>conf</code> directory in the Druid package root, shown below:</p>
 <pre><code class="hljs">$ ls -R conf
-druid       tranquility
+druid
 
 conf/druid:
 _common       broker        coordinator   historical    middleManager overlord
@@ -103,9 +103,6 @@ jvm<span class="hljs-selector-class">.config</span>         runtime<span class="
 
 conf/druid/overlord:
 jvm<span class="hljs-selector-class">.config</span>         runtime<span class="hljs-selector-class">.properties</span>
-
-conf/tranquility:
-kafka<span class="hljs-selector-class">.json</span>  server<span class="hljs-selector-class">.json</span>
 </code></pre>
 <p>Each directory has a <code>runtime.properties</code> file containing configuration properties for the specific Druid process corresponding to the directory (e.g., <code>historical</code>).</p>
 <p>The <code>jvm.config</code> files contain JVM flags such as heap sizing properties for each service.</p>
@@ -155,7 +152,7 @@ kafka<span class="hljs-selector-class">.json</span>  server<span class="hljs-sel
 <tr><td><code>druid.zk.paths.base</code></td><td>Base Zookeeper path.</td><td><code>/druid</code></td></tr>
 <tr><td><code>druid.zk.service.host</code></td><td>The ZooKeeper hosts to connect to. This is a REQUIRED property and therefore a host address must be supplied.</td><td>none</td></tr>
 <tr><td><code>druid.zk.service.user</code></td><td>The username to authenticate with ZooKeeper. This is an optional property.</td><td>none</td></tr>
-<tr><td><code>druid.zk.service.pwd</code></td><td>The <a href="/docs/latest/operations/password-provider.html">Password Provider</a> or the string password to authenticate with ZooKeeper. This is an optional property.</td><td>none</td></tr>
+<tr><td><code>druid.zk.service.pwd</code></td><td>The <a href="/docs/0.17.0/operations/password-provider.html">Password Provider</a> or the string password to authenticate with ZooKeeper. This is an optional property.</td><td>none</td></tr>
 <tr><td><code>druid.zk.service.authScheme</code></td><td>digest is the only authentication scheme supported.</td><td>digest</td></tr>
 </tbody>
 </table>
@@ -256,7 +253,7 @@ values for the below mentioned configs among others provided by Java implementat
 <tr><td><code>druid.server.https.keyStorePath</code></td><td>The file path or URL of the TLS/SSL Key store.</td><td>none</td><td>yes</td></tr>
 <tr><td><code>druid.server.https.keyStoreType</code></td><td>The type of the key store.</td><td>none</td><td>yes</td></tr>
 <tr><td><code>druid.server.https.certAlias</code></td><td>Alias of TLS/SSL certificate for the connector.</td><td>none</td><td>yes</td></tr>
-<tr><td><code>druid.server.https.keyStorePassword</code></td><td>The <a href="/docs/latest/operations/password-provider.html">Password Provider</a> or String password for the Key Store.</td><td>none</td><td>yes</td></tr>
+<tr><td><code>druid.server.https.keyStorePassword</code></td><td>The <a href="/docs/0.17.0/operations/password-provider.html">Password Provider</a> or String password for the Key Store.</td><td>none</td><td>yes</td></tr>
 </tbody>
 </table>
 <p>Following table contains non-mandatory advanced configuration options, use caution.</p>
@@ -266,7 +263,7 @@ values for the below mentioned configs among others provided by Java implementat
 </thead>
 <tbody>
 <tr><td><code>druid.server.https.keyManagerFactoryAlgorithm</code></td><td>Algorithm to use for creating KeyManager, more details <a href="https://docs.oracle.com/javase/7/docs/technotes/guides/security/jsse/JSSERefGuide.html#KeyManager">here</a>.</td><td><code>javax.net.ssl.KeyManagerFactory.getDefaultAlgorithm()</code></td><td>no</td></tr>
-<tr><td><code>druid.server.https.keyManagerPassword</code></td><td>The <a href="/docs/latest/operations/password-provider.html">Password Provider</a> or String password for the Key Manager.</td><td>none</td><td>no</td></tr>
+<tr><td><code>druid.server.https.keyManagerPassword</code></td><td>The <a href="/docs/0.17.0/operations/password-provider.html">Password Provider</a> or String password for the Key Manager.</td><td>none</td><td>no</td></tr>
 <tr><td><code>druid.server.https.includeCipherSuites</code></td><td>List of cipher suite names to include. You can either use the exact cipher suite name or a regular expression.</td><td>Jetty's default include cipher list</td><td>no</td></tr>
 <tr><td><code>druid.server.https.excludeCipherSuites</code></td><td>List of cipher suite names to exclude. You can either use the exact cipher suite name or a regular expression.</td><td>Jetty's default exclude cipher list</td><td>no</td></tr>
 <tr><td><code>druid.server.https.includeProtocols</code></td><td>List of exact protocols names to include.</td><td>Jetty's default include protocol list</td><td>no</td></tr>
@@ -284,7 +281,7 @@ values for the below mentioned configs among others provided by Java implementat
 <tr><td><code>druid.client.https.trustStoreType</code></td><td>The type of the key store where trusted root certificates are stored.</td><td><code>java.security.KeyStore.getDefaultType()</code></td><td>no</td></tr>
 <tr><td><code>druid.client.https.trustStorePath</code></td><td>The file path or URL of the TLS/SSL Key store where trusted root certificates are stored.</td><td>none</td><td>yes</td></tr>
 <tr><td><code>druid.client.https.trustStoreAlgorithm</code></td><td>Algorithm to be used by TrustManager to validate certificate chains</td><td><code>javax.net.ssl.TrustManagerFactory.getDefaultAlgorithm()</code></td><td>no</td></tr>
-<tr><td><code>druid.client.https.trustStorePassword</code></td><td>The <a href="/docs/latest/operations/password-provider.html">Password Provider</a> or String password for the Trust Store.</td><td>none</td><td>yes</td></tr>
+<tr><td><code>druid.client.https.trustStorePassword</code></td><td>The <a href="/docs/0.17.0/operations/password-provider.html">Password Provider</a> or String password for the Trust Store.</td><td>none</td><td>yes</td></tr>
 </tbody>
 </table>
 <p>This <a href="http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html">document</a> lists all the possible
@@ -302,7 +299,7 @@ values for the above mentioned configs among others provided by Java implementat
 <tr><td><code>druid.auth.allowUnauthenticatedHttpOptions</code></td><td>Boolean</td><td>If true, skip authentication checks for HTTP OPTIONS requests. This is needed for certain use cases, such as supporting CORS pre-flight requests. Note that disabling authentication checks for OPTIONS requests will allow unauthenticated users to determine what Druid endpoints are valid (by checking if the OPTIONS request returns a 200 instead of 404), so enabling this option may reveal information abou [...]
 </tbody>
 </table>
-<p>For more information, please see <a href="/docs/latest/design/auth.html">Authentication and Authorization</a>.</p>
+<p>For more information, please see <a href="/docs/0.17.0/design/auth.html">Authentication and Authorization</a>.</p>
 <p>For configuration options for specific auth extensions, please refer to the extension documentation.</p>
 <h3><a class="anchor" aria-hidden="true" id="startup-logging"></a><a href="#startup-logging" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
 <p>All processes can log debugging information on startup.</p>
@@ -326,7 +323,7 @@ values for the above mentioned configs among others provided by Java implementat
 <tr><td><code>druid.request.logging.type</code></td><td>Choices: noop, file, emitter, slf4j, filtered, composing, switching. How to log every query request.</td><td>[required to configure request logging]</td></tr>
 </tbody>
 </table>
-<p>Note that, you can enable sending all the HTTP requests to log by setting  &quot;org.apache.druid.jetty.RequestLog&quot; to DEBUG level. See <a href="/docs/latest/configuration/logging.html">Logging</a></p>
+<p>Note that, you can enable sending all the HTTP requests to log by setting  &quot;org.apache.druid.jetty.RequestLog&quot; to DEBUG level. See <a href="/docs/0.17.0/configuration/logging.html">Logging</a></p>
 <h4><a class="anchor" aria-hidden="true" id="file-request-logging"></a><a href="#file-request-logging" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
 <p>Daily request logs are stored on disk.</p>
 <table>
@@ -445,11 +442,11 @@ For native query, only request logs where query/time is above the threshold are
 <tr><td><code>org.apache.druid.segment.realtime.RealtimeMetricsMonitor</code></td><td>Reports statistics on Realtime processes.</td></tr>
 <tr><td><code>org.apache.druid.server.metrics.EventReceiverFirehoseMonitor</code></td><td>Reports how many events have been queued in the EventReceiverFirehose.</td></tr>
 <tr><td><code>org.apache.druid.server.metrics.QueryCountStatsMonitor</code></td><td>Reports how many queries have been successful/failed/interrupted.</td></tr>
-<tr><td><code>org.apache.druid.server.emitter.HttpEmittingMonitor</code></td><td>Reports internal metrics of <code>http</code> or <code>parametrized</code> emitter (see below). Must not be used with another emitter type. See the description of the metrics here: <a href="https://github.com/apache/incubator-druid/pull/4973">https://github.com/apache/incubator-druid/pull/4973</a>.</td></tr>
+<tr><td><code>org.apache.druid.server.emitter.HttpEmittingMonitor</code></td><td>Reports internal metrics of <code>http</code> or <code>parametrized</code> emitter (see below). Must not be used with another emitter type. See the description of the metrics here: <a href="https://github.com/apache/druid/pull/4973">https://github.com/apache/druid/pull/4973</a>.</td></tr>
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="emitting-metrics"></a><a href="#emitting-metrics" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
-<p>The Druid servers <a href="/docs/latest/operations/metrics.html">emit various metrics</a> and alerts via something we call an Emitter. There are three emitter implementations included with the code, a &quot;noop&quot; emitter (the default if none is specified), one that just logs to log4j (&quot;logging&quot;), and one that does POSTs of JSON events to a server (&quot;http&quot;). The properties for using the logging emitter are described below.</p>
+<p>The Druid servers <a href="/docs/0.17.0/operations/metrics.html">emit various metrics</a> and alerts via something we call an Emitter. There are three emitter implementations included with the code, a &quot;noop&quot; emitter (the default if none is specified), one that just logs to log4j (&quot;logging&quot;), and one that does POSTs of JSON events to a server (&quot;http&quot;). The properties for using the logging emitter are described below.</p>
 <table>
 <thead>
 <tr><th>Property</th><th>Description</th><th>Default</th></tr>
@@ -476,7 +473,7 @@ For native query, only request logs where query/time is above the threshold are
 <tbody>
 <tr><td><code>druid.emitter.http.flushMillis</code></td><td>How often the internal message buffer is flushed (data is sent).</td><td>60000</td></tr>
 <tr><td><code>druid.emitter.http.flushCount</code></td><td>How many messages the internal message buffer can hold before flushing (sending).</td><td>500</td></tr>
-<tr><td><code>druid.emitter.http.basicAuthentication</code></td><td>Login and password for authentication in &quot;login:password&quot; form, e.g., <code>druid.emitter.http.basicAuthentication=admin:adminpassword</code></td><td>not specified = no authentication</td></tr>
+<tr><td><code>druid.emitter.http.basicAuthentication</code></td><td><a href="/docs/0.17.0/operations/password-provider.html">Password Provider</a> for providing Login and password for authentication in &quot;login:password&quot; form, e.g., <code>druid.emitter.http.basicAuthentication=admin:adminpassword</code> uses Default Password Provider which allows plain text passwords.</td><td>not specified = no authentication</td></tr>
 <tr><td><code>druid.emitter.http.flushTimeOut</code></td><td>The timeout after which an event should be sent to the endpoint, even if internal buffers are not filled, in milliseconds.</td><td>not specified = no timeout</td></tr>
 <tr><td><code>druid.emitter.http.batchingStrategy</code></td><td>The strategy of how the batch is formatted. &quot;ARRAY&quot; means <code>[event1,event2]</code>, &quot;NEWLINES&quot; means <code>event1\nevent2</code>, ONLY_EVENTS means <code>event1event2</code>.</td><td>ARRAY</td></tr>
 <tr><td><code>druid.emitter.http.maxBatchSize</code></td><td>The maximum batch size, in bytes.</td><td>the minimum of (10% of JVM heap size divided by 2) or (5191680 (i. e. 5 MB))</td></tr>
@@ -500,7 +497,7 @@ SSLContext that would be used for internal communications between Druid processe
 <tr><td><code>druid.emitter.http.ssl.trustStorePath</code></td><td>The file path or URL of the TLS/SSL Key store where trusted root certificates are stored. If this is unspecified, the Http Emitter will use the same SSLContext as Druid's internal HTTP client, as described in the beginning of this section, and all other properties below are ignored.</td><td>null</td></tr>
 <tr><td><code>druid.emitter.http.ssl.trustStoreType</code></td><td>The type of the key store where trusted root certificates are stored.</td><td><code>java.security.KeyStore.getDefaultType()</code></td></tr>
 <tr><td><code>druid.emitter.http.ssl.trustStoreAlgorithm</code></td><td>Algorithm to be used by TrustManager to validate certificate chains</td><td><code>javax.net.ssl.TrustManagerFactory.getDefaultAlgorithm()</code></td></tr>
-<tr><td><code>druid.emitter.http.ssl.trustStorePassword</code></td><td>The <a href="/docs/latest/operations/password-provider.html">Password Provider</a> or String password for the Trust Store.</td><td>none</td></tr>
+<tr><td><code>druid.emitter.http.ssl.trustStorePassword</code></td><td>The <a href="/docs/0.17.0/operations/password-provider.html">Password Provider</a> or String password for the Trust Store.</td><td>none</td></tr>
 <tr><td><code>druid.emitter.http.ssl.protocol</code></td><td>TLS protocol to use.</td><td>&quot;TLSv1.2&quot;</td></tr>
 </tbody>
 </table>
@@ -527,9 +524,9 @@ Except <code>recipientBaseUrl</code>. E.g., <code>druid.emitter.parametrized.htt
 </tbody>
 </table>
 <h4><a class="anchor" aria-hidden="true" id="graphite-emitter"></a><a href="#graphite-emitter" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
-<p>To use graphite as emitter set <code>druid.emitter=graphite</code>. For configuration details please follow this <a href="/docs/latest/development/extensions-contrib/graphite.html">link</a>.</p>
+<p>To use graphite as emitter set <code>druid.emitter=graphite</code>. For configuration details please follow this <a href="/docs/0.17.0/development/extensions-contrib/graphite.html">link</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="metadata-storage"></a><a href="#metadata-storage" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
-<p>These properties specify the JDBC connection and other configuration around the metadata storage. The only processes that connect to the metadata storage with these properties are the <a href="/docs/latest/design/coordinator.html">Coordinator</a> and <a href="/docs/latest/design/overlord.html">Overlord</a>.</p>
+<p>These properties specify the JDBC connection and other configuration around the metadata storage. The only processes that connect to the metadata storage with these properties are the <a href="/docs/0.17.0/design/coordinator.html">Coordinator</a> and <a href="/docs/0.17.0/design/overlord.html">Overlord</a>.</p>
 <table>
 <thead>
 <tr><th>Property</th><th>Description</th><th>Default</th></tr>
@@ -538,10 +535,10 @@ Except <code>recipientBaseUrl</code>. E.g., <code>druid.emitter.parametrized.htt
 <tr><td><code>druid.metadata.storage.type</code></td><td>The type of metadata storage to use. Choose from &quot;mysql&quot;, &quot;postgresql&quot;, or &quot;derby&quot;.</td><td>derby</td></tr>
 <tr><td><code>druid.metadata.storage.connector.connectURI</code></td><td>The JDBC URI for the database to connect to</td><td>none</td></tr>
 <tr><td><code>druid.metadata.storage.connector.user</code></td><td>The username to connect with.</td><td>none</td></tr>
-<tr><td><code>druid.metadata.storage.connector.password</code></td><td>The <a href="/docs/latest/operations/password-provider.html">Password Provider</a> or String password used to connect with.</td><td>none</td></tr>
+<tr><td><code>druid.metadata.storage.connector.password</code></td><td>The <a href="/docs/0.17.0/operations/password-provider.html">Password Provider</a> or String password used to connect with.</td><td>none</td></tr>
 <tr><td><code>druid.metadata.storage.connector.createTables</code></td><td>If Druid requires a table and it doesn't exist, create it?</td><td>true</td></tr>
 <tr><td><code>druid.metadata.storage.tables.base</code></td><td>The base name for tables.</td><td>druid</td></tr>
-<tr><td><code>druid.metadata.storage.tables.dataSource</code></td><td>The table to use to look for dataSources which created by <a href="/docs/latest/development/extensions-core/kafka-ingestion.html">Kafka Indexing Service</a>.</td><td>druid_dataSource</td></tr>
+<tr><td><code>druid.metadata.storage.tables.dataSource</code></td><td>The table to use to look for dataSources which created by <a href="/docs/0.17.0/development/extensions-core/kafka-ingestion.html">Kafka Indexing Service</a>.</td><td>druid_dataSource</td></tr>
 <tr><td><code>druid.metadata.storage.tables.pendingSegments</code></td><td>The table to use to look for pending segments.</td><td>druid_pendingSegments</td></tr>
 <tr><td><code>druid.metadata.storage.tables.segments</code></td><td>The table to use to look for segments.</td><td>druid_segments</td></tr>
 <tr><td><code>druid.metadata.storage.tables.rules</code></td><td>The table to use to look for segment load/drop rules.</td><td>druid_rules</td></tr>
@@ -554,7 +551,7 @@ Except <code>recipientBaseUrl</code>. E.g., <code>druid.emitter.parametrized.htt
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="deep-storage"></a><a href="#deep-storage" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
-<p>The configurations concern how to push and pull <a href="/docs/latest/design/segments.html">Segments</a> from deep storage.</p>
+<p>The configurations concern how to push and pull <a href="/docs/0.17.0/design/segments.html">Segments</a> from deep storage.</p>
 <table>
 <thead>
 <tr><th>Property</th><th>Description</th><th>Default</th></tr>
@@ -577,7 +574,7 @@ Except <code>recipientBaseUrl</code>. E.g., <code>druid.emitter.parametrized.htt
 <p>This deep storage doesn't do anything. There are no configs.</p>
 <h4><a class="anchor" aria-hidden="true" id="s3-deep-storage"></a><a href="#s3-deep-storage" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
 <p>This deep storage is used to interface with Amazon's S3. Note that the <code>druid-s3-extensions</code> extension must be loaded.
-The below table shows some important configurations for S3. See <a href="/docs/latest/development/extensions-core/s3.html">S3 Deep Storage</a> for full configurations.</p>
+The below table shows some important configurations for S3. See <a href="/docs/0.17.0/development/extensions-core/s3.html">S3 Deep Storage</a> for full configurations.</p>
 <table>
 <thead>
 <tr><th>Property</th><th>Description</th><th>Default</th></tr>
@@ -695,7 +692,7 @@ Caution: Automatic log file deletion typically works based on log file modificat
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="overlord-discovery"></a><a href="#overlord-discovery" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22- [...]
-<p>This config is used to find the <a href="/docs/latest/design/overlord.html">Overlord</a> using Curator service discovery. Only required if you are actually running an Overlord.</p>
+<p>This config is used to find the <a href="/docs/0.17.0/design/overlord.html">Overlord</a> using Curator service discovery. Only required if you are actually running an Overlord.</p>
 <table>
 <thead>
 <tr><th>Property</th><th>Description</th><th>Default</th></tr>
@@ -705,7 +702,7 @@ Caution: Automatic log file deletion typically works based on log file modificat
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="coordinator-discovery"></a><a href="#coordinator-discovery" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
-<p>This config is used to find the <a href="/docs/latest/design/coordinator.html">Coordinator</a> using Curator service discovery. This config is used by the realtime indexing processes to get information about the segments loaded in the cluster.</p>
+<p>This config is used to find the <a href="/docs/0.17.0/design/coordinator.html">Coordinator</a> using Curator service discovery. This config is used by the realtime indexing processes to get information about the segments loaded in the cluster.</p>
 <table>
 <thead>
 <tr><th>Property</th><th>Description</th><th>Default</th></tr>
@@ -741,10 +738,10 @@ the following properties.</p>
 </tbody>
 </table>
 <blockquote>
-<p>JavaScript-based functionality is disabled by default. Please refer to the Druid <a href="/docs/latest/development/javascript.html">JavaScript programming guide</a> for guidelines about using Druid's JavaScript functionality, including instructions on how to enable it.</p>
+<p>JavaScript-based functionality is disabled by default. Please refer to the Druid <a href="/docs/0.17.0/development/javascript.html">JavaScript programming guide</a> for guidelines about using Druid's JavaScript functionality, including instructions on how to enable it.</p>
 </blockquote>
 <h3><a class="anchor" aria-hidden="true" id="double-column-storage"></a><a href="#double-column-storage" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
-<p>Prior to version 0.13.0 Druid's storage layer used a 32-bit float representation to store columns created by the
+<p>Prior to version 0.13.0, Druid's storage layer used a 32-bit float representation to store columns created by the
 doubleSum, doubleMin, and doubleMax aggregators at indexing time.
 Starting from version 0.13.0 the default will be 64-bit floats for Double columns.
 Using 64-bit representation for double column will lead to avoid precision loss at the cost of doubling the storage size of such columns.
@@ -759,10 +756,35 @@ Support for 64-bit floating point columns was released in Druid 0.11.0, so if yo
 <tr><td><code>druid.indexing.doubleStorage</code></td><td>Set to &quot;float&quot; to use 32-bit double representation for double columns.</td><td>double</td></tr>
 </tbody>
 </table>
+<h3><a class="anchor" aria-hidden="true" id="sql-compatible-null-handling"></a><a href="#sql-compatible-null-handling" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 [...]
+<p>Prior to version 0.13.0, Druid string columns treated <code>''</code> and <code>null</code> values as interchangeable, and numeric columns were unable to represent <code>null</code> values, coercing <code>null</code> to <code>0</code>. Druid 0.13.0 introduced a mode which enabled SQL compatible null handling, allowing string columns to distinguish empty strings from nulls, and numeric columns to contain null rows.</p>
+<table>
+<thead>
+<tr><th>Property</th><th>Description</th><th>Default</th></tr>
+</thead>
+<tbody>
+<tr><td><code>druid.generic.useDefaultValueForNull</code></td><td>When set to <code>true</code>, <code>null</code> values will be stored as <code>''</code> for string columns and <code>0</code> for numeric columns. Set to <code>false</code> to store and query data in SQL compatible mode.</td><td><code>true</code></td></tr>
+</tbody>
+</table>
+<p>This mode does have a storage size and query performance cost, see <a href="/docs/0.17.0/design/segments.html#sql-compatible-null-handling">segment documentation</a> for more details.</p>
+<h3><a class="anchor" aria-hidden="true" id="http-client"></a><a href="#http-client" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<p>All Druid components can communicate with each other over HTTP.</p>
+<table>
+<thead>
+<tr><th>Property</th><th>Description</th><th>Default</th></tr>
+</thead>
+<tbody>
+<tr><td><code>druid.global.http.numConnections</code></td><td>Size of connection pool per destination URL. If there are more HTTP requests than this number that all need to speak to the same URL, then they will queue up.</td><td><code>20</code></td></tr>
+<tr><td><code>druid.global.http.compressionCodec</code></td><td>Compression codec to communicate with others. May be &quot;gzip&quot; or &quot;identity&quot;.</td><td><code>gzip</code></td></tr>
+<tr><td><code>druid.global.http.readTimeout</code></td><td>The timeout for data reads.</td><td><code>PT15M</code></td></tr>
+<tr><td><code>druid.global.http.unusedConnectionTimeout</code></td><td>The timeout for idle connections in connection pool. The connection in the pool will be closed after this timeout and a new one will be established. This timeout should be less than <code>druid.global.http.readTimeout</code>. Set this timeout = ~90% of <code>druid.global.http.readTimeout</code></td><td><code>PT4M</code></td></tr>
+<tr><td><code>druid.global.http.numMaxThreads</code></td><td>Maximum number of I/O worker threads</td><td><code>max(10, ((number of cores * 17) / 16 + 2) + 30)</code></td></tr>
+</tbody>
+</table>
 <h2><a class="anchor" aria-hidden="true" id="master-server"></a><a href="#master-server" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>This section contains the configuration options for the processes that reside on Master servers (Coordinators and Overlords) in the suggested <a href="../design/processes.html#server-types">three-server configuration</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="coordinator"></a><a href="#coordinator" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>For general Coordinator Process information, see <a href="/docs/latest/design/coordinator.html">here</a>.</p>
+<p>For general Coordinator Process information, see <a href="/docs/0.17.0/design/coordinator.html">here</a>.</p>
 <h4><a class="anchor" aria-hidden="true" id="static-configuration"></a><a href="#static-configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
 <p>These Coordinator static configurations can be defined in the <code>coordinator/runtime.properties</code> file.</p>
 <h5><a class="anchor" aria-hidden="true" id="coordinator-process-config"></a><a href="#coordinator-process-config" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H [...]
@@ -774,7 +796,7 @@ Support for 64-bit floating point columns was released in Druid 0.11.0, so if yo
 <tr><td><code>druid.host</code></td><td>The host for the current process. This is used to advertise the current processes location as reachable from another process and should generally be specified such that <code>http://${druid.host}/</code> could actually talk to this process</td><td>InetAddress.getLocalHost().getCanonicalHostName()</td></tr>
 <tr><td><code>druid.bindOnHost</code></td><td>Indicating whether the process's internal jetty server bind on <code>druid.host</code>. Default is false, which means binding to all interfaces.</td><td>false</td></tr>
 <tr><td><code>druid.plaintextPort</code></td><td>This is the port to actually listen on; unless port mapping is used, this will be the same port as is on <code>druid.host</code></td><td>8081</td></tr>
-<tr><td><code>druid.tlsPort</code></td><td>TLS port for HTTPS connector, if <a href="/docs/latest/operations/tls-support.html">druid.enableTlsPort</a> is set then this config will be used. If <code>druid.host</code> contains port then that port will be ignored. This should be a non-negative Integer.</td><td>8281</td></tr>
+<tr><td><code>druid.tlsPort</code></td><td>TLS port for HTTPS connector, if <a href="/docs/0.17.0/operations/tls-support.html">druid.enableTlsPort</a> is set then this config will be used. If <code>druid.host</code> contains port then that port will be ignored. This should be a non-negative Integer.</td><td>8281</td></tr>
 <tr><td><code>druid.service</code></td><td>The name of the service. This is used as a dimension when emitting metrics and alerts to differentiate between the various services</td><td>druid/coordinator</td></tr>
 </tbody>
 </table>
@@ -834,7 +856,7 @@ Support for 64-bit floating point columns was released in Druid 0.11.0, so if yo
 </tbody>
 </table>
 <h4><a class="anchor" aria-hidden="true" id="dynamic-configuration"></a><a href="#dynamic-configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
-<p>The Coordinator has dynamic configuration to change certain behavior on the fly. The Coordinator uses a JSON spec object from the Druid <a href="/docs/latest/dependencies/metadata-storage.html">metadata storage</a> config table. This object is detailed below:</p>
+<p>The Coordinator has dynamic configuration to change certain behavior on the fly. The Coordinator uses a JSON spec object from the Druid <a href="/docs/0.17.0/dependencies/metadata-storage.html">metadata storage</a> config table. This object is detailed below:</p>
 <p>It is recommended that you use the Coordinator Console to configure these parameters. However, if you need to do it via HTTP, the JSON object can be submitted to the Coordinator via a POST request at:</p>
 <pre><code class="hljs">http:<span class="hljs-regexp">//</span>&lt;COORDINATOR_IP&gt;:&lt;PORT&gt;<span class="hljs-regexp">/druid/</span>coordinator<span class="hljs-regexp">/v1/</span>config
 </code></pre>
@@ -870,7 +892,7 @@ Support for 64-bit floating point columns was released in Druid 0.11.0, so if yo
 <tbody>
 <tr><td><code>millisToWaitBeforeDeleting</code></td><td>How long does the Coordinator need to be active before it can start removing (marking unused) segments in metadata storage.</td><td>900000 (15 mins)</td></tr>
 <tr><td><code>mergeBytesLimit</code></td><td>The maximum total uncompressed size in bytes of segments to merge.</td><td>524288000L</td></tr>
-<tr><td><code>mergeSegmentsLimit</code></td><td>The maximum number of segments that can be in a single <a href="/docs/latest/ingestion/tasks.html">append task</a>.</td><td>100</td></tr>
+<tr><td><code>mergeSegmentsLimit</code></td><td>The maximum number of segments that can be in a single <a href="/docs/0.17.0/ingestion/tasks.html">append task</a>.</td><td>100</td></tr>
 <tr><td><code>maxSegmentsToMove</code></td><td>The maximum number of segments that can be moved at any given time.</td><td>5</td></tr>
 <tr><td><code>replicantLifetime</code></td><td>The maximum number of Coordinator runs for a segment to be replicated before we start alerting.</td><td>15</td></tr>
 <tr><td><code>replicationThrottleLimit</code></td><td>The maximum number of segments that can be replicated at one time.</td><td>10</td></tr>
@@ -892,7 +914,7 @@ Support for 64-bit floating point columns was released in Druid 0.11.0, so if yo
 <pre><code class="hljs">http://<span class="hljs-symbol">&lt;COORDINATOR_IP&gt;</span>:<span class="hljs-symbol">&lt;PORT&gt;</span>/druid/coordinator/v1/config/<span class="hljs-keyword">history</span>?<span class="hljs-built_in">count</span>=<span class="hljs-symbol">&lt;n&gt;</span>
 </code></pre>
 <h5><a class="anchor" aria-hidden="true" id="lookups-dynamic-configuration"></a><a href="#lookups-dynamic-configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<p>These configuration options control the behavior of the Lookup dynamic configuration described in the <a href="/docs/latest/querying/lookups.html">lookups page</a></p>
+<p>These configuration options control the behavior of the Lookup dynamic configuration described in the <a href="/docs/0.17.0/querying/lookups.html">lookups page</a></p>
 <table>
 <thead>
 <tr><th>Property</th><th>Description</th><th>Default</th></tr>
@@ -909,7 +931,7 @@ Support for 64-bit floating point columns was released in Druid 0.11.0, so if yo
 <h5><a class="anchor" aria-hidden="true" id="compaction-dynamic-configuration"></a><a href="#compaction-dynamic-configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13. [...]
 <p>Compaction configurations can also be set or updated dynamically using
 <a href="../operations/api-reference.html#compaction-configuration">Coordinator's API</a> without restarting Coordinators.</p>
-<p>For details about segment compaction, please check <a href="/docs/latest/operations/segment-optimization.html">Segment Size Optimization</a>.</p>
+<p>For details about segment compaction, please check <a href="/docs/0.17.0/operations/segment-optimization.html">Segment Size Optimization</a>.</p>
 <p>A description of the compaction config is:</p>
 <table>
 <thead>
@@ -919,9 +941,7 @@ Support for 64-bit floating point columns was released in Druid 0.11.0, so if yo
 <tr><td><code>dataSource</code></td><td>dataSource name to be compacted.</td><td>yes</td></tr>
 <tr><td><code>taskPriority</code></td><td><a href="../ingestion/tasks.html#priority">Priority</a> of compaction task.</td><td>no (default = 25)</td></tr>
 <tr><td><code>inputSegmentSizeBytes</code></td><td>Maximum number of total segment bytes processed per compaction task. Since a time chunk must be processed in its entirety, if the segments for a particular time chunk have a total size in bytes greater than this parameter, compaction will not run for that time chunk. Because each compaction task runs with a single thread, setting this value too far above 1–2GB will result in compaction tasks taking an excessive amount of time.</td><td>no [...]
-<tr><td><code>targetCompactionSizeBytes</code></td><td>The target segment size, for each segment, after compaction. The actual sizes of compacted segments might be slightly larger or smaller than this value. Each compaction task may generate more than one output segment, and it will try to keep each output segment close to this configured size. This configuration cannot be used together with <code>maxRowsPerSegment</code>.</td><td>no (default = 419430400)</td></tr>
-<tr><td><code>maxRowsPerSegment</code></td><td>Max number of rows per segment after compaction. This configuration cannot be used together with <code>targetCompactionSizeBytes</code>.</td><td>no</td></tr>
-<tr><td><code>maxNumSegmentsToCompact</code></td><td>Maximum number of segments to compact together per compaction task. Since a time chunk must be processed in its entirety, if a time chunk has a total number of segments greater than this parameter, compaction will not run for that time chunk.</td><td>no (default = 150)</td></tr>
+<tr><td><code>maxRowsPerSegment</code></td><td>Max number of rows per segment after compaction.</td><td>no</td></tr>
 <tr><td><code>skipOffsetFromLatest</code></td><td>The offset for searching segments to be compacted. Strongly recommended to set for realtime dataSources.</td><td>no (default = &quot;P1D&quot;)</td></tr>
 <tr><td><code>tuningConfig</code></td><td>Tuning config for compaction tasks. See below <a href="#compaction-tuningconfig">Compaction Task TuningConfig</a>.</td><td>no</td></tr>
 <tr><td><code>taskContext</code></td><td><a href="../ingestion/tasks.html#context">Task context</a> for compaction tasks.</td><td>no</td></tr>
@@ -944,16 +964,18 @@ If you see this problem, it's recommended to set <code>skipOffsetFromLatest</cod
 <tr><th>Property</th><th>Description</th><th>Required</th></tr>
 </thead>
 <tbody>
-<tr><td><code>maxRowsInMemory</code></td><td>See <a href="/docs/latest/ingestion/native-batch.html#tuningconfig">tuningConfig for indexTask</a></td><td>no (default = 1000000)</td></tr>
-<tr><td><code>maxBytesInMemory</code></td><td>See <a href="/docs/latest/ingestion/native-batch.html#tuningconfig">tuningConfig for indexTask</a></td><td>no (1/6 of max JVM memory)</td></tr>
-<tr><td><code>maxTotalRows</code></td><td>See <a href="/docs/latest/ingestion/native-batch.html#tuningconfig">tuningConfig for indexTask</a></td><td>no (default = 20000000)</td></tr>
-<tr><td><code>indexSpec</code></td><td>See <a href="/docs/latest/ingestion/index.html#indexspec">IndexSpec</a></td><td>no</td></tr>
-<tr><td><code>maxPendingPersists</code></td><td>See <a href="/docs/latest/ingestion/native-batch.html#tuningconfig">tuningConfig for indexTask</a></td><td>no (default = 0 (meaning one persist can be running concurrently with ingestion, and none can be queued up))</td></tr>
-<tr><td><code>pushTimeout</code></td><td>See <a href="/docs/latest/ingestion/native-batch.html#tuningconfig">tuningConfig for indexTask</a></td><td>no (default = 0)</td></tr>
+<tr><td><code>maxRowsInMemory</code></td><td>See <a href="/docs/0.17.0/ingestion/native-batch.html#tuningconfig">tuningConfig for indexTask</a></td><td>no (default = 1000000)</td></tr>
+<tr><td><code>maxBytesInMemory</code></td><td>See <a href="/docs/0.17.0/ingestion/native-batch.html#tuningconfig">tuningConfig for indexTask</a></td><td>no (1/6 of max JVM memory)</td></tr>
+<tr><td><code>maxTotalRows</code></td><td>See <a href="/docs/0.17.0/ingestion/native-batch.html#tuningconfig">tuningConfig for indexTask</a></td><td>no (default = 20000000)</td></tr>
+<tr><td><code>splitHintSpec</code></td><td>See <a href="/docs/0.17.0/ingestion/native-batch.html#tuningconfig">tuningConfig for indexTask</a></td><td>no (default = null)</td></tr>
+<tr><td><code>indexSpec</code></td><td>See <a href="/docs/0.17.0/ingestion/index.html#indexspec">IndexSpec</a></td><td>no</td></tr>
+<tr><td><code>maxPendingPersists</code></td><td>See <a href="/docs/0.17.0/ingestion/native-batch.html#tuningconfig">tuningConfig for indexTask</a></td><td>no (default = 0 (meaning one persist can be running concurrently with ingestion, and none can be queued up))</td></tr>
+<tr><td><code>pushTimeout</code></td><td>See <a href="/docs/0.17.0/ingestion/native-batch.html#tuningconfig">tuningConfig for indexTask</a></td><td>no (default = 0)</td></tr>
+<tr><td><code>maxNumConcurrentSubTasks</code></td><td>See <a href="/docs/0.17.0/ingestion/native-batch.html#tuningconfig">tuningConfig for indexTask</a></td><td>no (default = 1)</td></tr>
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="overlord"></a><a href="#overlord" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>For general Overlord Process information, see <a href="/docs/latest/design/overlord.html">here</a>.</p>
+<p>For general Overlord Process information, see <a href="/docs/0.17.0/design/overlord.html">here</a>.</p>
 <h4><a class="anchor" aria-hidden="true" id="overlord-static-configuration"></a><a href="#overlord-static-configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
 <p>These Overlord static configurations can be defined in the <code>overlord/runtime.properties</code> file.</p>
 <h5><a class="anchor" aria-hidden="true" id="overlord-process-configs"></a><a href="#overlord-process-configs" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-. [...]
@@ -965,7 +987,7 @@ If you see this problem, it's recommended to set <code>skipOffsetFromLatest</cod
 <tr><td><code>druid.host</code></td><td>The host for the current process. This is used to advertise the current processes location as reachable from another process and should generally be specified such that <code>http://${druid.host}/</code> could actually talk to this process</td><td>InetAddress.getLocalHost().getCanonicalHostName()</td></tr>
 <tr><td><code>druid.bindOnHost</code></td><td>Indicating whether the process's internal jetty server bind on <code>druid.host</code>. Default is false, which means binding to all interfaces.</td><td>false</td></tr>
 <tr><td><code>druid.plaintextPort</code></td><td>This is the port to actually listen on; unless port mapping is used, this will be the same port as is on <code>druid.host</code></td><td>8090</td></tr>
-<tr><td><code>druid.tlsPort</code></td><td>TLS port for HTTPS connector, if <a href="/docs/latest/operations/tls-support.html">druid.enableTlsPort</a> is set then this config will be used. If <code>druid.host</code> contains port then that port will be ignored. This should be a non-negative Integer.</td><td>8290</td></tr>
+<tr><td><code>druid.tlsPort</code></td><td>TLS port for HTTPS connector, if <a href="/docs/0.17.0/operations/tls-support.html">druid.enableTlsPort</a> is set then this config will be used. If <code>druid.host</code> contains port then that port will be ignored. This should be a non-negative Integer.</td><td>8290</td></tr>
 <tr><td><code>druid.service</code></td><td>The name of the service. This is used as a dimension when emitting metrics and alerts to differentiate between the various services</td><td>druid/overlord</td></tr>
 </tbody>
 </table>
@@ -978,7 +1000,7 @@ If you see this problem, it's recommended to set <code>skipOffsetFromLatest</cod
 <tr><td><code>druid.indexer.runner.type</code></td><td>Choices &quot;local&quot; or &quot;remote&quot;. Indicates whether tasks should be run locally or in a distributed environment. Experimental task runner &quot;httpRemote&quot; is also available which is same as &quot;remote&quot; but uses HTTP to interact with Middle Managers instead of Zookeeper.</td><td>local</td></tr>
 <tr><td><code>druid.indexer.storage.type</code></td><td>Choices are &quot;local&quot; or &quot;metadata&quot;. Indicates whether incoming tasks should be stored locally (in heap) or in metadata storage. Storing incoming tasks in metadata storage allows for tasks to be resumed if the Overlord should fail.</td><td>local</td></tr>
 <tr><td><code>druid.indexer.storage.recentlyFinishedThreshold</code></td><td>A duration of time to store task results.</td><td>PT24H</td></tr>
-<tr><td><code>druid.indexer.tasklock.forceTimeChunkLock</code></td><td><em><strong>Setting this to false is still experimental</strong></em><br/> If set, all tasks are enforced to use time chunk lock. If not set, each task automatically chooses a lock type to use. This configuration can be overwritten by setting <code>forceTimeChunkLock</code> in the <a href="/docs/latest/ingestion/tasks.html#context">task context</a>. See <a href="/docs/latest/ingestion/tasks.html#context">Task Locking  [...]
+<tr><td><code>druid.indexer.tasklock.forceTimeChunkLock</code></td><td><em><strong>Setting this to false is still experimental</strong></em><br/> If set, all tasks are enforced to use time chunk lock. If not set, each task automatically chooses a lock type to use. This configuration can be overwritten by setting <code>forceTimeChunkLock</code> in the <a href="/docs/0.17.0/ingestion/tasks.html#context">task context</a>. See <a href="/docs/0.17.0/ingestion/tasks.html#context">Task Locking  [...]
 <tr><td><code>druid.indexer.queue.maxSize</code></td><td>Maximum number of active tasks at one time.</td><td>Integer.MAX_VALUE</td></tr>
 <tr><td><code>druid.indexer.queue.startDelay</code></td><td>Sleep this long before starting Overlord queue management. This can be useful to give a cluster time to re-orient itself after e.g. a widespread network issue.</td><td>PT1M</td></tr>
 <tr><td><code>druid.indexer.queue.restartDelay</code></td><td>Sleep this long when Overlord queue management throws an exception before trying again.</td><td>PT30S</td></tr>
@@ -1118,6 +1140,36 @@ useful if you want work evenly distributed across your MiddleManagers.</p>
 <tr><td><code>affinityConfig</code></td><td><a href="#affinity">Affinity config</a> object</td><td>null (no affinity)</td></tr>
 </tbody>
 </table>
+<h6><a class="anchor" aria-hidden="true" id="equal-distribution-with-category-spec"></a><a href="#equal-distribution-with-category-spec" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 [...]
+<p>This strategy is a variant of <code>Equal Distribution</code>, which support <code>workerCategorySpec</code> field rather than <code>affinityConfig</code>. By specifying <code>workerCategorySpec</code>, you can assign tasks to run on different categories of MiddleManagers based on the tasks' <strong>taskType</strong> and <strong>dataSource name</strong>. This strategy can't work with <code>AutoScaler</code> since the behavior is undefined.</p>
+<table>
+<thead>
+<tr><th>Property</th><th>Description</th><th>Default</th></tr>
+</thead>
+<tbody>
+<tr><td><code>type</code></td><td><code>equalDistributionWithCategorySpec</code>.</td><td>required; must be <code>equalDistributionWithCategorySpec</code></td></tr>
+<tr><td><code>workerCategorySpec</code></td><td><a href="#workercategoryspec">Worker Category Spec</a> object</td><td>null (no worker category spec)</td></tr>
+</tbody>
+</table>
+<p>Example: specify tasks default to run on <strong>c1</strong> whose task
+type is &quot;index_kafka&quot;, while dataSource &quot;ds1&quot; run on <strong>c2</strong>.</p>
+<pre><code class="hljs css language-json">{
+  <span class="hljs-attr">"selectStrategy"</span>: {
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"equalDistributionWithCategorySpec"</span>,
+    <span class="hljs-attr">"workerCategorySpec"</span>: {
+      <span class="hljs-attr">"strong"</span>: <span class="hljs-literal">false</span>,
+      <span class="hljs-attr">"categoryMap"</span>: {
+        <span class="hljs-attr">"index_kafka"</span>: {
+           <span class="hljs-attr">"defaultCategory"</span>: <span class="hljs-string">"c1"</span>,
+           <span class="hljs-attr">"categoryAffinity"</span>: {
+              <span class="hljs-attr">"ds1"</span>: <span class="hljs-string">"c2"</span>
+           }
+        }
+      }
+    }
+  }
+}
+</code></pre>
 <h6><a class="anchor" aria-hidden="true" id="fill-capacity"></a><a href="#fill-capacity" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>Tasks are assigned to the worker with the most currently-running tasks at the time the task begins running. This is
 useful in situations where you are elastically auto-scaling MiddleManagers, since it will tend to pack some full and
@@ -1133,6 +1185,20 @@ MiddleManagers up to capacity simultaneously, rather than a single MiddleManager
 <tr><td><code>affinityConfig</code></td><td><a href="#affinity">Affinity config</a> object</td><td>null (no affinity)</td></tr>
 </tbody>
 </table>
+<h6><a class="anchor" aria-hidden="true" id="fill-capacity-with-category-spec"></a><a href="#fill-capacity-with-category-spec" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13. [...]
+<p>This strategy is a variant of <code>Fill Capacity</code>, which support <code>workerCategorySpec</code> field rather than <code>affinityConfig</code>. The usage is the same with <em>equalDistributionWithCategorySpec</em> strategy. This strategy can't work with <code>AutoScaler</code> since the behavior is undefined.</p>
+<table>
+<thead>
+<tr><th>Property</th><th>Description</th><th>Default</th></tr>
+</thead>
+<tbody>
+<tr><td><code>type</code></td><td><code>fillCapacityWithCategorySpec</code>.</td><td>required; must be <code>fillCapacityWithCategorySpec</code></td></tr>
+<tr><td><code>workerCategorySpec</code></td><td><a href="#workercategoryspec">Worker Category Spec</a> object</td><td>null (no worker category spec)</td></tr>
+</tbody>
+</table>
+<blockquote>
+<p>Before using the <em>equalDistributionWithCategorySpec</em> and <em>fillCapacityWithCategorySpec</em> strategies, you must upgrade overlord and all MiddleManagers to the version that support this feature.</p>
+</blockquote>
 <p><a name="javascript-worker-select-strategy"></a></p>
 <h6><a class="anchor" aria-hidden="true" id="javascript-1"></a><a href="#javascript-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
 <p>Allows defining arbitrary logic for selecting workers to run task using a JavaScript function.
@@ -1156,7 +1222,7 @@ its better to write a druid extension module with extending current worker selec
 }
 </code></pre>
 <blockquote>
-<p>JavaScript-based functionality is disabled by default. Please refer to the Druid <a href="/docs/latest/development/javascript.html">JavaScript programming guide</a> for guidelines about using Druid's JavaScript functionality, including instructions on how to enable it.</p>
+<p>JavaScript-based functionality is disabled by default. Please refer to the Druid <a href="/docs/0.17.0/development/javascript.html">JavaScript programming guide</a> for guidelines about using Druid's JavaScript functionality, including instructions on how to enable it.</p>
 </blockquote>
 <h6><a class="anchor" aria-hidden="true" id="affinity"></a><a href="#affinity" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
 <p>Affinity configs can be provided to the <em>equalDistribution</em> and <em>fillCapacity</em> strategies using the &quot;affinityConfig&quot;
@@ -1170,6 +1236,28 @@ field. If not provided, the default is to not use affinity at all.</p>
 <tr><td><code>strong</code></td><td>With weak affinity (the default), tasks for a dataSource may be assigned to other MiddleManagers if their affinity-mapped MiddleManagers are not able to run all pending tasks in the queue for that dataSource. With strong affinity, tasks for a dataSource will only ever be assigned to their affinity-mapped MiddleManagers, and will wait in the pending queue if necessary.</td><td>false</td></tr>
 </tbody>
 </table>
+<h6><a class="anchor" aria-hidden="true" id="workercategoryspec"></a><a href="#workercategoryspec" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22- [...]
+<p>WorkerCategorySpec can be provided to the <em>equalDistributionWithCategorySpec</em> and <em>fillCapacityWithCategorySpec</em> strategies using the &quot;workerCategorySpec&quot;
+field. If not provided, the default is to not use it at all.</p>
+<table>
+<thead>
+<tr><th>Property</th><th>Description</th><th>Default</th></tr>
+</thead>
+<tbody>
+<tr><td><code>categoryMap</code></td><td>A JSON map object mapping a task type String name to a <a href="#categoryconfig">CategoryConfig</a> object, by which you can specify category config for different task type.</td><td>{}</td></tr>
+<tr><td><code>strong</code></td><td>With weak workerCategorySpec (the default), tasks for a dataSource may be assigned to other MiddleManagers if the MiddleManagers specified in <code>categoryMap</code> are not able to run all pending tasks in the queue for that dataSource. With strong workerCategorySpec, tasks for a dataSource will only ever be assigned to their specified MiddleManagers, and will wait in the pending queue if necessary.</td><td>false</td></tr>
+</tbody>
+</table>
+<h6><a class="anchor" aria-hidden="true" id="categoryconfig"></a><a href="#categoryconfig" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
+<table>
+<thead>
+<tr><th>Property</th><th>Description</th><th>Default</th></tr>
+</thead>
+<tbody>
+<tr><td><code>defaultCategory</code></td><td>Specify default category for a task type.</td><td>null</td></tr>
+<tr><td><code>categoryAffinity</code></td><td>A JSON map object mapping a datasource String name to a category String name of the MiddleManager. If category isn't specified for a datasource, then using the <code>defaultCategory</code>. If no specified category and the <code>defaultCategory</code> is also null, then tasks can run on any available MiddleManagers.</td><td>null</td></tr>
+</tbody>
+</table>
 <h5><a class="anchor" aria-hidden="true" id="autoscaler"></a><a href="#autoscaler" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>Amazon's EC2 is currently the only supported autoscaler.</p>
 <table>
@@ -1186,7 +1274,7 @@ field. If not provided, the default is to not use affinity at all.</p>
 </table>
 <h2><a class="anchor" aria-hidden="true" id="data-server"></a><a href="#data-server" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <p>This section contains the configuration options for the processes that reside on Data servers (MiddleManagers/Peons and Historicals) in the suggested <a href="../design/processes.html#server-types">three-server configuration</a>.</p>
-<p>Configuration options for the experimental <a href="/docs/latest/design/indexer.html">Indexer process</a> are also provided here.</p>
+<p>Configuration options for the experimental <a href="/docs/0.17.0/design/indexer.html">Indexer process</a> are also provided here.</p>
 <h3><a class="anchor" aria-hidden="true" id="middlemanager-and-peons"></a><a href="#middlemanager-and-peons" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 [...]
 <p>These MiddleManager and Peon configurations can be defined in the <code>middleManager/runtime.properties</code> file.</p>
 <h4><a class="anchor" aria-hidden="true" id="middlemanager-process-config"></a><a href="#middlemanager-process-config" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 [...]
@@ -1198,7 +1286,7 @@ field. If not provided, the default is to not use affinity at all.</p>
 <tr><td><code>druid.host</code></td><td>The host for the current process. This is used to advertise the current processes location as reachable from another process and should generally be specified such that <code>http://${druid.host}/</code> could actually talk to this process</td><td>InetAddress.getLocalHost().getCanonicalHostName()</td></tr>
 <tr><td><code>druid.bindOnHost</code></td><td>Indicating whether the process's internal jetty server bind on <code>druid.host</code>. Default is false, which means binding to all interfaces.</td><td>false</td></tr>
 <tr><td><code>druid.plaintextPort</code></td><td>This is the port to actually listen on; unless port mapping is used, this will be the same port as is on <code>druid.host</code></td><td>8091</td></tr>
-<tr><td><code>druid.tlsPort</code></td><td>TLS port for HTTPS connector, if <a href="/docs/latest/operations/tls-support.html">druid.enableTlsPort</a> is set then this config will be used. If <code>druid.host</code> contains port then that port will be ignored. This should be a non-negative Integer.</td><td>8291</td></tr>
+<tr><td><code>druid.tlsPort</code></td><td>TLS port for HTTPS connector, if <a href="/docs/0.17.0/operations/tls-support.html">druid.enableTlsPort</a> is set then this config will be used. If <code>druid.host</code> contains port then that port will be ignored. This should be a non-negative Integer.</td><td>8291</td></tr>
 <tr><td><code>druid.service</code></td><td>The name of the service. This is used as a dimension when emitting metrics and alerts to differentiate between the various services</td><td>druid/middlemanager</td></tr>
 </tbody>
 </table>
@@ -1222,6 +1310,7 @@ field. If not provided, the default is to not use affinity at all.</p>
 <tr><td><code>druid.worker.ip</code></td><td>The IP of the worker.</td><td>localhost</td></tr>
 <tr><td><code>druid.worker.version</code></td><td>Version identifier for the MiddleManager.</td><td>0</td></tr>
 <tr><td><code>druid.worker.capacity</code></td><td>Maximum number of tasks the MiddleManager can accept.</td><td>Number of available processors - 1</td></tr>
+<tr><td><code>druid.worker.category</code></td><td>A string to name the category that the MiddleManager node belongs to.</td><td><code>__default_worker_category</code></td></tr>
 </tbody>
 </table>
 <h4><a class="anchor" aria-hidden="true" id="peon-processing"></a><a href="#peon-processing" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
@@ -1256,7 +1345,7 @@ ensure at least this amount of direct memory is available by providing <code>-XX
 <tbody>
 <tr><td><code>druid.realtime.cache.useCache</code></td><td>true, false</td><td>Enable the cache on the realtime.</td><td>false</td></tr>
 <tr><td><code>druid.realtime.cache.populateCache</code></td><td>true, false</td><td>Populate the cache on the realtime.</td><td>false</td></tr>
-<tr><td><code>druid.realtime.cache.unCacheable</code></td><td>All druid query types</td><td>All query types to not cache.</td><td><code>[&quot;groupBy&quot;, &quot;select&quot;]</code></td></tr>
+<tr><td><code>druid.realtime.cache.unCacheable</code></td><td>All druid query types</td><td>All query types to not cache.</td><td><code>[]</code></td></tr>
 <tr><td><code>druid.realtime.cache.maxEntrySize</code></td><td>Maximum cache entry size in bytes.</td><td>1_000_000</td></tr>
 </tbody>
 </table>
@@ -1273,8 +1362,8 @@ ensure at least this amount of direct memory is available by providing <code>-XX
 <tbody>
 <tr><td><code>druid.peon.mode</code></td><td>Choices are &quot;local&quot; and &quot;remote&quot;. Setting this to local means you intend to run the peon as a standalone process (Not recommended).</td><td>remote</td></tr>
 <tr><td><code>druid.indexer.task.baseDir</code></td><td>Base temporary working directory.</td><td><code>System.getProperty(&quot;java.io.tmpdir&quot;)</code></td></tr>
-<tr><td><code>druid.indexer.task.baseTaskDir</code></td><td>Base temporary working directory for tasks.</td><td><code>${druid.indexer.task.baseDir}/persistent/tasks</code></td></tr>
-<tr><td><code>druid.indexer.task.defaultHadoopCoordinates</code></td><td>Hadoop version to use with HadoopIndexTasks that do not request a particular version.</td><td>org.apache.hadoop:hadoop-client:2.8.3</td></tr>
+<tr><td><code>druid.indexer.task.baseTaskDir</code></td><td>Base temporary working directory for tasks.</td><td><code>${druid.indexer.task.baseDir}/persistent/task</code></td></tr>
+<tr><td><code>druid.indexer.task.defaultHadoopCoordinates</code></td><td>Hadoop version to use with HadoopIndexTasks that do not request a particular version.</td><td>org.apache.hadoop:hadoop-client:2.8.5</td></tr>
 <tr><td><code>druid.indexer.task.defaultRowFlushBoundary</code></td><td>Highest row count before persisting to disk. Used for indexing generating tasks.</td><td>75000</td></tr>
 <tr><td><code>druid.indexer.task.directoryLockTimeout</code></td><td>Wait this long for zombie peons to exit before giving up on their replacements.</td><td>PT10M</td></tr>
 <tr><td><code>druid.indexer.task.gracefulShutdownTimeout</code></td><td>Wait this long on middleManager restart for restorable tasks to gracefully exit.</td><td>PT5M</td></tr>
@@ -1305,7 +1394,7 @@ This type of medium is preferred, but it may require to allow the JVM to have mo
 <code>-XX:MaxDirectMemorySize</code> configuration. It is not yet understood how does the required off-heap memory size relates
 to the size of the segments being created. But definitely it doesn't make sense to add more extra off-heap memory,
 than the configured maximum <em>heap</em> size (<code>-Xmx</code>) for the same JVM.</p>
-<p>For most types of tasks SegmentWriteOutMediumFactory could be configured per-task (see <a href="/docs/latest/ingestion/tasks.html">Tasks</a>
+<p>For most types of tasks SegmentWriteOutMediumFactory could be configured per-task (see <a href="/docs/0.17.0/ingestion/tasks.html">Tasks</a>
 page, &quot;TuningConfig&quot; section), but if it's not specified for a task, or it's not supported for a particular task type,
 then the value from the configuration below is used:</p>
 <table>
@@ -1326,7 +1415,7 @@ then the value from the configuration below is used:</p>
 <tr><td><code>druid.host</code></td><td>The host for the current process. This is used to advertise the current processes location as reachable from another process and should generally be specified such that <code>http://${druid.host}/</code> could actually talk to this process</td><td>InetAddress.getLocalHost().getCanonicalHostName()</td></tr>
 <tr><td><code>druid.bindOnHost</code></td><td>Indicating whether the process's internal jetty server bind on <code>druid.host</code>. Default is false, which means binding to all interfaces.</td><td>false</td></tr>
 <tr><td><code>druid.plaintextPort</code></td><td>This is the port to actually listen on; unless port mapping is used, this will be the same port as is on <code>druid.host</code></td><td>8091</td></tr>
-<tr><td><code>druid.tlsPort</code></td><td>TLS port for HTTPS connector, if <a href="/docs/latest/operations/tls-support.html">druid.enableTlsPort</a> is set then this config will be used. If <code>druid.host</code> contains port then that port will be ignored. This should be a non-negative Integer.</td><td>8283</td></tr>
+<tr><td><code>druid.tlsPort</code></td><td>TLS port for HTTPS connector, if <a href="/docs/0.17.0/operations/tls-support.html">druid.enableTlsPort</a> is set then this config will be used. If <code>druid.host</code> contains port then that port will be ignored. This should be a non-negative Integer.</td><td>8283</td></tr>
 <tr><td><code>druid.service</code></td><td>The name of the service. This is used as a dimension when emitting metrics and alerts to differentiate between the various services</td><td>druid/indexer</td></tr>
 </tbody>
 </table>
@@ -1342,7 +1431,7 @@ then the value from the configuration below is used:</p>
 <tr><td><code>druid.worker.numConcurrentMerges</code></td><td>Maximum number of segment persist or merge operations that can run concurrently across all tasks.</td><td><code>druid.worker.capacity</code> / 2, rounded down</td></tr>
 <tr><td><code>druid.indexer.task.baseDir</code></td><td>Base temporary working directory.</td><td><code>System.getProperty(&quot;java.io.tmpdir&quot;)</code></td></tr>
 <tr><td><code>druid.indexer.task.baseTaskDir</code></td><td>Base temporary working directory for tasks.</td><td><code>${druid.indexer.task.baseDir}/persistent/tasks</code></td></tr>
-<tr><td><code>druid.indexer.task.defaultHadoopCoordinates</code></td><td>Hadoop version to use with HadoopIndexTasks that do not request a particular version.</td><td>org.apache.hadoop:hadoop-client:2.8.3</td></tr>
+<tr><td><code>druid.indexer.task.defaultHadoopCoordinates</code></td><td>Hadoop version to use with HadoopIndexTasks that do not request a particular version.</td><td>org.apache.hadoop:hadoop-client:2.8.5</td></tr>
 <tr><td><code>druid.indexer.task.gracefulShutdownTimeout</code></td><td>Wait this long on Indexer restart for restorable tasks to gracefully exit.</td><td>PT5M</td></tr>
 <tr><td><code>druid.indexer.task.hadoopWorkingPath</code></td><td>Temporary working directory for Hadoop tasks.</td><td><code>/tmp/druid-indexing</code></td></tr>
 <tr><td><code>druid.indexer.task.restoreTasksOnRestart</code></td><td>If true, the Indexer will attempt to stop tasks gracefully on shutdown and restore them on restart.</td><td>false</td></tr>
@@ -1367,6 +1456,7 @@ then the value from the configuration below is used:</p>
 <tr><td><code>druid.server.http.unannouncePropagationDelay</code></td><td>How long to wait for zookeeper unannouncements to propagate before shutting down Jetty. This is a minimum and <code>druid.server.http.gracefulShutdownTimeout</code> does not start counting down until after this period elapses.</td><td><code>PT0S</code> (do not wait)</td></tr>
 <tr><td><code>druid.server.http.maxQueryTimeout</code></td><td>Maximum allowed value (in milliseconds) for <code>timeout</code> parameter. See <a href="../querying/query-context.html">query-context</a> to know more about <code>timeout</code>. Query is rejected if the query context <code>timeout</code> is greater than this value.</td><td>Long.MAX_VALUE</td></tr>
 <tr><td><code>druid.server.http.maxRequestHeaderSize</code></td><td>Maximum size of a request header in bytes. Larger headers consume more memory and can make a server more vulnerable to denial of service attacks.</td><td>8 * 1024</td></tr>
+<tr><td><code>druid.server.http.enableForwardedRequestCustomizer</code></td><td>If enabled, adds Jetty ForwardedRequestCustomizer which reads X-Forwarded-* request headers to manipulate servlet request object when Druid is used behind a proxy.</td><td>false</td></tr>
 </tbody>
 </table>
 <h4><a class="anchor" aria-hidden="true" id="indexer-processing-resources"></a><a href="#indexer-processing-resources" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 [...]
@@ -1400,14 +1490,14 @@ line.</p>
 <tbody>
 <tr><td><code>druid.realtime.cache.useCache</code></td><td>true, false</td><td>Enable the cache on the realtime.</td><td>false</td></tr>
 <tr><td><code>druid.realtime.cache.populateCache</code></td><td>true, false</td><td>Populate the cache on the realtime.</td><td>false</td></tr>
-<tr><td><code>druid.realtime.cache.unCacheable</code></td><td>All druid query types</td><td>All query types to not cache.</td><td><code>[&quot;groupBy&quot;, &quot;select&quot;]</code></td></tr>
+<tr><td><code>druid.realtime.cache.unCacheable</code></td><td>All druid query types</td><td>All query types to not cache.</td><td><code>[]</code></td></tr>
 <tr><td><code>druid.realtime.cache.maxEntrySize</code></td><td>Maximum cache entry size in bytes.</td><td>1_000_000</td></tr>
 </tbody>
 </table>
 <p>See <a href="#cache-configuration">cache configuration</a> for how to configure cache settings.</p>
 <p>Note that only local caches such as the <code>local</code>-type cache and <code>caffeine</code> cache are supported. If a remote cache such as <code>memcached</code> is used, it will be ignored.</p>
 <h3><a class="anchor" aria-hidden="true" id="historical"></a><a href="#historical" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
-<p>For general Historical Process information, see <a href="/docs/latest/design/historical.html">here</a>.</p>
+<p>For general Historical Process information, see <a href="/docs/0.17.0/design/historical.html">here</a>.</p>
 <p>These Historical configurations can be defined in the <code>historical/runtime.properties</code> file.</p>
 <h4><a class="anchor" aria-hidden="true" id="historical-process-configuration"></a><a href="#historical-process-configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13. [...]
 <table>
@@ -1418,7 +1508,7 @@ line.</p>
 <tr><td><code>druid.host</code></td><td>The host for the current process. This is used to advertise the current processes location as reachable from another process and should generally be specified such that <code>http://${druid.host}/</code> could actually talk to this process</td><td>InetAddress.getLocalHost().getCanonicalHostName()</td></tr>
 <tr><td><code>druid.bindOnHost</code></td><td>Indicating whether the process's internal jetty server bind on <code>druid.host</code>. Default is false, which means binding to all interfaces.</td><td>false</td></tr>
 <tr><td><code>druid.plaintextPort</code></td><td>This is the port to actually listen on; unless port mapping is used, this will be the same port as is on <code>druid.host</code></td><td>8083</td></tr>
-<tr><td><code>druid.tlsPort</code></td><td>TLS port for HTTPS connector, if <a href="/docs/latest/operations/tls-support.html">druid.enableTlsPort</a> is set then this config will be used. If <code>druid.host</code> contains port then that port will be ignored. This should be a non-negative Integer.</td><td>8283</td></tr>
+<tr><td><code>druid.tlsPort</code></td><td>TLS port for HTTPS connector, if <a href="/docs/0.17.0/operations/tls-support.html">druid.enableTlsPort</a> is set then this config will be used. If <code>druid.host</code> contains port then that port will be ignored. This should be a non-negative Integer.</td><td>8283</td></tr>
 <tr><td><code>druid.service</code></td><td>The name of the service. This is used as a dimension when emitting metrics and alerts to differentiate between the various services</td><td>druid/historical</td></tr>
 </tbody>
 </table>
@@ -1429,7 +1519,7 @@ line.</p>
 </thead>
 <tbody>
 <tr><td><code>druid.server.maxSize</code></td><td>The maximum number of bytes-worth of segments that the process wants assigned to it. This is not a limit that Historical processes actually enforces, just a value published to the Coordinator process so it can plan accordingly.</td><td>0</td></tr>
-<tr><td><code>druid.server.tier</code></td><td>A string to name the distribution tier that the storage process belongs to. Many of the <a href="/docs/latest/operations/rule-configuration.html">rules Coordinator processes use</a> to manage segments can be keyed on tiers.</td><td><code>_default_tier</code></td></tr>
+<tr><td><code>druid.server.tier</code></td><td>A string to name the distribution tier that the storage process belongs to. Many of the <a href="/docs/0.17.0/operations/rule-configuration.html">rules Coordinator processes use</a> to manage segments can be keyed on tiers.</td><td><code>_default_tier</code></td></tr>
 <tr><td><code>druid.server.priority</code></td><td>In a tiered architecture, the priority of the tier, thus allowing control over which processes are queried. Higher numbers mean higher priority. The default (no priority) works for architecture with no cross replication (tiers that have no data-storage overlap). Data centers typically have equal priority.</td><td>0</td></tr>
 </tbody>
 </table>
@@ -1440,16 +1530,19 @@ line.</p>
 </thead>
 <tbody>
 <tr><td><code>druid.segmentCache.locations</code></td><td>Segments assigned to a Historical process are first stored on the local file system (in a disk cache) and then served by the Historical process. These locations define where that local cache resides. This value cannot be NULL or EMPTY. Here is an example <code>druid.segmentCache.locations=[{&quot;path&quot;: &quot;/mnt/druidSegments&quot;, &quot;maxSize&quot;: 10000, &quot;freeSpacePercent&quot;: 1.0}]</code>. &quot;freeSpacePerce [...]
+<tr><td><code>druid.segmentCache.locationSelectorStrategy</code></td><td>The strategy used to select a location from the configured <code>druid.segmentCache.locations</code> for segment distribution. Possible values are <code>leastBytesUsed</code> or <code>roundRobin</code> or <code>random</code>.</td><td>leastBytesUsed</td></tr>
 <tr><td><code>druid.segmentCache.deleteOnRemove</code></td><td>Delete segment files from cache once a process is no longer serving a segment.</td><td>true</td></tr>
 <tr><td><code>druid.segmentCache.dropSegmentDelayMillis</code></td><td>How long a process delays before completely dropping segment.</td><td>30000 (30 seconds)</td></tr>
 <tr><td><code>druid.segmentCache.infoDir</code></td><td>Historical processes keep track of the segments they are serving so that when the process is restarted they can reload the same segments without waiting for the Coordinator to reassign. This path defines where this metadata is kept. Directory will be created if needed.</td><td>${first_location}/info_dir</td></tr>
 <tr><td><code>druid.segmentCache.announceIntervalMillis</code></td><td>How frequently to announce segments while segments are loading from cache. Set this value to zero to wait for all segments to be loaded before announcing.</td><td>5000 (5 seconds)</td></tr>
 <tr><td><code>druid.segmentCache.numLoadingThreads</code></td><td>How many segments to drop or load concurrently from deep storage. Note that the work of loading segments involves downloading segments from deep storage, decompressing them and loading them to a memory mapped location. So the work is not all I/O Bound. Depending on CPU and network load, one could possibly increase this config to a higher value.</td><td>Number of cores</td></tr>
 <tr><td><code>druid.segmentCache.numBootstrapThreads</code></td><td>How many segments to load concurrently during historical startup.</td><td><code>druid.segmentCache.numLoadingThreads</code></td></tr>
+<tr><td><code>druid.segmentCache.lazyLoadOnStart</code></td><td>Whether or not to load segment columns metadata lazily during historical startup. When set to true, Historical startup time will be dramatically improved by deferring segment loading until the first time that segment takes part in a query, which will incur this cost instead. One catch is that if historical crashes while in the process of downloading and creating segment files, it is possible to end up with a corrupted segmen [...]
 <tr><td><code>druid.coordinator.loadqueuepeon.curator.numCallbackThreads</code></td><td>Number of threads for executing callback actions associated with loading or dropping of segments. One might want to increase this number when noticing clusters are lagging behind w.r.t. balancing segments across historical nodes.</td><td>2</td></tr>
 </tbody>
 </table>
 <p>In <code>druid.segmentCache.locations</code>, <em>freeSpacePercent</em> was added because <em>maxSize</em> setting is only a theoretical limit and assumes that much space will always be available for storing segments. In case of any druid bug leading to unaccounted segment files left alone on disk or some other process writing stuff to disk, This check can start failing segment loading early before filling up the disk completely and leaving the host usable otherwise.</p>
+<p>In <code>druid.segmentCache.locationSelectorStrategy</code>, one of leastBytesUsed or roundRobin could be specified to represent the strategy to distribute segments across multiple segment cache locations. The leastBytesUsed which is the default strategy always selects a location which has least bytes used in absolute terms. The roundRobin strategy selects a location in a round robin fashion oblivious to the bytes used or the capacity. Note that <code>if druid.segmentCache.numLoadingT [...]
 <h4><a class="anchor" aria-hidden="true" id="historical-query-configs"></a><a href="#historical-query-configs" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-. [...]
 <h5><a class="anchor" aria-hidden="true" id="concurrent-requests"></a><a href="#concurrent-requests" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
 <p>Druid uses Jetty to serve HTTP requests.</p>
@@ -1465,7 +1558,7 @@ line.</p>
 <tr><td><code>druid.server.http.defaultQueryTimeout</code></td><td>Query timeout in millis, beyond which unfinished queries will be cancelled</td><td>300000</td></tr>
 <tr><td><code>druid.server.http.gracefulShutdownTimeout</code></td><td>The maximum amount of time Jetty waits after receiving shutdown signal. After this timeout the threads will be forcefully shutdown. This allows any queries that are executing to complete.</td><td><code>PT0S</code> (do not wait)</td></tr>
 <tr><td><code>druid.server.http.unannouncePropagationDelay</code></td><td>How long to wait for zookeeper unannouncements to propagate before shutting down Jetty. This is a minimum and <code>druid.server.http.gracefulShutdownTimeout</code> does not start counting down until after this period elapses.</td><td><code>PT0S</code> (do not wait)</td></tr>
-<tr><td><code>druid.server.http.maxQueryTimeout</code></td><td>Maximum allowed value (in milliseconds) for <code>timeout</code> parameter. See <a href="/docs/latest/querying/query-context.html">query-context</a> to know more about <code>timeout</code>. Query is rejected if the query context <code>timeout</code> is greater than this value.</td><td>Long.MAX_VALUE</td></tr>
+<tr><td><code>druid.server.http.maxQueryTimeout</code></td><td>Maximum allowed value (in milliseconds) for <code>timeout</code> parameter. See <a href="/docs/0.17.0/querying/query-context.html">query-context</a> to know more about <code>timeout</code>. Query is rejected if the query context <code>timeout</code> is greater than this value.</td><td>Long.MAX_VALUE</td></tr>
 <tr><td><code>druid.server.http.maxRequestHeaderSize</code></td><td>Maximum size of a request header in bytes. Larger headers consume more memory and can make a server more vulnerable to denial of service attacks.</td><td>8 * 1024</td></tr>
 </tbody>
 </table>
@@ -1500,16 +1593,16 @@ line.</p>
 <tbody>
 <tr><td><code>druid.historical.cache.useCache</code></td><td>true, false</td><td>Enable the cache on the Historical.</td><td>false</td></tr>
 <tr><td><code>druid.historical.cache.populateCache</code></td><td>true, false</td><td>Populate the cache on the Historical.</td><td>false</td></tr>
-<tr><td><code>druid.historical.cache.unCacheable</code></td><td>All druid query types</td><td>All query types to not cache.</td><td>[&quot;groupBy&quot;, &quot;select&quot;]</td></tr>
+<tr><td><code>druid.historical.cache.unCacheable</code></td><td>All druid query types</td><td>All query types to not cache.</td><td><code>[]</code></td></tr>
 <tr><td><code>druid.historical.cache.maxEntrySize</code></td><td>Maximum cache entry size in bytes.</td><td>1_000_000</td></tr>
 </tbody>
 </table>
 <p>See <a href="#cache-configuration">cache configuration</a> for how to configure cache settings.</p>
 <h2><a class="anchor" aria-hidden="true" id="query-server"></a><a href="#query-server" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
 <p>This section contains the configuration options for the processes that reside on Query servers (Brokers) in the suggested <a href="../design/processes.html#server-types">three-server configuration</a>.</p>
-<p>Configuration options for the experimental <a href="/docs/latest/design/router.html">Router process</a> are also provided here.</p>
+<p>Configuration options for the experimental <a href="/docs/0.17.0/design/router.html">Router process</a> are also provided here.</p>
 <h3><a class="anchor" aria-hidden="true" id="broker"></a><a href="#broker" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
-<p>For general Broker process information, see <a href="/docs/latest/design/broker.html">here</a>.</p>
+<p>For general Broker process information, see <a href="/docs/0.17.0/design/broker.html">here</a>.</p>
 <p>These Broker configurations can be defined in the <code>broker/runtime.properties</code> file.</p>
 <h4><a class="anchor" aria-hidden="true" id="broker-process-configs"></a><a href="#broker-process-configs" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
 <table>
@@ -1520,7 +1613,7 @@ line.</p>
 <tr><td><code>druid.host</code></td><td>The host for the current process. This is used to advertise the current processes location as reachable from another process and should generally be specified such that <code>http://${druid.host}/</code> could actually talk to this process</td><td>InetAddress.getLocalHost().getCanonicalHostName()</td></tr>
 <tr><td><code>druid.bindOnHost</code></td><td>Indicating whether the process's internal jetty server bind on <code>druid.host</code>. Default is false, which means binding to all interfaces.</td><td>false</td></tr>
 <tr><td><code>druid.plaintextPort</code></td><td>This is the port to actually listen on; unless port mapping is used, this will be the same port as is on <code>druid.host</code></td><td>8082</td></tr>
-<tr><td><code>druid.tlsPort</code></td><td>TLS port for HTTPS connector, if <a href="/docs/latest/operations/tls-support.html">druid.enableTlsPort</a> is set then this config will be used. If <code>druid.host</code> contains port then that port will be ignored. This should be a non-negative Integer.</td><td>8282</td></tr>
+<tr><td><code>druid.tlsPort</code></td><td>TLS port for HTTPS connector, if <a href="/docs/0.17.0/operations/tls-support.html">druid.enableTlsPort</a> is set then this config will be used. If <code>druid.host</code> contains port then that port will be ignored. This should be a non-negative Integer.</td><td>8282</td></tr>
 <tr><td><code>druid.service</code></td><td>The name of the service. This is used as a dimension when emitting metrics and alerts to differentiate between the various services</td><td>druid/broker</td></tr>
 </tbody>
 </table>
@@ -1551,7 +1644,7 @@ line.</p>
 <tr><td><code>druid.server.http.maxScatterGatherBytes</code></td><td>Maximum number of bytes gathered from data processes such as Historicals and realtime processes to execute a query. Queries that exceed this limit will fail. This is an advance configuration that allows to protect in case Broker is under heavy load and not utilizing the data gathered in memory fast enough and leading to OOMs. This limit can be further reduced at query time using <code>maxScatterGatherBytes</code> in the [...]
 <tr><td><code>druid.server.http.gracefulShutdownTimeout</code></td><td>The maximum amount of time Jetty waits after receiving shutdown signal. After this timeout the threads will be forcefully shutdown. This allows any queries that are executing to complete.</td><td><code>PT0S</code> (do not wait)</td></tr>
 <tr><td><code>druid.server.http.unannouncePropagationDelay</code></td><td>How long to wait for zookeeper unannouncements to propagate before shutting down Jetty. This is a minimum and <code>druid.server.http.gracefulShutdownTimeout</code> does not start counting down until after this period elapses.</td><td><code>PT0S</code> (do not wait)</td></tr>
-<tr><td><code>druid.server.http.maxQueryTimeout</code></td><td>Maximum allowed value (in milliseconds) for <code>timeout</code> parameter. See <a href="/docs/latest/querying/query-context.html">query-context</a> to know more about <code>timeout</code>. Query is rejected if the query context <code>timeout</code> is greater than this value.</td><td>Long.MAX_VALUE</td></tr>
+<tr><td><code>druid.server.http.maxQueryTimeout</code></td><td>Maximum allowed value (in milliseconds) for <code>timeout</code> parameter. See <a href="/docs/0.17.0/querying/query-context.html">query-context</a> to know more about <code>timeout</code>. Query is rejected if the query context <code>timeout</code> is greater than this value.</td><td>Long.MAX_VALUE</td></tr>
 <tr><td><code>druid.server.http.maxRequestHeaderSize</code></td><td>Maximum size of a request header in bytes. Larger headers consume more memory and can make a server more vulnerable to denial of service attacks.</td><td>8 * 1024</td></tr>
 </tbody>
 </table>
@@ -1563,11 +1656,12 @@ client has the following configuration options.</p>
 <tr><th>Property</th><th>Description</th><th>Default</th></tr>
 </thead>
 <tbody>
-<tr><td><code>druid.broker.http.numConnections</code></td><td>Size of connection pool for the Broker to connect to Historical and real-time processes. If there are more queries than this number that all need to speak to the same process, then they will queue up.</td><td>20</td></tr>
-<tr><td><code>druid.broker.http.compressionCodec</code></td><td>Compression codec the Broker uses to communicate with Historical and real-time processes. May be &quot;gzip&quot; or &quot;identity&quot;.</td><td>gzip</td></tr>
-<tr><td><code>druid.broker.http.readTimeout</code></td><td>The timeout for data reads from Historical servers and real-time tasks.</td><td>PT15M</td></tr>
-<tr><td><code>druid.broker.http.unusedConnectionTimeout</code></td><td>The timeout for idle connections in connection pool. This timeout should be less than <code>druid.broker.http.readTimeout</code>. Set this timeout = ~90% of <code>druid.broker.http.readTimeout</code></td><td><code>PT4M</code></td></tr>
-<tr><td><code>druid.broker.http.maxQueuedBytes</code></td><td>Maximum number of bytes queued per query before exerting backpressure on the channel to the data server. Similar to <code>druid.server.http.maxScatterGatherBytes</code>, except unlike that configuration, this one will trigger backpressure rather than query failure. Zero means disabled. Can be overridden by the <a href="/docs/latest/querying/query-context.html">&quot;maxQueuedBytes&quot; query context parameter</a>.</td><td>0 ( [...]
+<tr><td><code>druid.broker.http.numConnections</code></td><td>Size of connection pool for the Broker to connect to Historical and real-time processes. If there are more queries than this number that all need to speak to the same process, then they will queue up.</td><td><code>20</code></td></tr>
+<tr><td><code>druid.broker.http.compressionCodec</code></td><td>Compression codec the Broker uses to communicate with Historical and real-time processes. May be &quot;gzip&quot; or &quot;identity&quot;.</td><td><code>gzip</code></td></tr>
+<tr><td><code>druid.broker.http.readTimeout</code></td><td>The timeout for data reads from Historical servers and real-time tasks.</td><td><code>PT15M</code></td></tr>
+<tr><td><code>druid.broker.http.unusedConnectionTimeout</code></td><td>The timeout for idle connections in connection pool. The connection in the pool will be closed after this timeout and a new one will be established. This timeout should be less than <code>druid.broker.http.readTimeout</code>. Set this timeout = ~90% of <code>druid.broker.http.readTimeout</code></td><td><code>PT4M</code></td></tr>
+<tr><td><code>druid.broker.http.maxQueuedBytes</code></td><td>Maximum number of bytes queued per query before exerting backpressure on the channel to the data server. Similar to <code>druid.server.http.maxScatterGatherBytes</code>, except unlike that configuration, this one will trigger backpressure rather than query failure. Zero means disabled. Can be overridden by the <a href="/docs/0.17.0/querying/query-context.html">&quot;maxQueuedBytes&quot; query context parameter</a>.</td><td><co [...]
+<tr><td><code>druid.broker.http.numMaxThreads</code></td><td>`Maximum number of I/O worker threads</td><td>max(10, ((number of cores * 17) / 16 + 2) + 30)`</td></tr>
 </tbody>
 </table>
 <h5><a class="anchor" aria-hidden="true" id="retry-policy"></a><a href="#retry-policy" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
@@ -1581,7 +1675,7 @@ client has the following configuration options.</p>
 </tbody>
 </table>
 <h5><a class="anchor" aria-hidden="true" id="processing-1"></a><a href="#processing-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
-<p>The broker uses processing configs for nested groupBy queries. And, if you use groupBy v1, long-interval queries (of any type) can be broken into shorter interval queries and processed in parallel inside this thread pool. For more details, see &quot;chunkPeriod&quot; in the <a href="/docs/latest/querying/query-context.html">query context</a> doc.</p>
+<p>The broker uses processing configs for nested groupBy queries. And, if you use groupBy v1, long-interval queries (of any type) can be broken into shorter interval queries and processed in parallel inside this thread pool. For more details, see &quot;chunkPeriod&quot; in the <a href="/docs/0.17.0/querying/query-context.html">query context</a> doc.</p>
 <table>
 <thead>
 <tr><th>Property</th><th>Description</th><th>Default</th></tr>
@@ -1595,6 +1689,13 @@ client has the following configuration options.</p>
 <tr><td><code>druid.processing.columnCache.sizeBytes</code></td><td>Maximum size in bytes for the dimension value lookup cache. Any value greater than <code>0</code> enables the cache. It is currently disabled by default. Enabling the lookup cache can significantly improve the performance of aggregators operating on dimension values, such as the JavaScript aggregator, or cardinality aggregator, but can slow things down if the cache hit rate is low (i.e. dimensions with few repeating valu [...]
 <tr><td><code>druid.processing.fifo</code></td><td>If the processing queue should treat tasks of equal priority in a FIFO manner</td><td><code>false</code></td></tr>
 <tr><td><code>druid.processing.tmpDir</code></td><td>Path where temporary files created while processing a query should be stored. If specified, this configuration takes priority over the default <code>java.io.tmpdir</code> path.</td><td>path represented by <code>java.io.tmpdir</code></td></tr>
+<tr><td><code>druid.processing.merge.useParallelMergePool</code></td><td>Enable automatic parallel merging for Brokers on a dedicated async ForkJoinPool. If <code>false</code>, instead merges will be done serially on the <code>HTTP</code> thread pool.</td><td><code>true</code></td></tr>
+<tr><td><code>druid.processing.merge.pool.parallelism</code></td><td>Size of ForkJoinPool. Note that the default configuration assumes that the value returned by <code>Runtime.getRuntime().availableProcessors()</code> represents 2 hyper-threads per physical core, and multiplies this value by <code>0.75</code> in attempt to size <code>1.5</code> times the number of <em>physical</em> cores.</td><td><code>Runtime.getRuntime().availableProcessors() * 0.75</code> (rounded up)</td></tr>
+<tr><td><code>druid.processing.merge.pool.defaultMaxQueryParallelism</code></td><td>Default maximum number of parallel merge tasks per query. Note that the default configuration assumes that the value returned by <code>Runtime.getRuntime().availableProcessors()</code> represents 2 hyper-threads per physical core, and multiplies this value by <code>0.5</code> in attempt to size to the number of <em>physical</em> cores.</td><td><code>Runtime.getRuntime().availableProcessors() * 0.5</code>  [...]
+<tr><td><code>druid.processing.merge.pool.awaitShutdownMillis</code></td><td>Time to wait for merge ForkJoinPool tasks to complete before ungracefully stopping on process shutdown in milliseconds.</td><td><code>60_000</code></td></tr>
+<tr><td><code>druid.processing.merge.task.targetRunTimeMillis</code></td><td>Ideal run-time of each ForkJoinPool merge task, before forking off a new task to continue merging sequences.</td><td><code>100</code></td></tr>
+<tr><td><code>druid.processing.merge.task.initialYieldNumRows</code></td><td>Number of rows to yield per ForkJoinPool merge task, before forking off a new task to continue merging sequences.</td><td><code>16384</code></td></tr>
+<tr><td><code>druid.processing.merge.task.smallBatchNumRows</code></td><td>Size of result batches to operate on in ForkJoinPool merge tasks.</td><td><code>4096</code></td></tr>
 </tbody>
 </table>
 <p>The amount of direct memory needed by Druid is at least
@@ -1620,11 +1721,13 @@ line.</p>
 <tr><td><code>druid.sql.planner.awaitInitializationOnStart</code></td><td>Boolean</td><td>Whether the Broker will wait for its SQL metadata view to fully initialize before starting up. If set to 'true', the Broker's HTTP server will not start up, and the Broker will not announce itself as available, until the server view is initialized. See also <code>druid.broker.segment.awaitInitializationOnStart</code>, a related setting.</td><td>true</td></tr>
 <tr><td><code>druid.sql.planner.maxQueryCount</code></td><td>Maximum number of queries to issue, including nested queries. Set to 1 to disable sub-queries, or set to 0 for unlimited.</td><td>8</td></tr>
 <tr><td><code>druid.sql.planner.maxSemiJoinRowsInMemory</code></td><td>Maximum number of rows to keep in memory for executing two-stage semi-join queries like <code>SELECT * FROM Employee WHERE DeptName IN (SELECT DeptName FROM Dept)</code>.</td><td>100000</td></tr>
-<tr><td><code>druid.sql.planner.maxTopNLimit</code></td><td>Maximum threshold for a <a href="/docs/latest/querying/topnquery.html">TopN query</a>. Higher limits will be planned as <a href="/docs/latest/querying/groupbyquery.html">GroupBy queries</a> instead.</td><td>100000</td></tr>
+<tr><td><code>druid.sql.planner.maxTopNLimit</code></td><td>Maximum threshold for a <a href="/docs/0.17.0/querying/topnquery.html">TopN query</a>. Higher limits will be planned as <a href="/docs/0.17.0/querying/groupbyquery.html">GroupBy queries</a> instead.</td><td>100000</td></tr>
 <tr><td><code>druid.sql.planner.metadataRefreshPeriod</code></td><td>Throttle for metadata refreshes.</td><td>PT1M</td></tr>
-<tr><td><code>druid.sql.planner.selectThreshold</code></td><td>Page size threshold for <a href="/docs/latest/querying/select-query.html">Select queries</a>. Select queries for larger resultsets will be issued back-to-back using pagination.</td><td>1000</td></tr>
+<tr><td><code>druid.sql.planner.metadataSegmentCacheEnable</code></td><td>Whether to keep a cache of published segments in broker. If true, broker polls coordinator in background to get segments from metadata store and maintains a local cache. If false, coordinator's REST API will be invoked when broker needs published segments info.</td><td>false</td></tr>
+<tr><td><code>druid.sql.planner.metadataSegmentPollPeriod</code></td><td>How often to poll coordinator for published segments list if <code>druid.sql.planner.metadataSegmentCacheEnable</code> is set to true. Poll period is in milliseconds.</td><td>60000</td></tr>
+<tr><td><code>druid.sql.planner.selectThreshold</code></td><td>Page size threshold for <a href="/docs/0.17.0/querying/select-query.html">Select queries</a>. Select queries for larger resultsets will be issued back-to-back using pagination.</td><td>1000</td></tr>
 <tr><td><code>druid.sql.planner.useApproximateCountDistinct</code></td><td>Whether to use an approximate cardinality algorithm for <code>COUNT(DISTINCT foo)</code>.</td><td>true</td></tr>
-<tr><td><code>druid.sql.planner.useApproximateTopN</code></td><td>Whether to use approximate <a href="/docs/latest/querying/topnquery.html">TopN queries</a> when a SQL query could be expressed as such. If false, exact <a href="/docs/latest/querying/groupbyquery.html">GroupBy queries</a> will be used instead.</td><td>true</td></tr>
+<tr><td><code>druid.sql.planner.useApproximateTopN</code></td><td>Whether to use approximate <a href="/docs/0.17.0/querying/topnquery.html">TopN queries</a> when a SQL query could be expressed as such. If false, exact <a href="/docs/0.17.0/querying/groupbyquery.html">GroupBy queries</a> will be used instead.</td><td>true</td></tr>
 <tr><td><code>druid.sql.planner.requireTimeCondition</code></td><td>Whether to require SQL to have filter conditions on __time column so that all generated native queries will have user specified intervals. If true, all queries without filter condition on __time column will fail</td><td>false</td></tr>
 <tr><td><code>druid.sql.planner.sqlTimeZone</code></td><td>Sets the default time zone for the server, which will affect how time functions and timestamp literals behave. Should be a time zone name like &quot;America/Los_Angeles&quot; or offset like &quot;-08:00&quot;.</td><td>UTC</td></tr>
 <tr><td><code>druid.sql.planner.serializeComplexValues</code></td><td>Whether to serialize &quot;complex&quot; output values, false will return the class name instead of the serialized value.</td><td>true</td></tr>
@@ -1642,7 +1745,7 @@ line.</p>
 <tr><td><code>druid.broker.cache.useResultLevelCache</code></td><td>true, false</td><td>Enable result level caching on the Broker.</td><td>false</td></tr>
 <tr><td><code>druid.broker.cache.populateResultLevelCache</code></td><td>true, false</td><td>Populate the result level cache on the Broker.</td><td>false</td></tr>
 <tr><td><code>druid.broker.cache.resultLevelCacheLimit</code></td><td>positive integer</td><td>Maximum size of query response that can be cached.</td><td><code>Integer.MAX_VALUE</code></td></tr>
-<tr><td><code>druid.broker.cache.unCacheable</code></td><td>All druid query types</td><td>All query types to not cache.</td><td><code>[&quot;groupBy&quot;, &quot;select&quot;]</code></td></tr>
+<tr><td><code>druid.broker.cache.unCacheable</code></td><td>All druid query types</td><td>All query types to not cache.</td><td><code>[]</code></td></tr>
 <tr><td><code>druid.broker.cache.cacheBulkMergeLimit</code></td><td>positive integer or 0</td><td>Queries with more segments than this number will not attempt to fetch from cache at the broker level, leaving potential caching fetches (and cache result merging) to the Historicals</td><td><code>Integer.MAX_VALUE</code></td></tr>
 <tr><td><code>druid.broker.cache.maxEntrySize</code></td><td>Maximum cache entry size in bytes.</td><td>1_000_000</td></tr>
 </tbody>
@@ -1712,7 +1815,7 @@ for both Broker and Historical processes, when defined in the common properties
 <h5><a class="anchor" aria-hidden="true" id="druidcachecacheexecutorfactory"></a><a href="#druidcachecacheexecutorfactory" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 1 [...]
 <p>Here are the possible values for <code>druid.cache.cacheExecutorFactory</code>, which controls how maintenance tasks are run</p>
 <ul>
-<li><code>COMMON_FJP</code> (default) use the common ForkJoinPool. Should use with <a href="https://github.com/apache/incubator-druid/pull/4810#issuecomment-329922810">JRE 8u60 or higher</a>. Older versions of the JRE may have worse performance than newer JRE versions.</li>
+<li><code>COMMON_FJP</code> (default) use the common ForkJoinPool. Should use with <a href="https://github.com/apache/druid/pull/4810#issuecomment-329922810">JRE 8u60 or higher</a>. Older versions of the JRE may have worse performance than newer JRE versions.</li>
 <li><code>SINGLE_THREAD</code> Use a single-threaded executor.</li>
 <li><code>SAME_THREAD</code> Cache maintenance is done eagerly.</li>
 </ul>
@@ -1765,6 +1868,17 @@ If there is an L1 miss and L2 hit, it will also populate L1.</p>
 </table>
 <h2><a class="anchor" aria-hidden="true" id="general-query-configuration"></a><a href="#general-query-configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
 <p>This section describes configurations that control behavior of Druid's query types, applicable to Broker, Historical, and MiddleManager processes.</p>
+<h3><a class="anchor" aria-hidden="true" id="query-vectorization-config"></a><a href="#query-vectorization-config" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H [...]
+<p>The following configurations are to set the default behavior for query vectorization.</p>
+<table>
+<thead>
+<tr><th>Property</th><th>Description</th><th>Default</th></tr>
+</thead>
+<tbody>
+<tr><td><code>druid.query.vectorize</code></td><td>See <a href="../querying/query-context.html#vectorizable-queries">Vectorizable queries</a> for details. This value can be overridden by <code>vectorize</code> in the query contexts.</td><td><code>false</code></td></tr>
+<tr><td><code>druid.query.vectorSize</code></td><td>See <a href="../querying/query-context.html#vectorizable-queries">Vectorizable queries</a> for details. This value can be overridden by <code>vectorSize</code> in the query contexts.</td><td><code>512</code></td></tr>
+</tbody>
+</table>
 <h3><a class="anchor" aria-hidden="true" id="topn-query-config"></a><a href="#topn-query-config" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
 <table>
 <thead>
@@ -1795,7 +1909,7 @@ If there is an L1 miss and L2 hit, it will also populate L1.</p>
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="groupby-query-config"></a><a href="#groupby-query-config" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
-<p>This section describes the configurations for groupBy queries. You can set the runtime properties in the <code>runtime.properties</code> file on Broker, Historical, and MiddleManager processes. You can set the query context parameters through the <a href="/docs/latest/querying/query-context.html">query context</a>.</p>
+<p>This section describes the configurations for groupBy queries. You can set the runtime properties in the <code>runtime.properties</code> file on Broker, Historical, and MiddleManager processes. You can set the query context parameters through the <a href="/docs/0.17.0/querying/query-context.html">query context</a>.</p>
 <h4><a class="anchor" aria-hidden="true" id="configurations-for-groupby-v2"></a><a href="#configurations-for-groupby-v2" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
 <p>Supported runtime properties:</p>
 <table>
@@ -1900,27 +2014,31 @@ If there is an L1 miss and L2 hit, it will also populate L1.</p>
 <tr><td><code>druid.host</code></td><td>The host for the current process. This is used to advertise the current processes location as reachable from another process and should generally be specified such that <code>http://${druid.host}/</code> could actually talk to this process</td><td>InetAddress.getLocalHost().getCanonicalHostName()</td></tr>
 <tr><td><code>druid.bindOnHost</code></td><td>Indicating whether the process's internal jetty server bind on <code>druid.host</code>. Default is false, which means binding to all interfaces.</td><td>false</td></tr>
 <tr><td><code>druid.plaintextPort</code></td><td>This is the port to actually listen on; unless port mapping is used, this will be the same port as is on <code>druid.host</code></td><td>8888</td></tr>
-<tr><td><code>druid.tlsPort</code></td><td>TLS port for HTTPS connector, if <a href="/docs/latest/operations/tls-support.html">druid.enableTlsPort</a> is set then this config will be used. If <code>druid.host</code> contains port then that port will be ignored. This should be a non-negative Integer.</td><td>9088</td></tr>
+<tr><td><code>druid.tlsPort</code></td><td>TLS port for HTTPS connector, if <a href="/docs/0.17.0/operations/tls-support.html">druid.enableTlsPort</a> is set then this config will be used. If <code>druid.host</code> contains port then that port will be ignored. This should be a non-negative Integer.</td><td>9088</td></tr>
 <tr><td><code>druid.service</code></td><td>The name of the service. This is used as a dimension when emitting metrics and alerts to differentiate between the various services</td><td>druid/router</td></tr>
 </tbody>
 </table>
 <h4><a class="anchor" aria-hidden="true" id="runtime-configuration"></a><a href="#runtime-configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
 <table>
 <thead>
-<tr><th>Property</th><th>Possible Values</th><th>Description</th><th>Default</th></tr>
+<tr><th>Property</th><th>Description</th><th>Default</th></tr>
 </thead>
 <tbody>
-<tr><td><code>druid.router.defaultBrokerServiceName</code></td><td>Any string.</td><td>The default Broker to connect to in case service discovery fails.</td><td>druid/broker</td></tr>
-<tr><td><code>druid.router.tierToBrokerMap</code></td><td>An ordered JSON map of tiers to Broker names. The priority of Brokers is based on the ordering.</td><td>Queries for a certain tier of data are routed to their appropriate Broker.</td><td>{&quot;_default_tier&quot;: &quot;<defaultBrokerServiceName>&quot;}</td></tr>
-<tr><td><code>druid.router.defaultRule</code></td><td>Any string.</td><td>The default rule for all datasources.</td><td>&quot;_default&quot;</td></tr>
-<tr><td><code>druid.router.pollPeriod</code></td><td>Any ISO8601 duration.</td><td>How often to poll for new rules.</td><td>PT1M</td></tr>
-<tr><td><code>druid.router.strategies</code></td><td>An ordered JSON array of objects.</td><td>Please see <a href="../design/router.html#router-strategies">Router Strategies</a> for details.</td><td>[{&quot;type&quot;:&quot;timeBoundary&quot;},{&quot;type&quot;:&quot;priority&quot;}]</td></tr>
-<tr><td><code>druid.router.avatica.balancer.type</code></td><td>String representing an AvaticaConnectionBalancer name. Please see <a href="../design/router.html#avatica-query-balancing">Avatica Query Balancing</a></td><td>Class to use for balancing Avatica queries across Brokers</td><td>rendezvousHash</td></tr>
-<tr><td><code>druid.router.http.maxRequestBufferSize</code></td><td>Maximum size of the buffer used to write requests when forwarding them to the Broker. This should be set to at least the maxHeaderSize allowed on the Broker</td><td>8 * 1024</td></tr>
+<tr><td><code>druid.router.defaultBrokerServiceName</code></td><td>The default Broker to connect to in case service discovery fails.</td><td>druid/broker</td></tr>
+<tr><td><code>druid.router.tierToBrokerMap</code></td><td>Queries for a certain tier of data are routed to their appropriate Broker. This value should be an ordered JSON map of tiers to Broker names. The priority of Brokers is based on the ordering.</td><td>{&quot;_default_tier&quot;: &quot;<defaultBrokerServiceName>&quot;}</td></tr>
+<tr><td><code>druid.router.defaultRule</code></td><td>The default rule for all datasources.</td><td>&quot;_default&quot;</td></tr>
+<tr><td><code>druid.router.pollPeriod</code></td><td>How often to poll for new rules.</td><td>PT1M</td></tr>
+<tr><td><code>druid.router.strategies</code></td><td>Please see <a href="../design/router.html#router-strategies">Router Strategies</a> for details.</td><td>[{&quot;type&quot;:&quot;timeBoundary&quot;},{&quot;type&quot;:&quot;priority&quot;}]</td></tr>
+<tr><td><code>druid.router.avatica.balancer.type</code></td><td>Class to use for balancing Avatica queries across Brokers. Please see <a href="../design/router.html#avatica-query-balancing">Avatica Query Balancing</a>.</td><td>rendezvousHash</td></tr>
 <tr><td><code>druid.router.managementProxy.enabled</code></td><td>Enables the Router's <a href="../design/router.html#router-as-management-proxy">management proxy</a> functionality.</td><td>false</td></tr>
+<tr><td><code>druid.router.http.numConnections</code></td><td>Size of connection pool for the Router to connect to Broker processes. If there are more queries than this number that all need to speak to the same process, then they will queue up.</td><td><code>20</code></td></tr>
+<tr><td><code>druid.router.http.readTimeout</code></td><td>The timeout for data reads from Broker processes.</td><td><code>PT15M</code></td></tr>
+<tr><td><code>druid.router.http.numMaxThreads</code></td><td>Maximum number of worker threads to handle HTTP requests and responses</td><td><code>max(10, ((number of cores * 17) / 16 + 2) + 30)</code></td></tr>
+<tr><td><code>druid.router.http.numRequestsQueued</code></td><td>Maximum number of requests that may be queued to a destination</td><td><code>1024</code></td></tr>
+<tr><td><code>druid.router.http.requestBuffersize</code></td><td>Size of the content buffer for receiving requests. These buffers are only used for active connections that have requests with bodies that will not fit within the header buffer</td><td><code>8 * 1024</code></td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/geo.html"><span class="arrow-prev">← </span><span>Spatial filters</span></a><a class="docs-next button" href="/docs/latest/development/extensions.html"><span>Extensions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#recommended-configuration-file-organization">Recommended Configuration File Organiza [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/development/geo.html"><span class="arrow-prev">← </span><span>Spatial filters</span></a><a class="docs-next button" href="/docs/0.17.0/development/extensions.html"><span>Extensions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#recommended-configuration-file-organization">Recommended Configuration File Organiza [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -1937,6 +2055,6 @@ If there is an L1 miss and L2 hit, it will also populate L1.</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.16.1-incubating"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.17.0/configuration/indexing-service.html b/docs/0.17.0/configuration/indexing-service.html
new file mode 100644
index 0000000..4189126
--- /dev/null
+++ b/docs/0.17.0/configuration/indexing-service.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../configuration/index.html#overlord">
+<meta http-equiv="refresh" content="0; url=../configuration/index.html#overlord">
+<h1>Redirecting...</h1>
+<a href="../configuration/index.html#overlord">Click here if you are not redirected.</a>
+<script>location="../configuration/index.html#overlord"</script>
diff --git a/docs/latest/configuration/logging.html b/docs/0.17.0/configuration/logging.html
similarity index 51%
copy from docs/latest/configuration/logging.html
copy to docs/0.17.0/configuration/logging.html
index 2b750e1..4517f2f 100644
--- a/docs/latest/configuration/logging.html
+++ b/docs/0.17.0/configuration/logging.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Logging · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/configuration/logging.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.16.1-incubating" / [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Logging · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/configuration/logging.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.17.0" /><meta prop [...]
               window.dataLayer = window.dataLayer || [];
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -59,7 +59,7 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-druid/edit/master/docs/configuration/logging.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Logging</h1></header><article><div><span><!--
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/configuration/logging.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Logging</h1></header><article><div><span><!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
   ~ or more contributor license agreements.  See the NOTICE file
   ~ distributed with this work for additional information
@@ -77,7 +77,7 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>Apache Druid (incubating) processes will emit logs that are useful for debugging to the console. Druid processes also emit periodic metrics about their state. For more about metrics, see <a href="../configuration/index.html#enabling-metrics">Configuration</a>. Metric logs are printed to the console by default, and can be disabled with <code>-Ddruid.emitter.logging.logLevel=debug</code>.</p>
+<p>Apache Druid processes will emit logs that are useful for debugging to the console. Druid processes also emit periodic metrics about their state. For more about metrics, see <a href="../configuration/index.html#enabling-metrics">Configuration</a>. Metric logs are printed to the console by default, and can be disabled with <code>-Ddruid.emitter.logging.logLevel=debug</code>.</p>
 <p>Druid uses <a href="http://logging.apache.org/log4j/2.x/">log4j2</a> for logging. Logging can be configured with a log4j2.xml file. Add the path to the directory containing the log4j2.xml file (e.g. the _common/ dir) to your classpath if you want to override default Druid log configuration. Note that this directory should be earlier in the classpath than the druid jars. The easiest way to do this is to prefix the classpath with the config dir.</p>
 <p>To enable java logging to go through log4j2, set the <code>-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager</code> server parameter.</p>
 <p>An example log4j2.xml ships with Druid under config/_common/log4j2.xml, and a sample file is also shown below:</p>
@@ -130,7 +130,7 @@
   <span class="hljs-tag">&lt;/<span class="hljs-name">Loggers</span>&gt;</span>
 <span class="hljs-tag">&lt;/<span class="hljs-name">Configuration</span>&gt;</span>
 </span></code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions.html"><span class="arrow-prev">← </span><span>Extensions</span></a><a class="docs-next button" href="/docs/latest/operations/management-uis.html"><span>Management UIs</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#my-logs-are-really-chatty-can-i-set-them-to-asynchronously-write">My logs a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/development/extensions.html"><span class="arrow-prev">← </span><span>Extensions</span></a><a class="docs-next button" href="/docs/0.17.0/operations/management-uis.html"><span>Management UIs</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#my-logs-are-really-chatty-can-i-set-them-to-asynchronously-write">My logs a [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -147,6 +147,6 @@
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.16.1-incubating"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.17.0/configuration/production-cluster.html b/docs/0.17.0/configuration/production-cluster.html
new file mode 100644
index 0000000..d3b1d39
--- /dev/null
+++ b/docs/0.17.0/configuration/production-cluster.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../tutorials/cluster.html">
+<meta http-equiv="refresh" content="0; url=../tutorials/cluster.html">
+<h1>Redirecting...</h1>
+<a href="../tutorials/cluster.html">Click here if you are not redirected.</a>
+<script>location="../tutorials/cluster.html"</script>
diff --git a/docs/0.17.0/configuration/realtime.html b/docs/0.17.0/configuration/realtime.html
new file mode 100644
index 0000000..2f57fca
--- /dev/null
+++ b/docs/0.17.0/configuration/realtime.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../ingestion/standalone-realtime.html">
+<meta http-equiv="refresh" content="0; url=../ingestion/standalone-realtime.html">
+<h1>Redirecting...</h1>
+<a href="../ingestion/standalone-realtime.html">Click here if you are not redirected.</a>
+<script>location="../ingestion/standalone-realtime.html"</script>
diff --git a/docs/0.17.0/configuration/simple-cluster.html b/docs/0.17.0/configuration/simple-cluster.html
new file mode 100644
index 0000000..d3b1d39
--- /dev/null
+++ b/docs/0.17.0/configuration/simple-cluster.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../tutorials/cluster.html">
+<meta http-equiv="refresh" content="0; url=../tutorials/cluster.html">
+<h1>Redirecting...</h1>
+<a href="../tutorials/cluster.html">Click here if you are not redirected.</a>
+<script>location="../tutorials/cluster.html"</script>
diff --git a/docs/0.17.0/configuration/zookeeper.html b/docs/0.17.0/configuration/zookeeper.html
new file mode 100644
index 0000000..24b4630
--- /dev/null
+++ b/docs/0.17.0/configuration/zookeeper.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../dependencies/zookeeper.html">
+<meta http-equiv="refresh" content="0; url=../dependencies/zookeeper.html">
+<h1>Redirecting...</h1>
+<a href="../dependencies/zookeeper.html">Click here if you are not redirected.</a>
+<script>location="../dependencies/zookeeper.html"</script>
diff --git a/docs/0.17.0/dependencies/cassandra-deep-storage.html b/docs/0.17.0/dependencies/cassandra-deep-storage.html
new file mode 100644
index 0000000..c3328a4
--- /dev/null
+++ b/docs/0.17.0/dependencies/cassandra-deep-storage.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../development/extensions-contrib/cassandra.html">
+<meta http-equiv="refresh" content="0; url=../development/extensions-contrib/cassandra.html">
+<h1>Redirecting...</h1>
+<a href="../development/extensions-contrib/cassandra.html">Click here if you are not redirected.</a>
+<script>location="../development/extensions-contrib/cassandra.html"</script>
diff --git a/docs/0.17.0/dependencies/deep-storage.html b/docs/0.17.0/dependencies/deep-storage.html
new file mode 100644
index 0000000..698b4d1
--- /dev/null
+++ b/docs/0.17.0/dependencies/deep-storage.html
@@ -0,0 +1,120 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Deep storage · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/dependencies/deep-storage.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.17.0" />< [...]
+              window.dataLayer = window.dataLayer || [];
+              function gtag(){dataLayer.push(arguments); }
+              gtag('js', new Date());
+              gtag('config', 'UA-131010415-1');
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/dependencies/deep-storage.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Deep storage</h1></header><article><div><span><!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<p>Deep storage is where segments are stored.  It is a storage mechanism that Apache Druid does not provide.  This deep storage infrastructure defines the level of durability of your data, as long as Druid processes can see this storage infrastructure and get at the segments stored on it, you will not lose data no matter how many Druid nodes you lose.  If segments disappear from this storage layer, then you will lose whatever data those segments represented.</p>
+<h2><a class="anchor" aria-hidden="true" id="local-mount"></a><a href="#local-mount" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<p>A local mount can be used for storage of segments as well.  This allows you to use just your local file system or anything else that can be mount locally like NFS, Ceph, etc.  This is the default deep storage implementation.</p>
+<p>In order to use a local mount for deep storage, you need to set the following configuration in your common configs.</p>
+<table>
+<thead>
+<tr><th>Property</th><th>Possible Values</th><th>Description</th><th>Default</th></tr>
+</thead>
+<tbody>
+<tr><td><code>druid.storage.type</code></td><td>local</td><td></td><td>Must be set.</td></tr>
+<tr><td><code>druid.storage.storageDirectory</code></td><td></td><td>Directory for storing segments.</td><td>Must be set.</td></tr>
+</tbody>
+</table>
+<p>Note that you should generally set <code>druid.storage.storageDirectory</code> to something different from <code>druid.segmentCache.locations</code> and <code>druid.segmentCache.infoDir</code>.</p>
+<p>If you are using the Hadoop indexer in local mode, then just give it a local file as your output directory and it will work.</p>
+<h2><a class="anchor" aria-hidden="true" id="s3-compatible"></a><a href="#s3-compatible" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>See <a href="/docs/0.17.0/development/extensions-core/s3.html">druid-s3-extensions extension documentation</a>.</p>
+<h2><a class="anchor" aria-hidden="true" id="hdfs"></a><a href="#hdfs" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<p>See <a href="/docs/0.17.0/development/extensions-core/hdfs.html">druid-hdfs-storage extension documentation</a>.</p>
+<h2><a class="anchor" aria-hidden="true" id="additional-deep-stores"></a><a href="#additional-deep-stores" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
+<p>For additional deep stores, please see our <a href="/docs/0.17.0/development/extensions.html">extensions list</a>.</p>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/design/processes.html"><span class="arrow-prev">← </span><span>Processes and servers</span></a><a class="docs-next button" href="/docs/0.17.0/dependencies/metadata-storage.html"><span>Metadata storage</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#local-mount">Local Mount</a></li><li><a href="#s3-compatible">S3 [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                
+                apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
+                indexName: 'apache_druid',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/dependencies/metadata-storage.html b/docs/0.17.0/dependencies/metadata-storage.html
similarity index 56%
copy from docs/latest/dependencies/metadata-storage.html
copy to docs/0.17.0/dependencies/metadata-storage.html
index 37b537d..b23a3cd 100644
--- a/docs/latest/dependencies/metadata-storage.html
+++ b/docs/0.17.0/dependencies/metadata-storage.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Metadata storage · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/dependencies/metadata-storage.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.1 [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Metadata storage · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/dependencies/metadata-storage.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.1 [...]
               window.dataLayer = window.dataLayer || [];
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -59,7 +59,7 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-druid/edit/master/docs/dependencies/metadata-storage.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Metadata storage</h1></header><article><div><span><!--
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/dependencies/metadata-storage.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Metadata storage</h1></header><article><div><span><!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
   ~ or more contributor license agreements.  See the NOTICE file
   ~ distributed with this work for additional information
@@ -77,11 +77,11 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>The Metadata Storage is an external dependency of Apache Druid (incubating). Druid uses it to store
+<p>The Metadata Storage is an external dependency of Apache Druid. Druid uses it to store
 various metadata about the system, but not to store the actual data. There are
 a number of tables used for various purposes described below.</p>
 <p>Derby is the default metadata store for Druid, however, it is not suitable for production.
-<a href="/docs/latest/development/extensions-core/mysql.html">MySQL</a> and <a href="/docs/latest/development/extensions-core/postgresql.html">PostgreSQL</a> are more production suitable metadata stores.</p>
+<a href="/docs/0.17.0/development/extensions-core/mysql.html">MySQL</a> and <a href="/docs/0.17.0/development/extensions-core/postgresql.html">PostgreSQL</a> are more production suitable metadata stores.</p>
 <blockquote>
 <p>The Metadata Storage stores the entire metadata which is essential for a Druid cluster to work.
 For production clusters, consider using MySQL or PostgreSQL instead of Derby.
@@ -94,9 +94,9 @@ because there is no way to restore if you lose any metadata.</p>
 <span class="hljs-meta">druid.metadata.storage.connector.connectURI</span>=<span class="hljs-string">jdbc:derby://localhost:1527//opt/var/druid_state/derby;create=true</span>
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="mysql"></a><a href="#mysql" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
-<p>See <a href="/docs/latest/development/extensions-core/mysql.html">mysql-metadata-storage extension documentation</a>.</p>
+<p>See <a href="/docs/0.17.0/development/extensions-core/mysql.html">mysql-metadata-storage extension documentation</a>.</p>
 <h2><a class="anchor" aria-hidden="true" id="postgresql"></a><a href="#postgresql" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
-<p>See <a href="/docs/latest/development/extensions-core/postgresql.html">postgresql-metadata-storage</a>.</p>
+<p>See <a href="/docs/0.17.0/development/extensions-core/postgresql.html">postgresql-metadata-storage</a>.</p>
 <h2><a class="anchor" aria-hidden="true" id="adding-custom-dbcp-properties"></a><a href="#adding-custom-dbcp-properties" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
 <p>NOTE: These properties are not settable through the <code>druid.metadata.storage.connector.dbcp properties</code>: <code>username</code>, <code>password</code>, <code>connectURI</code>, <code>validationQuery</code>, <code>testOnBorrow</code>. These must be set through <code>druid.metadata.storage.connector</code> properties.</p>
 <p>Example supported properties:</p>
@@ -108,7 +108,7 @@ because there is no way to restore if you lose any metadata.</p>
 <h3><a class="anchor" aria-hidden="true" id="segments-table"></a><a href="#segments-table" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
 <p>This is dictated by the <code>druid.metadata.storage.tables.segments</code> property.</p>
 <p>This table stores metadata about the segments that are available in the system.
-The table is polled by the <a href="/docs/latest/design/coordinator.html">Coordinator</a> to
+The table is polled by the <a href="/docs/0.17.0/design/coordinator.html">Coordinator</a> to
 determine the set of segments that should be available for querying in the
 system. The table has two main functional columns, the other columns are for
 indexing purposes.</p>
@@ -139,7 +139,7 @@ an issue).</p>
 <p>Note that the format of this blob can and will change from time-to-time.</p>
 <h3><a class="anchor" aria-hidden="true" id="rule-table"></a><a href="#rule-table" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>The rule table is used to store the various rules about where segments should
-land. These rules are used by the <a href="/docs/latest/design/coordinator.html">Coordinator</a>
+land. These rules are used by the <a href="/docs/0.17.0/design/coordinator.html">Coordinator</a>
 when making segment (re-)allocation decisions about the cluster.</p>
 <h3><a class="anchor" aria-hidden="true" id="config-table"></a><a href="#config-table" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
 <p>The config table is used to store runtime configuration objects. We do not have
@@ -147,10 +147,10 @@ many of these yet and we are not sure if we will keep this mechanism going
 forward, but it is the beginnings of a method of changing some configuration
 parameters across the cluster at runtime.</p>
 <h3><a class="anchor" aria-hidden="true" id="task-related-tables"></a><a href="#task-related-tables" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
-<p>There are also a number of tables created and used by the <a href="/docs/latest/design/overlord.html">Overlord</a> and <a href="/docs/latest/design/middlemanager.html">MiddleManager</a> when managing tasks.</p>
+<p>There are also a number of tables created and used by the <a href="/docs/0.17.0/design/overlord.html">Overlord</a> and <a href="/docs/0.17.0/design/middlemanager.html">MiddleManager</a> when managing tasks.</p>
 <h3><a class="anchor" aria-hidden="true" id="audit-table"></a><a href="#audit-table" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <p>The Audit table is used to store the audit history for configuration changes
-e.g rule changes done by <a href="/docs/latest/design/coordinator.html">Coordinator</a> and other
+e.g rule changes done by <a href="/docs/0.17.0/design/coordinator.html">Coordinator</a> and other
 config changes.</p>
 <p>##Accessed by: ##</p>
 <p>The Metadata Storage is accessed only by:</p>
@@ -160,7 +160,7 @@ config changes.</p>
 <li>Coordinator Processes</li>
 </ol>
 <p>Thus you need to give permissions (e.g., in AWS Security Groups) only for these machines to access the Metadata storage.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/dependencies/deep-storage.html"><span class="arrow-prev">← </span><span>Deep storage</span></a><a class="docs-next button" href="/docs/latest/dependencies/zookeeper.html"><span class="function-name-prevnext">ZooKeeper</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#using-derby">Using Derby</a></li><li><a href="# [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/dependencies/deep-storage.html"><span class="arrow-prev">← </span><span>Deep storage</span></a><a class="docs-next button" href="/docs/0.17.0/dependencies/zookeeper.html"><span class="function-name-prevnext">ZooKeeper</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#using-derby">Using Derby</a></li><li><a href="# [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -177,6 +177,6 @@ config changes.</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.16.1-incubating"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.17.0/dependencies/zookeeper.html b/docs/0.17.0/dependencies/zookeeper.html
new file mode 100644
index 0000000..b624914
--- /dev/null
+++ b/docs/0.17.0/dependencies/zookeeper.html
@@ -0,0 +1,129 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>ZooKeeper · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/dependencies/zookeeper.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.17.0" /><meta p [...]
+              window.dataLayer = window.dataLayer || [];
+              function gtag(){dataLayer.push(arguments); }
+              gtag('js', new Date());
+              gtag('config', 'UA-131010415-1');
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/dependencies/zookeeper.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">ZooKeeper</h1></header><article><div><span><!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<p>Apache Druid uses <a href="http://zookeeper.apache.org/">Apache ZooKeeper</a> (ZK) for management of current cluster state. The operations that happen over ZK are</p>
+<ol>
+<li><a href="/docs/0.17.0/design/coordinator.html">Coordinator</a> leader election</li>
+<li>Segment &quot;publishing&quot; protocol from <a href="/docs/0.17.0/design/historical.html">Historical</a></li>
+<li>Segment load/drop protocol between <a href="/docs/0.17.0/design/coordinator.html">Coordinator</a> and <a href="/docs/0.17.0/design/historical.html">Historical</a></li>
+<li><a href="/docs/0.17.0/design/overlord.html">Overlord</a> leader election</li>
+<li><a href="/docs/0.17.0/design/overlord.html">Overlord</a> and <a href="/docs/0.17.0/design/middlemanager.html">MiddleManager</a> task management</li>
+</ol>
+<h2><a class="anchor" aria-hidden="true" id="coordinator-leader-election"></a><a href="#coordinator-leader-election" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
+<p>We use the Curator LeadershipLatch recipe to do leader election at path</p>
+<pre><code class="hljs">${druid<span class="hljs-selector-class">.zk</span><span class="hljs-selector-class">.paths</span><span class="hljs-selector-class">.coordinatorPath</span>}/_COORDINATOR
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="segment-publishing-protocol-from-historical-and-realtime"></a><a href="#segment-publishing-protocol-from-historical-and-realtime" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.2 [...]
+<p>The <code>announcementsPath</code> and <code>servedSegmentsPath</code> are used for this.</p>
+<p>All <a href="/docs/0.17.0/design/historical.html">Historical</a> processes publish themselves on the <code>announcementsPath</code>, specifically, they will create an ephemeral znode at</p>
+<pre><code class="hljs">${druid<span class="hljs-selector-class">.zk</span><span class="hljs-selector-class">.paths</span><span class="hljs-selector-class">.announcementsPath</span>}/${druid.host}
+</code></pre>
+<p>Which signifies that they exist. They will also subsequently create a permanent znode at</p>
+<pre><code class="hljs">${druid<span class="hljs-selector-class">.zk</span><span class="hljs-selector-class">.paths</span><span class="hljs-selector-class">.servedSegmentsPath</span>}/${druid.host}
+</code></pre>
+<p>And as they load up segments, they will attach ephemeral znodes that look like</p>
+<pre><code class="hljs">${druid<span class="hljs-selector-class">.zk</span><span class="hljs-selector-class">.paths</span><span class="hljs-selector-class">.servedSegmentsPath</span>}/${druid.host}/_segment_identifier_
+</code></pre>
+<p>Processes like the <a href="/docs/0.17.0/design/coordinator.html">Coordinator</a> and <a href="/docs/0.17.0/design/broker.html">Broker</a> can then watch these paths to see which processes are currently serving which segments.</p>
+<h2><a class="anchor" aria-hidden="true" id="segment-load-drop-protocol-between-coordinator-and-historical"></a><a href="#segment-load-drop-protocol-between-coordinator-and-historical" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-. [...]
+<p>The <code>loadQueuePath</code> is used for this.</p>
+<p>When the <a href="/docs/0.17.0/design/coordinator.html">Coordinator</a> decides that a <a href="/docs/0.17.0/design/historical.html">Historical</a> process should load or drop a segment, it writes an ephemeral znode to</p>
+<pre><code class="hljs">${druid<span class="hljs-selector-class">.zk</span><span class="hljs-selector-class">.paths</span><span class="hljs-selector-class">.loadQueuePath</span>}/_host_of_historical_process/_segment_identifier
+</code></pre>
+<p>This znode will contain a payload that indicates to the Historical process what it should do with the given segment. When the Historical process is done with the work, it will delete the znode in order to signify to the Coordinator that it is complete.</p>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/dependencies/metadata-storage.html"><span class="arrow-prev">← </span><span>Metadata storage</span></a><a class="docs-next button" href="/docs/0.17.0/ingestion/index.html"><span>Ingestion</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#coordinator-leader-election">Coordinator Leader Election</a></li><li><a href= [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                
+                apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
+                indexName: 'apache_druid',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/design/architecture.html b/docs/0.17.0/design/architecture.html
similarity index 64%
copy from docs/latest/design/architecture.html
copy to docs/0.17.0/design/architecture.html
index 22407fa..6c49da3 100644
--- a/docs/latest/design/architecture.html
+++ b/docs/0.17.0/design/architecture.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Design · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/design/architecture.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.16.1-incubating" /><m [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Design · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/design/architecture.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.17.0" /><meta propert [...]
               window.dataLayer = window.dataLayer || [];
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -59,7 +59,7 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-druid/edit/master/docs/design/architecture.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Design</h1></header><article><div><span><!--
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/design/architecture.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Design</h1></header><article><div><span><!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
   ~ or more contributor license agreements.  See the NOTICE file
   ~ distributed with this work for additional information
@@ -83,12 +83,12 @@ design also provides enhanced fault tolerance: an outage of one component will n
 <h2><a class="anchor" aria-hidden="true" id="processes-and-servers"></a><a href="#processes-and-servers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
 <p>Druid has several process types, briefly described below:</p>
 <ul>
-<li><a href="/docs/latest/design/coordinator.html"><strong>Coordinator</strong></a> processes manage data availability on the cluster.</li>
-<li><a href="/docs/latest/design/overlord.html"><strong>Overlord</strong></a> processes control the assignment of data ingestion workloads.</li>
-<li><a href="/docs/latest/design/broker.html"><strong>Broker</strong></a> processes handle queries from external clients.</li>
-<li><a href="/docs/latest/design/router.html"><strong>Router</strong></a> processes are optional processes that can route requests to Brokers, Coordinators, and Overlords.</li>
-<li><a href="/docs/latest/design/historical.html"><strong>Historical</strong></a> processes store queryable data.</li>
-<li><a href="/docs/latest/design/middlemanager.html"><strong>MiddleManager</strong></a> processes are responsible for ingesting data.</li>
+<li><a href="/docs/0.17.0/design/coordinator.html"><strong>Coordinator</strong></a> processes manage data availability on the cluster.</li>
+<li><a href="/docs/0.17.0/design/overlord.html"><strong>Overlord</strong></a> processes control the assignment of data ingestion workloads.</li>
+<li><a href="/docs/0.17.0/design/broker.html"><strong>Broker</strong></a> processes handle queries from external clients.</li>
+<li><a href="/docs/0.17.0/design/router.html"><strong>Router</strong></a> processes are optional processes that can route requests to Brokers, Coordinators, and Overlords.</li>
+<li><a href="/docs/0.17.0/design/historical.html"><strong>Historical</strong></a> processes store queryable data.</li>
+<li><a href="/docs/0.17.0/design/middlemanager.html"><strong>MiddleManager</strong></a> processes are responsible for ingesting data.</li>
 </ul>
 <p>Druid processes can be deployed any way you like, but for ease of deployment we suggest organizing them into three server types: Master, Query, and Data.</p>
 <ul>
@@ -96,7 +96,7 @@ design also provides enhanced fault tolerance: an outage of one component will n
 <li><strong>Query</strong>: Runs Broker and optional Router processes, handles queries from external clients.</li>
 <li><strong>Data</strong>: Runs Historical and MiddleManager processes, executes ingestion workloads and stores all queryable data.</li>
 </ul>
-<p>For more details on process and server organization, please see <a href="/docs/latest/design/processes.html">Druid Processes and Servers</a>.</p>
+<p>For more details on process and server organization, please see <a href="/docs/0.17.0/design/processes.html">Druid Processes and Servers</a>.</p>
 <h2><a class="anchor" aria-hidden="true" id="external-dependencies"></a><a href="#external-dependencies" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
 <p>In addition to its built-in process types, Druid also has three external dependencies. These are intended to be able to
 leverage existing infrastructure, where present.</p>
@@ -112,15 +112,15 @@ during a query, helping it offer the best query latencies possible. It also mean
 both in deep storage and across your Historical processes for the data you plan to load.</p>
 <p>Deep storage is an important part of Druid's elastic, fault-tolerant design. Druid can bootstrap from deep storage even
 if every single data server is lost and re-provisioned.</p>
-<p>For more details, please see the <a href="/docs/latest/dependencies/deep-storage.html">Deep storage</a> page.</p>
+<p>For more details, please see the <a href="/docs/0.17.0/dependencies/deep-storage.html">Deep storage</a> page.</p>
 <h3><a class="anchor" aria-hidden="true" id="metadata-storage"></a><a href="#metadata-storage" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>The metadata storage holds various shared system metadata such as segment availability information and task information.
 In a clustered deployment, this is typically going to be a traditional RDBMS like PostgreSQL or MySQL. In a single-server
 deployment, it is typically going to be a locally-stored Apache Derby database.</p>
-<p>For more details, please see the <a href="/docs/latest/dependencies/metadata-storage.html">Metadata storage</a> page.</p>
+<p>For more details, please see the <a href="/docs/0.17.0/dependencies/metadata-storage.html">Metadata storage</a> page.</p>
 <h3><a class="anchor" aria-hidden="true" id="zookeeper"></a><a href="#zookeeper" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <p>Used for internal service discovery, coordination, and leader election.</p>
-<p>For more details, please see the <a href="/docs/latest/dependencies/zookeeper.html">ZooKeeper</a> page.</p>
+<p>For more details, please see the <a href="/docs/0.17.0/dependencies/zookeeper.html">ZooKeeper</a> page.</p>
 <h2><a class="anchor" aria-hidden="true" id="architecture-diagram"></a><a href="#architecture-diagram" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
 <p>The following diagram shows how queries and data flow through this architecture, using the suggested Master/Query/Data server organization:</p>
 <p><img src="../assets/druid-architecture.png" width="800"/></p>
@@ -129,7 +129,7 @@ deployment, it is typically going to be a locally-stored Apache Derby database.<
 <p>Druid data is stored in &quot;datasources&quot;, which are similar to tables in a traditional RDBMS. Each datasource is
 partitioned by time and, optionally, further partitioned by other attributes. Each time range is called a &quot;chunk&quot; (for
 example, a single day, if your datasource is partitioned by day). Within a chunk, data is partitioned into one or more
-<a href="/docs/latest/design/segments.html">&quot;segments&quot;</a>. Each segment is a single file, typically comprising up to a few million rows of data. Since segments are
+<a href="/docs/0.17.0/design/segments.html">&quot;segments&quot;</a>. Each segment is a single file, typically comprising up to a few million rows of data. Since segments are
 organized into time chunks, it's sometimes helpful to think of segments as living on a timeline like the following:</p>
 <p><img src="../assets/druid-timeline.png" width="800" /></p>
 <p>A datasource may have anywhere from just a few segments, up to hundreds of thousands and even millions of segments. Each
@@ -152,7 +152,7 @@ to the <a href="#metadata-storage">metadata store</a>. This entry is a self-desc
 things like the schema of the segment, its size, and its location on deep storage. These entries are what the
 Coordinator uses to know what data <em>should</em> be available on the cluster.</p>
 <p>For details on the segment file format, please see <a href="segments.html">segment files</a>.</p>
-<p>For details on modeling your data in Druid, see <a href="/docs/latest/ingestion/schema-design.html">schema design</a>.</p>
+<p>For details on modeling your data in Druid, see <a href="/docs/0.17.0/ingestion/schema-design.html">schema design</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="indexing-and-handoff"></a><a href="#indexing-and-handoff" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
 <p><em>Indexing</em> is the mechanism by which new segments are created, and <em>handoff</em> is the mechanism by which they are published
 and begin being served by Historical processes. The mechanism works like this on the indexing side:</p>
@@ -209,7 +209,7 @@ new segments. Then it drops the old segments a few minutes later.</p>
 <p>Each segment has a lifecycle that involves the following three major areas:</p>
 <ol>
 <li><strong>Metadata store:</strong> Segment metadata (a small JSON payload generally no more than a few KB) is stored in the
-<a href="/docs/latest/dependencies/metadata-storage.html">metadata store</a> once a segment is done being constructed. The act of inserting
+<a href="/docs/0.17.0/dependencies/metadata-storage.html">metadata store</a> once a segment is done being constructed. The act of inserting
 a record for a segment into the metadata store is called <em>publishing</em>. These metadata records have a boolean flag
 named <code>used</code>, which controls whether the segment is intended to be queryable or not. Segments created by realtime tasks will be
 available before they are published, since they are only published when the segment is complete and will not accept
@@ -220,7 +220,7 @@ happens immediately before publishing metadata to the metadata store.</li>
 or a Historical process.</li>
 </ol>
 <p>You can inspect the state of currently active segments using the Druid SQL
-<a href="/docs/latest/querying/sql.html#segments-table"><code>sys.segments</code> table</a>. It includes the following flags:</p>
+<a href="/docs/0.17.0/querying/sql.html#segments-table"><code>sys.segments</code> table</a>. It includes the following flags:</p>
 <ul>
 <li><code>is_published</code>: True if segment metadata has been published to the metadata stored and <code>used</code> is true.</li>
 <li><code>is_available</code>: True if the segment is currently available for querying, either on a realtime task or Historical
@@ -232,10 +232,10 @@ published segments. Generally this is a transient state, and segments in this st
 automatically set to false.</li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="query-processing"></a><a href="#query-processing" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
-<p>Queries first enter the <a href="/docs/latest/design/broker.html">Broker</a>, where the Broker will identify which segments have data that may pertain to that query.
+<p>Queries first enter the <a href="/docs/0.17.0/design/broker.html">Broker</a>, where the Broker will identify which segments have data that may pertain to that query.
 The list of segments is always pruned by time, and may also be pruned by other attributes depending on how your
-datasource is partitioned. The Broker will then identify which <a href="/docs/latest/design/historical.html">Historicals</a> and
-<a href="/docs/latest/design/middlemanager.html">MiddleManagers</a> are serving those segments and send a rewritten subquery to each of those processes. The Historical/MiddleManager processes will take in the
+datasource is partitioned. The Broker will then identify which <a href="/docs/0.17.0/design/historical.html">Historicals</a> and
+<a href="/docs/0.17.0/design/middlemanager.html">MiddleManagers</a> are serving those segments and send a rewritten subquery to each of those processes. The Historical/MiddleManager processes will take in the
 queries, process them and return results. The Broker receives results and merges them together to get the final answer,
 which it returns to the original caller.</p>
 <p>Broker pruning is an important way that Druid limits the amount of data that must be scanned for each query, but it is
@@ -249,7 +249,7 @@ query. Within those columns, Druid can skip from row to row, avoiding reading da
 <li>Within each segment, using indexes to identify which rows must be accessed.</li>
 <li>Within each segment, only reading the specific rows and columns that are relevant to a particular query.</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/tutorials/tutorial-kerberos-hadoop.html"><span class="arrow-prev">← </span><span>Kerberized HDFS deep storage</span></a><a class="docs-next button" href="/docs/latest/design/segments.html"><span>Segments</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#processes-and-servers">Processes and Servers</a></li><li><a h [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/tutorials/tutorial-kerberos-hadoop.html"><span class="arrow-prev">← </span><span>Kerberized HDFS deep storage</span></a><a class="docs-next button" href="/docs/0.17.0/design/segments.html"><span>Segments</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#processes-and-servers">Processes and Servers</a></li><li><a h [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -266,6 +266,6 @@ query. Within those columns, Druid can skip from row to row, avoiding reading da
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.16.1-incubating"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/design/auth.html b/docs/0.17.0/design/auth.html
similarity index 56%
copy from docs/latest/design/auth.html
copy to docs/0.17.0/design/auth.html
index 956db1f..b3d9b2a 100644
--- a/docs/latest/design/auth.html
+++ b/docs/0.17.0/design/auth.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Authentication and Authorization · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/design/auth.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.16. [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Authentication and Authorization · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/design/auth.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.17. [...]
               window.dataLayer = window.dataLayer || [];
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -59,7 +59,7 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-druid/edit/master/docs/design/auth.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Authentication and Authorization</h1></header><article><div><span><!--
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/design/auth.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Authentication and Authorization</h1></header><article><div><span><!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
   ~ or more contributor license agreements.  See the NOTICE file
   ~ distributed with this work for additional information
@@ -77,7 +77,7 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>This document describes non-extension specific Apache Druid (incubating) authentication and authorization configurations.</p>
+<p>This document describes non-extension specific Apache Druid authentication and authorization configurations.</p>
 <table>
 <thead>
 <tr><th>Property</th><th>Type</th><th>Description</th><th>Default</th><th>Required</th></tr>
@@ -124,6 +124,31 @@ the Anonymous Authenticator should be added to the end of the authentication cha
 
 <span class="hljs-comment"># ... usual configs for basic authentication would go here ...</span>
 </code></pre>
+<h3><a class="anchor" aria-hidden="true" id="trusted-domain-authenticator"></a><a href="#trusted-domain-authenticator" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 [...]
+<p>This built-in Trusted Domain Authenticator authenticates requests originating from the configured trusted domain, and directs them to an Authorizer specified in the configuration by the user. It is intended to be used for adding a default level of trust and allow access for hosts within same domain.</p>
+<table>
+<thead>
+<tr><th>Property</th><th>Description</th><th>Default</th><th>Required</th></tr>
+</thead>
+<tbody>
+<tr><td><code>druid.auth.authenticator.&lt;authenticatorName&gt;.name</code></td><td>authenticator name.</td><td>N/A</td><td>Yes</td></tr>
+<tr><td><code>druid.auth.authenticator.&lt;authenticatorName&gt;.domain</code></td><td>Trusted Domain from which requests should be authenticated. If authentication is allowed for connections from only a given host, fully qualified hostname of that host needs to be specified.</td><td>N/A</td><td>Yes</td></tr>
+<tr><td><code>druid.auth.authenticator.&lt;authenticatorName&gt;.useForwardedHeaders</code></td><td>Clients connecting to druid could pass through many layers of proxy. Some proxies also append its own IP address to 'X-Forwarded-For' header before passing on the request to another proxy. Some proxies also connect on behalf of client. If this config is set to true and if 'X-Forwarded-For' is present, trusted domain authenticator will use left most host name from X-Forwarded-For header. No [...]
+<tr><td><code>druid.auth.authenticator.&lt;authenticatorName&gt;.authorizerName</code></td><td>Authorizer that requests should be directed to.</td><td>N/A</td><td>Yes</td></tr>
+<tr><td><code>druid.auth.authenticator.&lt;authenticatorName&gt;.identity</code></td><td>The identity of the requester.</td><td>defaultUser</td><td>No</td></tr>
+</tbody>
+</table>
+<p>To use the Trusted Domain Authenticator, add an authenticator with type <code>trustedDomain</code> to the authenticatorChain.</p>
+<p>For example, the following enables the Trusted Domain Authenticator :</p>
+<pre><code class="hljs"><span class="hljs-attr">druid.auth.authenticatorChain</span>=[<span class="hljs-string">"trustedDomain"</span>]
+
+<span class="hljs-attr">druid.auth.authenticator.trustedDomain.type</span>=trustedDomain
+<span class="hljs-attr">druid.auth.authenticator.trustedDomain.domain</span>=trustedhost.mycompany.com
+<span class="hljs-attr">druid.auth.authenticator.trustedDomain.identity</span>=defaultUser
+<span class="hljs-attr">druid.auth.authenticator.trustedDomain.authorizerName</span>=myBasicAuthorizer
+<span class="hljs-attr">druid.auth.authenticator.trustedDomain.name</span>=myTrustedAutenticator
+<span class="hljs-comment"># ... usual configs for druid would go here ...</span>
+</code></pre>
 <h2><a class="anchor" aria-hidden="true" id="escalator"></a><a href="#escalator" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <p>The <code>druid.escalator.type</code> property determines what authentication scheme should be used for internal Druid cluster communications (such as when a Broker process communicates with Historical processes for query processing).</p>
 <p>The Escalator chosen for this property must use an authentication scheme that is supported by an Authenticator in <code>druid.auth.authenticationChain</code>. Authenticator extension implementers must also provide a corresponding Escalator implementation if they intend to use a particular authentication scheme for internal Druid communications.</p>
@@ -171,7 +196,7 @@ druid.auth.authorizer.&lt;authorizer-<span class="hljs-built_in">name</span>&gt;
 
 </code></pre>
 <p>These properties provide the authenticator and authorizer names to the implementations as @JsonProperty parameters, potentially useful when multiple authenticators or authorizers of the same type are configured.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/comparisons/druid-vs-sql-on-hadoop.html"><span class="arrow-prev">← </span><span>Apache Druid vs SQL-on-Hadoop</span></a><a class="docs-next button" href="/docs/latest/design/broker.html"><span>Broker</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#enabling-authentication-authorizationloadinglookuptest">Enabling [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/comparisons/druid-vs-sql-on-hadoop.html"><span class="arrow-prev">← </span><span>Apache Druid vs SQL-on-Hadoop</span></a><a class="docs-next button" href="/docs/0.17.0/design/broker.html"><span>Broker</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#enabling-authentication-authorizationloadinglookuptest">Enabling [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -188,6 +213,6 @@ druid.auth.authorizer.&lt;authorizer-<span class="hljs-built_in">name</span>&gt;
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.16.1-incubating"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.17.0/design/broker.html b/docs/0.17.0/design/broker.html
new file mode 100644
index 0000000..ca8f84f
--- /dev/null
+++ b/docs/0.17.0/design/broker.html
@@ -0,0 +1,115 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Broker · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/design/broker.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.17.0" /><meta property="og: [...]
+              window.dataLayer = window.dataLayer || [];
+              function gtag(){dataLayer.push(arguments); }
+              gtag('js', new Date());
+              gtag('config', 'UA-131010415-1');
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/design/broker.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Broker</h1></header><article><div><span><!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<h3><a class="anchor" aria-hidden="true" id="configuration"></a><a href="#configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>For Apache Druid Broker Process Configuration, see <a href="../configuration/index.html#broker">Broker Configuration</a>.</p>
+<h3><a class="anchor" aria-hidden="true" id="http-endpoints"></a><a href="#http-endpoints" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
+<p>For a list of API endpoints supported by the Broker, see <a href="../operations/api-reference.html#broker">Broker API</a>.</p>
+<h3><a class="anchor" aria-hidden="true" id="overview"></a><a href="#overview" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
+<p>The Broker is the process to route queries to if you want to run a distributed cluster. It understands the metadata published to ZooKeeper about what segments exist on what processes and routes queries such that they hit the right processes. This process also merges the result sets from all of the individual processes together.
+On start up, Historical processes announce themselves and the segments they are serving in Zookeeper.</p>
+<h3><a class="anchor" aria-hidden="true" id="running"></a><a href="#running" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
+<pre><code class="hljs">org.apache.druid.cli.Main<span class="hljs-built_in"> server </span>broker
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="forwarding-queries"></a><a href="#forwarding-queries" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22- [...]
+<p>Most Druid queries contain an interval object that indicates a span of time for which data is requested. Likewise, Druid <a href="/docs/0.17.0/design/segments.html">Segments</a> are partitioned to contain data for some interval of time and segments are distributed across a cluster. Consider a simple datasource with 7 segments where each segment contains data for a given day of the week. Any query issued to the datasource for more than one day of data will hit more than one segment. Th [...]
+<p>To determine which processes to forward queries to, the Broker process first builds a view of the world from information in Zookeeper. Zookeeper maintains information about <a href="/docs/0.17.0/design/historical.html">Historical</a> and streaming ingestion <a href="/docs/0.17.0/design/peons.html">Peon</a> processes and the segments they are serving. For every datasource in Zookeeper, the Broker process builds a timeline of segments and the processes that serve them. When queries are  [...]
+<h3><a class="anchor" aria-hidden="true" id="caching"></a><a href="#caching" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
+<p>Broker processes employ a cache with an LRU cache invalidation strategy. The Broker cache stores per-segment results. The cache can be local to each Broker process or shared across multiple processes using an external distributed cache such as <a href="http://memcached.org/">memcached</a>. Each time a broker process receives a query, it first maps the query to a set of segments. A subset of these segment results may already exist in the cache and the results can be directly pulled fro [...]
+Historical processes. Once the Historical processes return their results, the Broker will store those results in the cache. Real-time segments are never cached and hence requests for real-time data will always be forwarded to real-time processes. Real-time data is perpetually changing and caching the results would be unreliable.</p>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/design/auth.html"><span class="arrow-prev">← </span><span>Authentication and Authorization</span></a><a class="docs-next button" href="/docs/0.17.0/design/coordinator.html"><span>Coordinator Process</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"><div class="text-c [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                
+                apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
+                indexName: 'apache_druid',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/docs/0.17.0/design/concepts-and-terminology.html b/docs/0.17.0/design/concepts-and-terminology.html
new file mode 100644
index 0000000..eed33a4
--- /dev/null
+++ b/docs/0.17.0/design/concepts-and-terminology.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="index.html">
+<meta http-equiv="refresh" content="0; url=index.html">
+<h1>Redirecting...</h1>
+<a href="index.html">Click here if you are not redirected.</a>
+<script>location="index.html"</script>
diff --git a/docs/latest/design/coordinator.html b/docs/0.17.0/design/coordinator.html
similarity index 55%
copy from docs/latest/design/coordinator.html
copy to docs/0.17.0/design/coordinator.html
index 9f3ce25..b910d07 100644
--- a/docs/latest/design/coordinator.html
+++ b/docs/0.17.0/design/coordinator.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Coordinator Process · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/design/coordinator.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.16.1-incu [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Coordinator Process · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/design/coordinator.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.17.0" />< [...]
               window.dataLayer = window.dataLayer || [];
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -59,7 +59,7 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-druid/edit/master/docs/design/coordinator.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Coordinator Process</h1></header><article><div><span><!--
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/design/coordinator.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Coordinator Process</h1></header><article><div><span><!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
   ~ or more contributor license agreements.  See the NOTICE file
   ~ distributed with this work for additional information
@@ -78,7 +78,7 @@
   ~ under the License.
   -->
 <h3><a class="anchor" aria-hidden="true" id="configuration"></a><a href="#configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
-<p>For Apache Druid (incubating) Coordinator Process Configuration, see <a href="../configuration/index.html#coordinator">Coordinator Configuration</a>.</p>
+<p>For Apache Druid Coordinator Process Configuration, see <a href="../configuration/index.html#coordinator">Coordinator Configuration</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="http-endpoints"></a><a href="#http-endpoints" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
 <p>For a list of API endpoints supported by the Coordinator, see <a href="../operations/api-reference.html#coordinator">Coordinator API</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="overview"></a><a href="#overview" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
@@ -89,7 +89,7 @@
 <pre><code class="hljs">org.apache.druid.cli.Main<span class="hljs-built_in"> server </span>coordinator
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="rules"></a><a href="#rules" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
-<p>Segments can be automatically loaded and dropped from the cluster based on a set of rules. For more information on rules, see <a href="/docs/latest/operations/rule-configuration.html">Rule Configuration</a>.</p>
+<p>Segments can be automatically loaded and dropped from the cluster based on a set of rules. For more information on rules, see <a href="/docs/0.17.0/operations/rule-configuration.html">Rule Configuration</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="cleaning-up-segments"></a><a href="#cleaning-up-segments" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
 <p>Each run, the Druid coordinator compares the list of available database segments in the database with the current segments in the cluster. Segments that are not in the database but are still being served in the cluster are flagged and appended to a removal list. Segments that are overshadowed (their versions are too old and their data has been replaced by newer segments) are also dropped.</p>
 <h3><a class="anchor" aria-hidden="true" id="segment-availability"></a><a href="#segment-availability" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
@@ -97,10 +97,10 @@
 <h3><a class="anchor" aria-hidden="true" id="balancing-segment-load"></a><a href="#balancing-segment-load" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
 <p>To ensure an even distribution of segments across Historical processes in the cluster, the Coordinator process will find the total size of all segments being served by every Historical process each time the Coordinator runs. For every Historical process tier in the cluster, the Coordinator process will determine the Historical process with the highest utilization and the Historical process with the lowest utilization. The percent difference in utilization between the two processes is  [...]
 <h3><a class="anchor" aria-hidden="true" id="compacting-segments"></a><a href="#compacting-segments" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
-<p>Each run, the Druid Coordinator compacts small segments abutting each other. This is useful when you have a lot of small
-segments which may degrade query performance as well as increase disk space usage. See <a href="/docs/latest/operations/segment-optimization.html">Segment Size Optimization</a> for details.</p>
-<p>The Coordinator first finds the segments to compact together based on the <a href="#segment-search-policy">segment search policy</a>.
-Once some segments are found, it launches a <a href="/docs/latest/ingestion/tasks.html#compact">compaction task</a> to compact those segments.
+<p>Each run, the Druid Coordinator compacts segments by merging small segments or splitting a large one. This is useful when your segments are not optimized
+in terms of segment size which may degrade query performance. See <a href="/docs/0.17.0/operations/segment-optimization.html">Segment Size Optimization</a> for details.</p>
+<p>The Coordinator first finds the segments to compact based on the <a href="#segment-search-policy">segment search policy</a>.
+Once some segments are found, it issues a <a href="/docs/0.17.0/ingestion/tasks.html#compact">compaction task</a> to compact those segments.
 The maximum number of running compaction tasks is <code>min(sum of worker capacity * slotRatio, maxSlots)</code>.
 Note that even though <code>min(sum of worker capacity * slotRatio, maxSlots)</code> = 0, at least one compaction task is always submitted
 if the compaction is enabled for a dataSource.
@@ -108,29 +108,45 @@ See <a href="../operations/api-reference.html#compaction-configuration">Compacti
 <p>Compaction tasks might fail due to the following reasons.</p>
 <ul>
 <li>If the input segments of a compaction task are removed or overshadowed before it starts, that compaction task fails immediately.</li>
-<li>If a task of a higher priority acquires a lock for an interval overlapping with the interval of a compaction task, the compaction task fails.</li>
+<li>If a task of a higher priority acquires a <a href="../ingestion/tasks.html#locking">time chunk lock</a> for an interval overlapping with the interval of a compaction task, the compaction task fails.</li>
 </ul>
-<p>Once a compaction task fails, the Coordinator simply finds the segments for the interval of the failed task again, and launches a new compaction task in the next run.</p>
+<p>Once a compaction task fails, the Coordinator simply checks the segments in the interval of the failed task again, and issues another compaction task in the next run.</p>
 <h3><a class="anchor" aria-hidden="true" id="segment-search-policy"></a><a href="#segment-search-policy" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
-<h4><a class="anchor" aria-hidden="true" id="newest-segment-first-policy"></a><a href="#newest-segment-first-policy" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
-<p>At every coordinator run, this policy searches for segments to compact by iterating segments from the latest to the oldest.
-Once it finds the latest segment among all dataSources, it checks if the segment is <em>compactable</em> with other segments of the same dataSource which have the same or abutting intervals.
-Note that segments are compactable if their total size is smaller than or equal to the configured <code>inputSegmentSizeBytes</code>.</p>
-<p>Here are some details with an example. Let us assume we have two dataSources (<code>foo</code>, <code>bar</code>)
-and 5 segments (<code>foo_2017-10-01T00:00:00.000Z_2017-11-01T00:00:00.000Z_VERSION</code>, <code>foo_2017-11-01T00:00:00.000Z_2017-12-01T00:00:00.000Z_VERSION</code>, <code>bar_2017-08-01T00:00:00.000Z_2017-09-01T00:00:00.000Z_VERSION</code>, <code>bar_2017-09-01T00:00:00.000Z_2017-10-01T00:00:00.000Z_VERSION</code>, <code>bar_2017-10-01T00:00:00.000Z_2017-11-01T00:00:00.000Z_VERSION</code>).
-When each segment has the same size of 10 MB and <code>inputSegmentSizeBytes</code> is 20 MB, this policy first returns two segments (<code>foo_2017-10-01T00:00:00.000Z_2017-11-01T00:00:00.000Z_VERSION</code> and <code>foo_2017-11-01T00:00:00.000Z_2017-12-01T00:00:00.000Z_VERSION</code>) to compact together because
-<code>foo_2017-11-01T00:00:00.000Z_2017-12-01T00:00:00.000Z_VERSION</code> is the latest segment and <code>foo_2017-10-01T00:00:00.000Z_2017-11-01T00:00:00.000Z_VERSION</code> abuts to it.</p>
-<p>If the coordinator has enough task slots for compaction, this policy would continue searching for the next segments and return
-<code>bar_2017-10-01T00:00:00.000Z_2017-11-01T00:00:00.000Z_VERSION</code> and <code>bar_2017-09-01T00:00:00.000Z_2017-10-01T00:00:00.000Z_VERSION</code>.
-Note that <code>bar_2017-08-01T00:00:00.000Z_2017-09-01T00:00:00.000Z_VERSION</code> is not compacted together even though it abuts to <code>bar_2017-09-01T00:00:00.000Z_2017-10-01T00:00:00.000Z_VERSION</code>.
-This is because the total segment size to compact would be greater than <code>inputSegmentSizeBytes</code> if it's included.</p>
+<h4><a class="anchor" aria-hidden="true" id="recent-segment-first-policy"></a><a href="#recent-segment-first-policy" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
+<p>At every coordinator run, this policy looks up time chunks in order of newest-to-oldest and checks whether the segments in those time chunks
+need compaction or not.
+A set of segments need compaction if all conditions below are satisfied.</p>
+<ol>
+<li>Total size of segments in the time chunk is smaller than or equal to the configured <code>inputSegmentSizeBytes</code>.</li>
+<li>Segments have never been compacted yet or compaction spec has been updated since the last compaction, especially <code>maxRowsPerSegment</code>, <code>maxTotalRows</code>, and <code>indexSpec</code>.</li>
+</ol>
+<p>Here are some details with an example. Suppose we have two dataSources (<code>foo</code>, <code>bar</code>) as seen below:</p>
+<ul>
+<li><code>foo</code>
+<ul>
+<li><code>foo_2017-11-01T00:00:00.000Z_2017-12-01T00:00:00.000Z_VERSION</code></li>
+<li><code>foo_2017-11-01T00:00:00.000Z_2017-12-01T00:00:00.000Z_VERSION_1</code></li>
+<li><code>foo_2017-09-01T00:00:00.000Z_2017-10-01T00:00:00.000Z_VERSION</code></li>
+</ul></li>
+<li><code>bar</code>
+<ul>
+<li><code>bar_2017-10-01T00:00:00.000Z_2017-11-01T00:00:00.000Z_VERSION</code></li>
+<li><code>bar_2017-10-01T00:00:00.000Z_2017-11-01T00:00:00.000Z_VERSION_1</code></li>
+</ul></li>
+</ul>
+<p>Assuming that each segment is 10 MB and haven't been compacted yet, this policy first returns two segments of
+<code>foo_2017-11-01T00:00:00.000Z_2017-12-01T00:00:00.000Z_VERSION</code> and <code>foo_2017-11-01T00:00:00.000Z_2017-12-01T00:00:00.000Z_VERSION_1</code> to compact together because
+<code>2017-11-01T00:00:00.000Z/2017-12-01T00:00:00.000Z</code> is the most recent time chunk.</p>
+<p>If the coordinator has enough task slots for compaction, this policy will continue searching for the next segments and return
+<code>bar_2017-10-01T00:00:00.000Z_2017-11-01T00:00:00.000Z_VERSION</code> and <code>bar_2017-10-01T00:00:00.000Z_2017-11-01T00:00:00.000Z_VERSION_1</code>.
+Finally, <code>foo_2017-09-01T00:00:00.000Z_2017-10-01T00:00:00.000Z_VERSION</code> will be picked up even though there is only one segment in the time chunk of <code>2017-09-01T00:00:00.000Z/2017-10-01T00:00:00.000Z</code>.</p>
 <p>The search start point can be changed by setting <a href="../configuration/index.html#compaction-dynamic-configuration">skipOffsetFromLatest</a>.
-If this is set, this policy will ignore the segments falling into the interval of (the end time of the very latest segment - <code>skipOffsetFromLatest</code>).
+If this is set, this policy will ignore the segments falling into the time chunk of (the end time of the most recent segment - <code>skipOffsetFromLatest</code>).
 This is to avoid conflicts between compaction tasks and realtime tasks.
 Note that realtime tasks have a higher priority than compaction tasks by default. Realtime tasks will revoke the locks of compaction tasks if their intervals overlap, resulting in the termination of the compaction task.</p>
 <blockquote>
 <p>This policy currently cannot handle the situation when there are a lot of small segments which have the same interval,
-and their total size exceeds <a href="/docs/latest/configuration/index.html#compaction-dynamic-configuration">inputSegmentSizeBytes</a>.
+and their total size exceeds <a href="/docs/0.17.0/configuration/index.html#compaction-dynamic-configuration">inputSegmentSizeBytes</a>.
 If it finds such segments, it simply skips them.</p>
 </blockquote>
 <h3><a class="anchor" aria-hidden="true" id="the-coordinator-console"></a><a href="#the-coordinator-console" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 [...]
@@ -145,7 +161,7 @@ If it finds such segments, it simply skips them.</p>
 <p>No. If the Druid Coordinator is not started up, no new segments will be loaded in the cluster and outdated segments will not be dropped. However, the Coordinator process can be started up at any time, and after a configurable delay, will start running Coordinator tasks.</p>
 <p>This also means that if you have a working cluster and all of your Coordinators die, the cluster will continue to function, it just won’t experience any changes to its data topology.</p></li>
 </ol>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/design/broker.html"><span class="arrow-prev">← </span><span>Broker</span></a><a class="docs-next button" href="/docs/latest/design/historical.html"><span>Historical Process</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"><div class="text-center"><p><a href="/techno [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/design/broker.html"><span class="arrow-prev">← </span><span>Broker</span></a><a class="docs-next button" href="/docs/0.17.0/design/historical.html"><span>Historical Process</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"><div class="text-center"><p><a href="/techno [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -162,6 +178,6 @@ If it finds such segments, it simply skips them.</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.16.1-incubating"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.17.0/design/design.html b/docs/0.17.0/design/design.html
new file mode 100644
index 0000000..eed33a4
--- /dev/null
+++ b/docs/0.17.0/design/design.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="index.html">
+<meta http-equiv="refresh" content="0; url=index.html">
+<h1>Redirecting...</h1>
+<a href="index.html">Click here if you are not redirected.</a>
+<script>location="index.html"</script>
diff --git a/docs/0.17.0/design/extensions-contrib/dropwizard.html b/docs/0.17.0/design/extensions-contrib/dropwizard.html
new file mode 100644
index 0000000..00cb5df
--- /dev/null
+++ b/docs/0.17.0/design/extensions-contrib/dropwizard.html
@@ -0,0 +1,636 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Dropwizard metrics emitter · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/design/extensions-contrib/dropwizard.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:vers [...]
+              window.dataLayer = window.dataLayer || [];
+              function gtag(){dataLayer.push(arguments); }
+              gtag('js', new Date());
+              gtag('config', 'UA-131010415-1');
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<h1><a class="anchor" aria-hidden="true" id="dropwizard-emitter"></a><a href="#dropwizard-emitter" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22- [...]
+<p>To use this extension, make sure to <a href="/docs/0.17.0/development/extensions.html#loading-extensions">include</a> <code>dropwizard-emitter</code> extension.</p>
+<h2><a class="anchor" aria-hidden="true" id="introduction"></a><a href="#introduction" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<p>This extension integrates <a href="http://metrics.dropwizard.io/3.1.0/getting-started/#">Dropwizard</a> metrics library with druid so that dropwizard users can easily absorb druid into their monitoring ecosystem.
+It accumulates druid metrics as dropwizard metrics, and emits them to various sinks via dropwizard supported reporters.
+Currently supported dropwizard metrics types counter, gauge, meter, timer and histogram.
+These metrics can be emitted using either Console or JMX reporter.</p>
+<p>To use this emitter, set</p>
+<pre><code class="hljs"><span class="hljs-attr">druid.emitter</span>=dropwizard
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="configuration"></a><a href="#configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>All the configuration parameters for Dropwizard emitter are under <code>druid.emitter.dropwizard</code>.</p>
+<table>
+<thead>
+<tr><th>property</th><th>description</th><th>required?</th><th>default</th></tr>
+</thead>
+<tbody>
+<tr><td><code>druid.emitter.dropwizard.reporters</code></td><td>List of dropwizard reporters to be used. Here is a list of <a href="#supported-dropwizard-reporters">Supported Reporters</a></td><td>yes</td><td>none</td></tr>
+<tr><td><code>druid.emitter.dropwizard.prefix</code></td><td>Optional prefix to be used for metrics name</td><td>no</td><td>none</td></tr>
+<tr><td><code>druid.emitter.dropwizard.includeHost</code></td><td>Flag to include the host and port as part of the metric name.</td><td>no</td><td>yes</td></tr>
+<tr><td><code>druid.emitter.dropwizard.dimensionMapPath</code></td><td>Path to JSON file defining the dropwizard metric type, and desired dimensions for every Druid metric</td><td>no</td><td>Default mapping provided. See below.</td></tr>
+<tr><td><code>druid.emitter.dropwizard.alertEmitters</code></td><td>List of emitters where alerts will be forwarded to.</td><td>no</td><td>empty list (no forwarding)</td></tr>
+<tr><td><code>druid.emitter.dropwizard.maxMetricsRegistrySize</code></td><td>Maximum size of metrics registry to be cached at any time.</td><td>no</td><td>100 Mb</td></tr>
+</tbody>
+</table>
+<h3><a class="anchor" aria-hidden="true" id="druid-to-dropwizard-event-conversion"></a><a href="#druid-to-dropwizard-event-conversion" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 [...]
+<p>Each metric emitted using Dropwizard must specify a type, one of <code>[timer, counter, guage, meter, histogram]</code>. Dropwizard Emitter expects this mapping to
+be provided as a JSON file.  Additionally, this mapping specifies which dimensions should be included for each metric.
+If the user does not specify their own JSON file, a <a href="#default-metrics-mapping">default mapping</a> is used.
+All metrics are expected to be mapped. Metrics which are not mapped will be ignored.
+Dropwizard metric path is organized using the following schema:</p>
+<p><code>&lt;druid metric name&gt; : { &quot;dimensions&quot; : &lt;dimension list&gt;, &quot;type&quot; : &lt;Dropwizard metric type&gt;, &quot;timeUnit&quot; : &lt;For timers, timeunit in which metric is emitted&gt;}</code></p>
+<p>e.g.</p>
+<pre><code class="hljs css language-json">"query/time" : { "dimensions" : ["dataSource", "type"], "type" : "timer", "timeUnit": "MILLISECONDS"},
+"segment/scan/pending" : { "dimensions" : [], "type" : "gauge"}
+</code></pre>
+<p>For most use-cases, the default mapping is sufficient.</p>
+<h3><a class="anchor" aria-hidden="true" id="supported-dropwizard-reporters"></a><a href="#supported-dropwizard-reporters" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 1 [...]
+<h4><a class="anchor" aria-hidden="true" id="jmx-reporter"></a><a href="#jmx-reporter" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<p>Used to report druid metrics via JMX.</p>
+<pre><code class="hljs">
+druid<span class="hljs-selector-class">.emitter</span><span class="hljs-selector-class">.dropwizard</span><span class="hljs-selector-class">.reporters</span>=[{<span class="hljs-string">"type"</span>:<span class="hljs-string">"jmx"</span>}]
+
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="console-reporter"></a><a href="#console-reporter" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>Used to print Druid Metrics to console logs.</p>
+<pre><code class="hljs">
+druid.emitter.dropwizard.reporters=[{<span class="hljs-string">"type"</span>:<span class="hljs-string">"console"</span>,<span class="hljs-string">"emitIntervalInSecs"</span>:<span class="hljs-number">30</span>}<span class="hljs-string">"}]</span>
+
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="default-metrics-mapping"></a><a href="#default-metrics-mapping" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 [...]
+<p>Latest default metrics mapping can be found [here] (<a href="https://github.com/apache/druid/tree/master/extensions-contrib/dropwizard/src/main/resources/defaultMetricDimensions.json">https://github.com/apache/druid/tree/master/extensions-contrib/dropwizard/src/main/resources/defaultMetricDimensions.json</a>)</p>
+<pre><code class="hljs css language-json">{
+  <span class="hljs-attr">"query/time"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"dataSource"</span>,
+      <span class="hljs-string">"type"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"timer"</span>,
+    <span class="hljs-attr">"timeUnit"</span>: <span class="hljs-string">"MILLISECONDS"</span>
+  },
+  <span class="hljs-attr">"query/node/time"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"server"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"timer"</span>,
+    <span class="hljs-attr">"timeUnit"</span>: <span class="hljs-string">"MILLISECONDS"</span>
+  },
+  <span class="hljs-attr">"query/node/ttfb"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"server"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"timer"</span>,
+    <span class="hljs-attr">"timeUnit"</span>: <span class="hljs-string">"MILLISECONDS"</span>
+  },
+  <span class="hljs-attr">"query/node/backpressure"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"server"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"timer"</span>,
+    <span class="hljs-attr">"timeUnit"</span>: <span class="hljs-string">"MILLISECONDS"</span>
+  },
+  <span class="hljs-attr">"query/intervalChunk/time"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"timer"</span>,
+    <span class="hljs-attr">"timeUnit"</span>: <span class="hljs-string">"MILLISECONDS"</span>
+  },
+  <span class="hljs-attr">"query/segment/time"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"timer"</span>,
+    <span class="hljs-attr">"timeUnit"</span>: <span class="hljs-string">"MILLISECONDS"</span>
+  },
+  <span class="hljs-attr">"query/wait/time"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"timer"</span>,
+    <span class="hljs-attr">"timeUnit"</span>: <span class="hljs-string">"MILLISECONDS"</span>
+  },
+  <span class="hljs-attr">"segment/scan/pending"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"query/segmentAndCache/time"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"timer"</span>,
+    <span class="hljs-attr">"timeUnit"</span>: <span class="hljs-string">"MILLISECONDS"</span>
+  },
+  <span class="hljs-attr">"query/cpu/time"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"dataSource"</span>,
+      <span class="hljs-string">"type"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"timer"</span>,
+    <span class="hljs-attr">"timeUnit"</span>: <span class="hljs-string">"NANOSECONDS"</span>
+  },
+  <span class="hljs-attr">"query/cache/delta/numEntries"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"query/cache/delta/sizeBytes"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"query/cache/delta/hits"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"query/cache/delta/misses"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"query/cache/delta/evictions"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"query/cache/delta/hitRate"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"query/cache/delta/averageBytes"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"query/cache/delta/timeouts"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"query/cache/delta/errors"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"query/cache/total/numEntries"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"query/cache/total/sizeBytes"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"query/cache/total/hits"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"query/cache/total/misses"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"query/cache/total/evictions"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"query/cache/total/hitRate"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"query/cache/total/averageBytes"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"query/cache/total/timeouts"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"query/cache/total/errors"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"ingest/events/thrownAway"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"dataSource"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"ingest/events/unparseable"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"dataSource"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"ingest/events/duplicate"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"dataSource"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"ingest/events/processed"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"dataSource"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"ingest/rows/output"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"dataSource"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"ingest/persist/counter"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"dataSource"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"ingest/persist/time"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"dataSource"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"timer"</span>,
+    <span class="hljs-attr">"timeUnit"</span>: <span class="hljs-string">"MILLISECONDS"</span>
+  },
+  <span class="hljs-attr">"ingest/persist/cpu"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"dataSource"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"timer"</span>,
+    <span class="hljs-attr">"timeUnit"</span>: <span class="hljs-string">"NANOSECONDS"</span>
+  },
+  <span class="hljs-attr">"ingest/persist/backPressure"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"dataSource"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"ingest/persist/failed"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"dataSource"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"ingest/handoff/failed"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"dataSource"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"ingest/merge/time"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"dataSource"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"timer"</span>,
+    <span class="hljs-attr">"timeUnit"</span>: <span class="hljs-string">"MILLISECONDS"</span>
+  },
+  <span class="hljs-attr">"ingest/merge/cpu"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"dataSource"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"timer"</span>,
+    <span class="hljs-attr">"timeUnit"</span>: <span class="hljs-string">"NANOSECONDS"</span>
+  },
+  <span class="hljs-attr">"task/run/time"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"dataSource"</span>,
+      <span class="hljs-string">"taskType"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"timer"</span>,
+    <span class="hljs-attr">"timeUnit"</span>: <span class="hljs-string">"MILLISECONDS"</span>
+  },
+  <span class="hljs-attr">"segment/added/bytes"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"dataSource"</span>,
+      <span class="hljs-string">"taskType"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"segment/moved/bytes"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"dataSource"</span>,
+      <span class="hljs-string">"taskType"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"segment/nuked/bytes"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"dataSource"</span>,
+      <span class="hljs-string">"taskType"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"segment/assigned/counter"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"tier"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"segment/moved/counter"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"tier"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"segment/dropped/counter"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"tier"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"segment/deleted/counter"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"tier"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"segment/unneeded/counter"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"tier"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"segment/cost/raw"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"tier"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"segment/cost/normalization"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"tier"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"segment/cost/normalized"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"tier"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"segment/loadQueue/size"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"server"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"segment/loadQueue/failed"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"server"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"segment/loadQueue/counter"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"server"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"segment/dropQueue/counter"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"server"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"segment/size"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"dataSource"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"segment/overShadowed/counter"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"segment/max"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"segment/used"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"dataSource"</span>,
+      <span class="hljs-string">"tier"</span>,
+      <span class="hljs-string">"priority"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"segment/usedPercent"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"dataSource"</span>,
+      <span class="hljs-string">"tier"</span>,
+      <span class="hljs-string">"priority"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"jvm/pool/committed"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"poolKind"</span>,
+      <span class="hljs-string">"poolName"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"jvm/pool/init"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"poolKind"</span>,
+      <span class="hljs-string">"poolName"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"jvm/pool/max"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"poolKind"</span>,
+      <span class="hljs-string">"poolName"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"jvm/pool/used"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"poolKind"</span>,
+      <span class="hljs-string">"poolName"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"jvm/bufferpool/counter"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"bufferPoolName"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"jvm/bufferpool/used"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"bufferPoolName"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"jvm/bufferpool/capacity"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"bufferPoolName"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"jvm/mem/init"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"memKind"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"jvm/mem/max"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"memKind"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"jvm/mem/used"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"memKind"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"jvm/mem/committed"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"memKind"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"jvm/gc/counter"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"gcName"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"jvm/gc/cpu"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"gcName"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"timer"</span>,
+    <span class="hljs-attr">"timeUnit"</span>: <span class="hljs-string">"NANOSECONDS"</span>
+  },
+  <span class="hljs-attr">"ingest/events/buffered"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"serviceName, bufferCapacity"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"sys/swap/free"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"sys/swap/max"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"sys/swap/pageIn"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"sys/swap/pageOut"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"sys/disk/write/counter"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"fsDevName"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"sys/disk/read/counter"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"fsDevName"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"sys/disk/write/size"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"fsDevName"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"sys/disk/read/size"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"fsDevName"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"sys/net/write/size"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"sys/net/read/size"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"counter"</span>
+  },
+  <span class="hljs-attr">"sys/fs/used"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"fsDevName"</span>,
+      <span class="hljs-string">"fsDirName"</span>,
+      <span class="hljs-string">"fsTypeName"</span>,
+      <span class="hljs-string">"fsSysTypeName"</span>,
+      <span class="hljs-string">"fsOptions"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"sys/fs/max"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"fsDevName"</span>,
+      <span class="hljs-string">"fsDirName"</span>,
+      <span class="hljs-string">"fsTypeName"</span>,
+      <span class="hljs-string">"fsSysTypeName"</span>,
+      <span class="hljs-string">"fsOptions"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"sys/mem/used"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"sys/mem/max"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"sys/storage/used"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"fsDirName"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"sys/cpu"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"cpuName"</span>,
+      <span class="hljs-string">"cpuTime"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"coordinator-segment/counter"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"dataSource"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  },
+  <span class="hljs-attr">"historical-segment/counter"</span>: {
+    <span class="hljs-attr">"dimensions"</span>: [
+      <span class="hljs-string">"dataSource"</span>,
+      <span class="hljs-string">"tier"</span>,
+      <span class="hljs-string">"priority"</span>
+    ],
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"gauge"</span>
+  }
+}
+</code></pre>
+</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#introduction">Introduction</a></li><li><a href="#configuration">Configuration</a><ul class="toc-headings"><li><a href="#druid-to-dropwizard-event-conversion">Druid to Dropwizard Event Conversion</a></li><li><a href="#supported-dropwizard-reporters">Supported Dropwizard reporters</a></li><li><a href="#default-metrics-mapping">Default Metrics Mapping</a></ [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                
+                apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
+                indexName: 'apache_druid',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/docs/0.17.0/design/historical.html b/docs/0.17.0/design/historical.html
new file mode 100644
index 0000000..5a08c11
--- /dev/null
+++ b/docs/0.17.0/design/historical.html
@@ -0,0 +1,116 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Historical Process · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/design/historical.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.17.0" /><me [...]
+              window.dataLayer = window.dataLayer || [];
+              function gtag(){dataLayer.push(arguments); }
+              gtag('js', new Date());
+              gtag('config', 'UA-131010415-1');
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/design/historical.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Historical Process</h1></header><article><div><span><!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<h3><a class="anchor" aria-hidden="true" id="configuration"></a><a href="#configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>For Apache Druid Historical Process Configuration, see <a href="../configuration/index.html#historical">Historical Configuration</a>.</p>
+<h3><a class="anchor" aria-hidden="true" id="http-endpoints"></a><a href="#http-endpoints" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
+<p>For a list of API endpoints supported by the Historical, please see the <a href="../operations/api-reference.html#historical">API reference</a>.</p>
+<h3><a class="anchor" aria-hidden="true" id="running"></a><a href="#running" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
+<pre><code class="hljs">org.apache.druid.cli.Main<span class="hljs-built_in"> server </span>historical
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="loading-and-serving-segments"></a><a href="#loading-and-serving-segments" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 [...]
+<p>Each Historical process maintains a constant connection to Zookeeper and watches a configurable set of Zookeeper paths for new segment information. Historical processes do not communicate directly with each other or with the Coordinator processes but instead rely on Zookeeper for coordination.</p>
+<p>The <a href="/docs/0.17.0/design/coordinator.html">Coordinator</a> process is responsible for assigning new segments to Historical processes. Assignment is done by creating an ephemeral Zookeeper entry under a load queue path associated with a Historical process. For more information on how the Coordinator assigns segments to Historical processes, please see <a href="/docs/0.17.0/design/coordinator.html">Coordinator</a>.</p>
+<p>When a Historical process notices a new load queue entry in its load queue path, it will first check a local disk directory (cache) for the information about segment. If no information about the segment exists in the cache, the Historical process will download metadata about the new segment to serve from Zookeeper. This metadata includes specifications about where the segment is located in deep storage and about how to decompress and process the segment. For more information about seg [...]
+<h3><a class="anchor" aria-hidden="true" id="loading-and-serving-segments-from-cache"></a><a href="#loading-and-serving-segments-from-cache" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2  [...]
+<p>Recall that when a Historical process notices a new segment entry in its load queue path, the Historical process first checks a configurable cache directory on its local disk to see if the segment had been previously downloaded. If a local cache entry already exists, the Historical process will directly read the segment binary files from disk and load the segment.</p>
+<p>The segment cache is also leveraged when a Historical process is first started. On startup, a Historical process will search through its cache directory and immediately load and serve all segments that are found. This feature allows Historical processes to be queried as soon they come online.</p>
+<h3><a class="anchor" aria-hidden="true" id="querying-segments"></a><a href="#querying-segments" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
+<p>Please see <a href="/docs/0.17.0/querying/querying.html">Querying</a> for more information on querying Historical processes.</p>
+<p>A Historical can be configured to log and report metrics for every query it services.</p>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/design/coordinator.html"><span class="arrow-prev">← </span><span>Coordinator Process</span></a><a class="docs-next button" href="/docs/0.17.0/design/indexer.html"><span>Indexer Process</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"><div class="text-center"><p><a h [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                
+                apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
+                indexName: 'apache_druid',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/design/index.html b/docs/0.17.0/design/index.html
similarity index 51%
copy from docs/latest/design/index.html
copy to docs/0.17.0/design/index.html
index db2806f..78d0568 100644
--- a/docs/latest/design/index.html
+++ b/docs/0.17.0/design/index.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Introduction to Apache Druid · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/design/index.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.16.1-i [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Introduction to Apache Druid · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/design/index.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.17.0"  [...]
               window.dataLayer = window.dataLayer || [];
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -59,7 +59,7 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-druid/edit/master/docs/design/index.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Introduction to Apache Druid</h1></header><article><div><span><!--
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/design/index.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Introduction to Apache Druid</h1></header><article><div><span><!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
   ~ or more contributor license agreements.  See the NOTICE file
   ~ distributed with this work for additional information
@@ -78,7 +78,7 @@
   ~ under the License.
   -->
 <h2><a class="anchor" aria-hidden="true" id="what-is-druid"></a><a href="#what-is-druid" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
-<p>Apache Druid (incubating) is a real-time analytics database designed for fast slice-and-dice analytics
+<p>Apache Druid is a real-time analytics database designed for fast slice-and-dice analytics
 (&quot;<a href="http://en.wikipedia.org/wiki/Online_analytical_processing">OLAP</a>&quot; queries) on large data sets. Druid is most often
 used as a database for powering use cases where real-time ingest, fast query performance, and high uptime are important.
 As such, Druid is commonly used for powering GUIs of analytical applications, or as a backend for highly-concurrent APIs
@@ -150,7 +150,7 @@ background batch jobs).</li>
 <li>You want to do &quot;big&quot; joins (joining one big fact table to another big fact table) and you are okay with these queries
 taking a long time to complete.</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-next button" href="/docs/latest/tutorials/index.html"><span>Quickstart</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#what-is-druid">What is Druid?</a></li><li><a href="#when-should-i-use-druid">When should I use Druid?</a></li></ul></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"><div class="text-center" [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-next button" href="/docs/0.17.0/tutorials/index.html"><span>Quickstart</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#what-is-druid">What is Druid?</a></li><li><a href="#when-should-i-use-druid">When should I use Druid?</a></li></ul></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"><div class="text-center" [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -167,6 +167,6 @@ taking a long time to complete.</li>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.16.1-incubating"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/design/indexer.html b/docs/0.17.0/design/indexer.html
similarity index 53%
copy from docs/latest/design/indexer.html
copy to docs/0.17.0/design/indexer.html
index 5a1a1a3..72941b3 100644
--- a/docs/latest/design/indexer.html
+++ b/docs/0.17.0/design/indexer.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Indexer Process · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/design/indexer.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.16.1-incubating"  [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Indexer Process · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/design/indexer.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.17.0" /><meta pro [...]
               window.dataLayer = window.dataLayer || [];
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -59,7 +59,7 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-druid/edit/master/docs/design/indexer.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Indexer Process</h1></header><article><div><span><!--
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/design/indexer.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Indexer Process</h1></header><article><div><span><!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
   ~ or more contributor license agreements.  See the NOTICE file
   ~ distributed with this work for additional information
@@ -81,10 +81,10 @@
 <p>The Indexer is an optional and <a href="../development/experimental.html">experimental</a> feature.
 Its memory management system is still under development and will be significantly enhanced in later releases.</p>
 </blockquote>
-<p>The Apache Druid (incubating) Indexer process is an alternative to the MiddleManager + Peon task execution system. Instead of forking a separate JVM process per-task, the Indexer runs tasks as separate threads within a single JVM process.</p>
+<p>The Apache Druid Indexer process is an alternative to the MiddleManager + Peon task execution system. Instead of forking a separate JVM process per-task, the Indexer runs tasks as separate threads within a single JVM process.</p>
 <p>The Indexer is designed to be easier to configure and deploy compared to the MiddleManager + Peon system and to better enable resource sharing across tasks.</p>
 <h3><a class="anchor" aria-hidden="true" id="configuration"></a><a href="#configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
-<p>For Apache Druid (incubating) Indexer Process Configuration, see <a href="../configuration/index.html#indexer">Indexer Configuration</a>.</p>
+<p>For Apache Druid Indexer Process Configuration, see <a href="../configuration/index.html#indexer">Indexer Configuration</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="http-endpoints"></a><a href="#http-endpoints" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
 <p>The Indexer process shares the same HTTP endpoints as the <a href="../operations/api-reference.html#middlemanager">MiddleManager</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="running"></a><a href="#running" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
@@ -114,8 +114,8 @@ Its memory management system is still under development and will be significantl
 <h3><a class="anchor" aria-hidden="true" id="current-limitations"></a><a href="#current-limitations" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
 <p>Separate task logs are not currently supported when using the Indexer; all task log messages will instead be logged in the Indexer process log.</p>
 <p>The Indexer currently imposes an identical memory limit on each task. In later releases, the per-task memory limit will be removed and only the global limit will apply. The limit on concurrent merges will also be removed.</p>
-<p>In later releases, per-task memory usage will be dynamically managed. Please see <a href="https://github.com/apache/incubator-druid/issues/7900">https://github.com/apache/incubator-druid/issues/7900</a> for details on future enhancements to the Indexer.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/design/historical.html"><span class="arrow-prev">← </span><span>Historical Process</span></a><a class="docs-next button" href="/docs/latest/design/indexing-service.html"><span>Indexing Service</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"><div class="text-center" [...]
+<p>In later releases, per-task memory usage will be dynamically managed. Please see <a href="https://github.com/apache/druid/issues/7900">https://github.com/apache/druid/issues/7900</a> for details on future enhancements to the Indexer.</p>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/design/historical.html"><span class="arrow-prev">← </span><span>Historical Process</span></a><a class="docs-next button" href="/docs/0.17.0/design/indexing-service.html"><span>Indexing Service</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"><div class="text-center" [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -132,6 +132,6 @@ Its memory management system is still under development and will be significantl
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.16.1-incubating"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.17.0/design/indexing-service.html b/docs/0.17.0/design/indexing-service.html
new file mode 100644
index 0000000..da95c90
--- /dev/null
+++ b/docs/0.17.0/design/indexing-service.html
@@ -0,0 +1,113 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Indexing Service · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/design/indexing-service.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.17.0" / [...]
+              window.dataLayer = window.dataLayer || [];
+              function gtag(){dataLayer.push(arguments); }
+              gtag('js', new Date());
+              gtag('config', 'UA-131010415-1');
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/design/indexing-service.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Indexing Service</h1></header><article><div><span><!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<p>The Apache Druid indexing service is a highly-available, distributed service that runs indexing related tasks.</p>
+<p>Indexing <a href="/docs/0.17.0/ingestion/tasks.html">tasks</a> create (and sometimes destroy) Druid <a href="/docs/0.17.0/design/segments.html">segments</a>. The indexing service has a master/slave like architecture.</p>
+<p>The indexing service is composed of three main components: a <a href="/docs/0.17.0/design/peons.html">Peon</a> component that can run a single task, a <a href="/docs/0.17.0/design/middlemanager.html">Middle Manager</a> component that manages Peons, and an <a href="/docs/0.17.0/design/overlord.html">Overlord</a> component that manages task distribution to MiddleManagers.
+Overlords and MiddleManagers may run on the same process or across multiple processes while MiddleManagers and Peons always run on the same process.</p>
+<p>Tasks are managed using API endpoints on the Overlord service. Please see <a href="../operations/api-reference.html#tasks">Overlord Task API</a> for more information.</p>
+<p><img src="../assets/indexing_service.png" alt="Indexing Service" title="Indexing Service"></p>
+<h2><a class="anchor" aria-hidden="true" id="overlord"></a><a href="#overlord" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
+<p>See <a href="/docs/0.17.0/design/overlord.html">Overlord</a>.</p>
+<h2><a class="anchor" aria-hidden="true" id="middle-managers"></a><a href="#middle-managers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
+<p>See <a href="/docs/0.17.0/design/middlemanager.html">Middle Manager</a>.</p>
+<h2><a class="anchor" aria-hidden="true" id="peons"></a><a href="#peons" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p>See <a href="/docs/0.17.0/design/peons.html">Peon</a>.</p>
+<h2><a class="anchor" aria-hidden="true" id="tasks"></a><a href="#tasks" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p>See <a href="/docs/0.17.0/ingestion/tasks.html">Tasks</a>.</p>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/design/indexer.html"><span class="arrow-prev">← </span><span>Indexer Process</span></a><a class="docs-next button" href="/docs/0.17.0/design/middlemanager.html"><span class="function-name-prevnext">MiddleManager Process</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#overlord">Overlord</a></li><li><a href="#midd [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                
+                apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
+                indexName: 'apache_druid',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/docs/0.17.0/design/middlemanager.html b/docs/0.17.0/design/middlemanager.html
new file mode 100644
index 0000000..7794ed7
--- /dev/null
+++ b/docs/0.17.0/design/middlemanager.html
@@ -0,0 +1,109 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>MiddleManager Process · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/design/middlemanager.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.17.0" [...]
+              window.dataLayer = window.dataLayer || [];
+              function gtag(){dataLayer.push(arguments); }
+              gtag('js', new Date());
+              gtag('config', 'UA-131010415-1');
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/design/middlemanager.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">MiddleManager Process</h1></header><article><div><span><!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<h3><a class="anchor" aria-hidden="true" id="configuration"></a><a href="#configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>For Apache Druid MiddleManager Process Configuration, see <a href="../configuration/index.html#middlemanager-and-peons">Indexing Service Configuration</a>.</p>
+<h3><a class="anchor" aria-hidden="true" id="http-endpoints"></a><a href="#http-endpoints" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
+<p>For a list of API endpoints supported by the MiddleManager, please see the <a href="../operations/api-reference.html#middlemanager">API reference</a>.</p>
+<h3><a class="anchor" aria-hidden="true" id="overview"></a><a href="#overview" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
+<p>The MiddleManager process is a worker process that executes submitted tasks. Middle Managers forward tasks to Peons that run in separate JVMs.
+The reason we have separate JVMs for tasks is for resource and log isolation. Each <a href="/docs/0.17.0/design/peons.html">Peon</a> is capable of running only one task at a time, however, a MiddleManager may have multiple Peons.</p>
+<h3><a class="anchor" aria-hidden="true" id="running"></a><a href="#running" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
+<pre><code class="hljs">org.apache.druid.cli.Main<span class="hljs-built_in"> server </span>middleManager
+</code></pre>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/design/indexing-service.html"><span class="arrow-prev">← </span><span>Indexing Service</span></a><a class="docs-next button" href="/docs/0.17.0/design/overlord.html"><span>Overlord Process</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"><div class="text-center"><p> [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                
+                apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
+                indexName: 'apache_druid',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/docs/0.17.0/design/overlord.html b/docs/0.17.0/design/overlord.html
new file mode 100644
index 0000000..ea6d3af
--- /dev/null
+++ b/docs/0.17.0/design/overlord.html
@@ -0,0 +1,121 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Overlord Process · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/design/overlord.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.17.0" /><meta p [...]
+              window.dataLayer = window.dataLayer || [];
+              function gtag(){dataLayer.push(arguments); }
+              gtag('js', new Date());
+              gtag('config', 'UA-131010415-1');
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/design/overlord.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Overlord Process</h1></header><article><div><span><!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<h3><a class="anchor" aria-hidden="true" id="configuration"></a><a href="#configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>For Apache Druid Overlord Process Configuration, see <a href="../configuration/index.html#overlord">Overlord Configuration</a>.</p>
+<h3><a class="anchor" aria-hidden="true" id="http-endpoints"></a><a href="#http-endpoints" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
+<p>For a list of API endpoints supported by the Overlord, please see the <a href="../operations/api-reference.html#overlord">API reference</a>.</p>
+<h3><a class="anchor" aria-hidden="true" id="overview"></a><a href="#overview" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
+<p>The Overlord process is responsible for accepting tasks, coordinating task distribution, creating locks around tasks, and returning statuses to callers. Overlord can be configured to run in one of two modes - local or remote (local being default).
+In local mode Overlord is also responsible for creating Peons for executing tasks. When running the Overlord in local mode, all MiddleManager and Peon configurations must be provided as well.
+Local mode is typically used for simple workflows.  In remote mode, the Overlord and MiddleManager are run in separate processes and you can run each on a different server.
+This mode is recommended if you intend to use the indexing service as the single endpoint for all Druid indexing.</p>
+<h3><a class="anchor" aria-hidden="true" id="overlord-console"></a><a href="#overlord-console" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>The Overlord provides a UI for managing tasks and workers. For more details, please see <a href="../operations/management-uis.html#overlord-console">overlord console</a>.</p>
+<h3><a class="anchor" aria-hidden="true" id="blacklisted-workers"></a><a href="#blacklisted-workers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
+<p>If a MiddleManager has task failures above a threshold, the Overlord will blacklist these MiddleManagers. No more than 20% of the MiddleManagers can be blacklisted. Blacklisted MiddleManagers will be periodically whitelisted.</p>
+<p>The following variables can be used to set the threshold and blacklist timeouts.</p>
+<pre><code class="hljs">druid<span class="hljs-selector-class">.indexer</span><span class="hljs-selector-class">.runner</span><span class="hljs-selector-class">.maxRetriesBeforeBlacklist</span>
+druid<span class="hljs-selector-class">.indexer</span><span class="hljs-selector-class">.runner</span><span class="hljs-selector-class">.workerBlackListBackoffTime</span>
+druid<span class="hljs-selector-class">.indexer</span><span class="hljs-selector-class">.runner</span><span class="hljs-selector-class">.workerBlackListCleanupPeriod</span>
+druid<span class="hljs-selector-class">.indexer</span><span class="hljs-selector-class">.runner</span><span class="hljs-selector-class">.maxPercentageBlacklistWorkers</span>
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="autoscaling"></a><a href="#autoscaling" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<p>The Autoscaling mechanisms currently in place are tightly coupled with our deployment infrastructure but the framework should be in place for other implementations. We are highly open to new implementations or extensions of the existing mechanisms. In our own deployments, MiddleManager processes are Amazon AWS EC2 nodes and they are provisioned to register themselves in a <a href="https://github.com/ning/galaxy">galaxy</a> environment.</p>
+<p>If autoscaling is enabled, new MiddleManagers may be added when a task has been in pending state for too long. MiddleManagers may be terminated if they have not run any tasks for a period of time.</p>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/design/middlemanager.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">MiddleManager Process</span></a><a class="docs-next button" href="/docs/0.17.0/design/router.html"><span>Router Process</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container" [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                
+                apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
+                indexName: 'apache_druid',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/docs/0.17.0/design/peons.html b/docs/0.17.0/design/peons.html
new file mode 100644
index 0000000..00ed915
--- /dev/null
+++ b/docs/0.17.0/design/peons.html
@@ -0,0 +1,111 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Peons · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/design/peons.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.17.0" /><meta property="og:ti [...]
+              window.dataLayer = window.dataLayer || [];
+              function gtag(){dataLayer.push(arguments); }
+              gtag('js', new Date());
+              gtag('config', 'UA-131010415-1');
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/design/peons.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Peons</h1></header><article><div><span><!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<h3><a class="anchor" aria-hidden="true" id="configuration"></a><a href="#configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>For Apache Druid Peon Configuration, see <a href="../configuration/index.html#peon-query-configuration">Peon Query Configuration</a> and <a href="../configuration/index.html#additional-peon-configuration">Additional Peon Configuration</a>.</p>
+<h3><a class="anchor" aria-hidden="true" id="http-endpoints"></a><a href="#http-endpoints" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
+<p>For a list of API endpoints supported by the Peon, please see the <a href="../operations/api-reference.html#peon">Peon API reference</a>.</p>
+<p>Peons run a single task in a single JVM. MiddleManager is responsible for creating Peons for running tasks.
+Peons should rarely (if ever for testing purposes) be run on their own.</p>
+<h3><a class="anchor" aria-hidden="true" id="running"></a><a href="#running" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
+<p>The Peon should very rarely ever be run independent of the MiddleManager unless for development purposes.</p>
+<pre><code class="hljs">org<span class="hljs-selector-class">.apache</span><span class="hljs-selector-class">.druid</span><span class="hljs-selector-class">.cli</span><span class="hljs-selector-class">.Main</span> internal peon &lt;task_file&gt; &lt;status_file&gt;
+</code></pre>
+<p>The task file contains the task JSON object.
+The status file indicates where the task status will be output.</p>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/design/router.html"><span class="arrow-prev">← </span><span>Router Process</span></a><a class="docs-next button" href="/docs/0.17.0/development/extensions-core/approximate-histograms.html"><span>Approximate Histogram aggregators</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class= [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                
+                apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
+                indexName: 'apache_druid',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/docs/0.17.0/design/plumber.html b/docs/0.17.0/design/plumber.html
new file mode 100644
index 0000000..2f57fca
--- /dev/null
+++ b/docs/0.17.0/design/plumber.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../ingestion/standalone-realtime.html">
+<meta http-equiv="refresh" content="0; url=../ingestion/standalone-realtime.html">
+<h1>Redirecting...</h1>
+<a href="../ingestion/standalone-realtime.html">Click here if you are not redirected.</a>
+<script>location="../ingestion/standalone-realtime.html"</script>
diff --git a/docs/latest/design/processes.html b/docs/0.17.0/design/processes.html
similarity index 60%
copy from docs/latest/design/processes.html
copy to docs/0.17.0/design/processes.html
index 4a96a8e..a8ea41b 100644
--- a/docs/latest/design/processes.html
+++ b/docs/0.17.0/design/processes.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Processes and servers · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/design/processes.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.16.1-incu [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Processes and servers · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/design/processes.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.17.0" />< [...]
               window.dataLayer = window.dataLayer || [];
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -59,7 +59,7 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-druid/edit/master/docs/design/processes.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Processes and servers</h1></header><article><div><span><!--
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/design/processes.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Processes and servers</h1></header><article><div><span><!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
   ~ or more contributor license agreements.  See the NOTICE file
   ~ distributed with this work for additional information
@@ -80,13 +80,13 @@
 <h2><a class="anchor" aria-hidden="true" id="process-types"></a><a href="#process-types" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>Druid has several process types:</p>
 <ul>
-<li><a href="/docs/latest/design/coordinator.html">Coordinator</a></li>
-<li><a href="/docs/latest/design/overlord.html">Overlord</a></li>
-<li><a href="/docs/latest/design/broker.html">Broker</a></li>
-<li><a href="/docs/latest/design/historical.html">Historical</a></li>
-<li><a href="/docs/latest/design/middlemanager.html">MiddleManager</a> and <a href="/docs/latest/design/peons.html">Peons</a></li>
-<li><a href="/docs/latest/design/indexer.html">Indexer (Optional)</a></li>
-<li><a href="/docs/latest/design/router.html">Router (Optional)</a></li>
+<li><a href="/docs/0.17.0/design/coordinator.html">Coordinator</a></li>
+<li><a href="/docs/0.17.0/design/overlord.html">Overlord</a></li>
+<li><a href="/docs/0.17.0/design/broker.html">Broker</a></li>
+<li><a href="/docs/0.17.0/design/historical.html">Historical</a></li>
+<li><a href="/docs/0.17.0/design/middlemanager.html">MiddleManager</a> and <a href="/docs/0.17.0/design/peons.html">Peons</a></li>
+<li><a href="/docs/0.17.0/design/indexer.html">Indexer (Optional)</a></li>
+<li><a href="/docs/0.17.0/design/router.html">Router (Optional)</a></li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="server-types"></a><a href="#server-types" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
 <p>Druid processes can be deployed any way you like, but for ease of deployment we suggest organizing them into three server types:</p>
@@ -101,17 +101,17 @@
 <p>A Master server manages data ingestion and availability: it is responsible for starting new ingestion jobs and coordinating availability of data on the &quot;Data servers&quot; described below.</p>
 <p>Within a Master server, functionality is split between two processes, the Coordinator and Overlord.</p>
 <h4><a class="anchor" aria-hidden="true" id="coordinator-process"></a><a href="#coordinator-process" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
-<p><a href="/docs/latest/design/coordinator.html"><strong>Coordinator</strong></a> processes watch over the Historical processes on the Data servers. They are responsible for assigning segments to specific servers, and for ensuring segments are well-balanced across Historicals.</p>
+<p><a href="/docs/0.17.0/design/coordinator.html"><strong>Coordinator</strong></a> processes watch over the Historical processes on the Data servers. They are responsible for assigning segments to specific servers, and for ensuring segments are well-balanced across Historicals.</p>
 <h4><a class="anchor" aria-hidden="true" id="overlord-process"></a><a href="#overlord-process" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
-<p><a href="/docs/latest/design/overlord.html"><strong>Overlord</strong></a> processes watch over the MiddleManager processes on the Data servers and are the controllers of data ingestion into Druid. They are responsible for assigning ingestion tasks to MiddleManagers and for coordinating segment publishing.</p>
+<p><a href="/docs/0.17.0/design/overlord.html"><strong>Overlord</strong></a> processes watch over the MiddleManager processes on the Data servers and are the controllers of data ingestion into Druid. They are responsible for assigning ingestion tasks to MiddleManagers and for coordinating segment publishing.</p>
 <h3><a class="anchor" aria-hidden="true" id="query-server"></a><a href="#query-server" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
 <p>A Query server provides the endpoints that users and client applications interact with, routing queries to Data servers or other Query servers (and optionally proxied Master server requests as well).</p>
 <p>Within a Query server, functionality is split between two processes, the Broker and Router.</p>
 <h4><a class="anchor" aria-hidden="true" id="broker-process"></a><a href="#broker-process" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
-<p><a href="/docs/latest/design/broker.html"><strong>Broker</strong></a> processes receive queries from external clients and forward those queries to Data servers. When Brokers receive results from those subqueries, they merge those results and return them to the
+<p><a href="/docs/0.17.0/design/broker.html"><strong>Broker</strong></a> processes receive queries from external clients and forward those queries to Data servers. When Brokers receive results from those subqueries, they merge those results and return them to the
 caller. End users typically query Brokers rather than querying Historicals or MiddleManagers processes on Data servers directly.</p>
 <h4><a class="anchor" aria-hidden="true" id="router-process-optional"></a><a href="#router-process-optional" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 [...]
-<p><a href="/docs/latest/design/router.html"><strong>Router</strong></a> processes are <em>optional</em> processes that provide a unified API gateway in front of Druid Brokers,
+<p><a href="/docs/0.17.0/design/router.html"><strong>Router</strong></a> processes are <em>optional</em> processes that provide a unified API gateway in front of Druid Brokers,
 Overlords, and Coordinators. They are optional since you can also simply contact the Druid Brokers, Overlords, and
 Coordinators directly.</p>
 <p>The Router also runs the <a href="../operations/management-uis.html#druid-console">Druid Console</a>, a management UI for datasources, segments, tasks, data processes (Historicals and MiddleManagers), and coordinator dynamic configuration. The user can also run SQL and native Druid queries within the console.</p>
@@ -119,20 +119,20 @@ Coordinators directly.</p>
 <p>A Data server executes ingestion jobs and stores queryable data.</p>
 <p>Within a Data server, functionality is split between two processes, the Historical and MiddleManager.</p>
 <h3><a class="anchor" aria-hidden="true" id="historical-process"></a><a href="#historical-process" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22- [...]
-<p><a href="/docs/latest/design/historical.html"><strong>Historical</strong></a> processes are the workhorses that handle storage and querying on &quot;historical&quot; data
+<p><a href="/docs/0.17.0/design/historical.html"><strong>Historical</strong></a> processes are the workhorses that handle storage and querying on &quot;historical&quot; data
 (including any streaming data that has been in the system long enough to be committed). Historical processes
 download segments from deep storage and respond to queries about these segments. They don't accept writes.</p>
 <h3><a class="anchor" aria-hidden="true" id="middle-manager-process"></a><a href="#middle-manager-process" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
-<p><a href="/docs/latest/design/middlemanager.html"><strong>MiddleManager</strong></a> processes handle ingestion of new data into the cluster. They are responsible
+<p><a href="/docs/0.17.0/design/middlemanager.html"><strong>MiddleManager</strong></a> processes handle ingestion of new data into the cluster. They are responsible
 for reading from external data sources and publishing new Druid segments.</p>
 <h4><a class="anchor" aria-hidden="true" id="peon-processes"></a><a href="#peon-processes" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
-<p><a href="/docs/latest/design/peons.html"><strong>Peon</strong></a> processes are task execution engines spawned by MiddleManagers. Each Peon runs a separate JVM and is responsible for executing a single task. Peons always run on the same host as the MiddleManager that spawned them.</p>
+<p><a href="/docs/0.17.0/design/peons.html"><strong>Peon</strong></a> processes are task execution engines spawned by MiddleManagers. Each Peon runs a separate JVM and is responsible for executing a single task. Peons always run on the same host as the MiddleManager that spawned them.</p>
 <h3><a class="anchor" aria-hidden="true" id="indexer-process-optional"></a><a href="#indexer-process-optional" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-. [...]
-<p><a href="/docs/latest/design/indexer.html"><strong>Indexer</strong></a> processes are an alternative to MiddleManagers and Peons. Instead of
+<p><a href="/docs/0.17.0/design/indexer.html"><strong>Indexer</strong></a> processes are an alternative to MiddleManagers and Peons. Instead of
 forking separate JVM processes per-task, the Indexer runs tasks as individual threads within a single JVM process.</p>
 <p>The Indexer is designed to be easier to configure and deploy compared to the MiddleManager + Peon system and to
 better enable resource sharing across tasks. The Indexer is a newer feature and is currently designated
-<a href="/docs/latest/development/experimental.html">experimental</a> due to the fact that its memory management system is still under
+<a href="/docs/0.17.0/development/experimental.html">experimental</a> due to the fact that its memory management system is still under
 development. It will continue to mature in future versions of Druid.</p>
 <p>Typically, you would deploy either MiddleManagers or Indexers, but not both.</p>
 <h2><a class="anchor" aria-hidden="true" id="pros-and-cons-of-colocation"></a><a href="#pros-and-cons-of-colocation" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
@@ -151,7 +151,7 @@ such that they run on individual servers to avoid resource contention.</p>
 <h3><a class="anchor" aria-hidden="true" id="historicals-and-middlemanagers"></a><a href="#historicals-and-middlemanagers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 1 [...]
 <p>With higher levels of ingestion or query load, it can make sense to deploy the Historical and MiddleManager processes on separate hosts to to avoid CPU and memory contention.</p>
 <p>The Historical also benefits from having free memory for memory mapped segments, which can be another reason to deploy the Historical and MiddleManager processes separately.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/design/segments.html"><span class="arrow-prev">← </span><span>Segments</span></a><a class="docs-next button" href="/docs/latest/dependencies/deep-storage.html"><span>Deep storage</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#process-types">Process types</a></li><li><a href="#server-types">Server types</a><ul c [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/design/segments.html"><span class="arrow-prev">← </span><span>Segments</span></a><a class="docs-next button" href="/docs/0.17.0/dependencies/deep-storage.html"><span>Deep storage</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#process-types">Process types</a></li><li><a href="#server-types">Server types</a><ul c [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -168,6 +168,6 @@ such that they run on individual servers to avoid resource contention.</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.16.1-incubating"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.17.0/design/realtime.html b/docs/0.17.0/design/realtime.html
new file mode 100644
index 0000000..2f57fca
--- /dev/null
+++ b/docs/0.17.0/design/realtime.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../ingestion/standalone-realtime.html">
+<meta http-equiv="refresh" content="0; url=../ingestion/standalone-realtime.html">
+<h1>Redirecting...</h1>
+<a href="../ingestion/standalone-realtime.html">Click here if you are not redirected.</a>
+<script>location="../ingestion/standalone-realtime.html"</script>
diff --git a/docs/latest/design/router.html b/docs/0.17.0/design/router.html
similarity index 62%
copy from docs/latest/design/router.html
copy to docs/0.17.0/design/router.html
index d711791..d0ce843 100644
--- a/docs/latest/design/router.html
+++ b/docs/0.17.0/design/router.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Router Process · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/design/router.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.16.1-incubating" /> [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Router Process · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/design/router.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.17.0" /><meta prope [...]
               window.dataLayer = window.dataLayer || [];
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -59,7 +59,7 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-druid/edit/master/docs/design/router.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Router Process</h1></header><article><div><span><!--
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/design/router.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Router Process</h1></header><article><div><span><!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
   ~ or more contributor license agreements.  See the NOTICE file
   ~ distributed with this work for additional information
@@ -78,14 +78,14 @@
   ~ under the License.
   -->
 <blockquote>
-<p>The Router is an optional and <a href="/docs/latest/development/experimental.html">experimental</a> feature due to the fact that its recommended place in the Druid cluster architecture is still evolving.
+<p>The Router is an optional and <a href="/docs/0.17.0/development/experimental.html">experimental</a> feature due to the fact that its recommended place in the Druid cluster architecture is still evolving.
 However, it has been battle-tested in production, and it hosts the powerful <a href="../operations/management-uis.html#druid-console">Druid Console</a>, so you should feel safe deploying it.</p>
 </blockquote>
-<p>The Apache Druid (incubating) Router process can be used to route queries to different Broker processes. By default, the broker routes queries based on how <a href="/docs/latest/operations/rule-configuration.html">Rules</a> are set up. For example, if 1 month of recent data is loaded into a <code>hot</code> cluster, queries that fall within the recent month can be routed to a dedicated set of brokers. Queries outside this range are routed to another set of brokers. This set up provide [...]
+<p>The Apache Druid Router process can be used to route queries to different Broker processes. By default, the broker routes queries based on how <a href="/docs/0.17.0/operations/rule-configuration.html">Rules</a> are set up. For example, if 1 month of recent data is loaded into a <code>hot</code> cluster, queries that fall within the recent month can be routed to a dedicated set of brokers. Queries outside this range are routed to another set of brokers. This set up provides query isola [...]
 <p>For query routing purposes, you should only ever need the Router process if you have a Druid cluster well into the terabyte range.</p>
 <p>In addition to query routing, the Router also runs the <a href="../operations/management-uis.html#druid-console">Druid Console</a>, a management UI for datasources, segments, tasks, data processes (Historicals and MiddleManagers), and coordinator dynamic configuration. The user can also run SQL and native Druid queries within the console.</p>
 <h3><a class="anchor" aria-hidden="true" id="configuration"></a><a href="#configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
-<p>For Apache Druid (incubating) Router Process Configuration, see <a href="../configuration/index.html#router">Router Configuration</a>.</p>
+<p>For Apache Druid Router Process Configuration, see <a href="../configuration/index.html#router">Router Configuration</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="http-endpoints"></a><a href="#http-endpoints" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
 <p>For a list of API endpoints supported by the Router, see <a href="../operations/api-reference.html#router">Router API</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="running"></a><a href="#running" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
@@ -147,7 +147,7 @@ processes, so explicit routing needs to be used to indicate the proxy destinatio
 }
 </code></pre>
 <blockquote>
-<p>JavaScript-based functionality is disabled by default. Please refer to the Druid <a href="/docs/latest/development/javascript.html">JavaScript programming guide</a> for guidelines about using Druid's JavaScript functionality, including instructions on how to enable it.</p>
+<p>JavaScript-based functionality is disabled by default. Please refer to the Druid <a href="/docs/0.17.0/development/javascript.html">JavaScript programming guide</a> for guidelines about using Druid's JavaScript functionality, including instructions on how to enable it.</p>
 </blockquote>
 <h3><a class="anchor" aria-hidden="true" id="avatica-query-balancing"></a><a href="#avatica-query-balancing" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 [...]
 <p>All Avatica JDBC requests with a given connection ID must be routed to the same Broker, since Druid Brokers do not share connection state with each other.</p>
@@ -203,7 +203,7 @@ processes, so explicit routing needs to be used to indicate the proxy destinatio
 
 <span class="hljs-attr">druid.server.http.numThreads</span>=<span class="hljs-number">100</span>
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/design/overlord.html"><span class="arrow-prev">← </span><span>Overlord Process</span></a><a class="docs-next button" href="/docs/latest/design/peons.html"><span>Peons</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"><div class="text-center"><p><a href="/technology"> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/design/overlord.html"><span class="arrow-prev">← </span><span>Overlord Process</span></a><a class="docs-next button" href="/docs/0.17.0/design/peons.html"><span>Peons</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"><div class="text-center"><p><a href="/technology"> [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -220,6 +220,6 @@ processes, so explicit routing needs to be used to indicate the proxy destinatio
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.16.1-incubating"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/design/segments.html b/docs/0.17.0/design/segments.html
similarity index 59%
copy from docs/latest/design/segments.html
copy to docs/0.17.0/design/segments.html
index 02a089e..75fabc0 100644
--- a/docs/latest/design/segments.html
+++ b/docs/0.17.0/design/segments.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Segments · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/design/segments.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.16.1-incubating" /><met [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Segments · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/design/segments.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.17.0" /><meta property= [...]
               window.dataLayer = window.dataLayer || [];
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -59,7 +59,7 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-druid/edit/master/docs/design/segments.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Segments</h1></header><article><div><span><!--
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/design/segments.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Segments</h1></header><article><div><span><!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
   ~ or more contributor license agreements.  See the NOTICE file
   ~ distributed with this work for additional information
@@ -77,19 +77,19 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>Apache Druid (incubating) stores its index in <em>segment files</em>, which are partitioned by
+<p>Apache Druid stores its index in <em>segment files</em>, which are partitioned by
 time. In a basic setup, one segment file is created for each time
 interval, where the time interval is configurable in the
 <code>segmentGranularity</code> parameter of the
-<a href="/docs/latest/ingestion/index.html#granularityspec"><code>granularitySpec</code></a>.  For Druid to
+<a href="/docs/0.17.0/ingestion/index.html#granularityspec"><code>granularitySpec</code></a>.  For Druid to
 operate well under heavy query load, it is important for the segment
-file size to be within the recommended range of 300mb-700mb. If your
+file size to be within the recommended range of 300MB-700MB. If your
 segment files are larger than this range, then consider either
 changing the granularity of the time interval or partitioning your
 data and tweaking the <code>targetPartitionSize</code> in your <code>partitionsSpec</code>
 (a good starting point for this parameter is 5 million rows).  See the
 sharding section below and the 'Partitioning specification' section of
-the <a href="/docs/latest/ingestion/hadoop.html#partitionsspec">Batch ingestion</a> documentation
+the <a href="/docs/0.17.0/ingestion/hadoop.html#partitionsspec">Batch ingestion</a> documentation
 for more information.</p>
 <h3><a class="anchor" aria-hidden="true" id="a-segment-files-core-data-structures"></a><a href="#a-segment-files-core-data-structures" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 [...]
 <p>Here we describe the internal structure of segment files, which is
@@ -115,16 +115,13 @@ three data structures:</p>
 <li>For each distinct value in the column, a bitmap that indicates which rows contain that value.</li>
 </ol>
 <p>Why these three data structures? The dictionary simply maps string
-values to integer ids so that the values in 2 and 3 can be
-represented compactly. The bitmaps in 3 -- also known as <em>inverted
+values to integer ids so that the values in (2) and (3) can be
+represented compactly. The bitmaps in (3) -- also known as <em>inverted
 indexes</em> allow for quick filtering operations (specifically, bitmaps
 are convenient for quickly applying AND and OR operators). Finally,
-the list of values in 2 is needed for <em>group by</em> and <em>TopN</em>
+the list of values in (2) is needed for <em>group by</em> and <em>TopN</em>
 queries. In other words, queries that solely aggregate metrics based
-on filters do not need to touch the list of dimension values stored in</p>
-<ol start="2">
-<li></li>
-</ol>
+on filters do not need to touch the list of dimension values stored in (2).</p>
 <p>To get a concrete sense of these data structures, consider the ‘page’
 column from the example data above.  The three data structures that
 represent this dimension are illustrated in the diagram below.</p>
@@ -184,6 +181,9 @@ bitmap. If a row has more than one value for a column, its entry in
 the 'column data' is an array of values. Additionally, a row with <em>n</em>
 values in 'column data' will have <em>n</em> non-zero valued entries in
 bitmaps.</p>
+<h2><a class="anchor" aria-hidden="true" id="sql-compatible-null-handling"></a><a href="#sql-compatible-null-handling" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 [...]
+<p>By default, Druid string dimension columns use the values <code>''</code> and <code>null</code> interchangeably and numeric and metric columns can not represent <code>null</code> at all, instead coercing nulls to <code>0</code>. However, Druid also provides a SQL compatible null handling mode, which must be enabled at the system level, through <code>druid.generic.useDefaultValueForNull</code>. This setting, when set to <code>false</code>, will allow Druid to <em>at ingestion time</em> [...]
+<p>String dimension columns contain no additional column structures in this mode, instead just reserving an additional dictionary entry for the <code>null</code> value. Numeric columns however will be stored in the segment with an additional bitmap whose set bits indicate <code>null</code> valued rows. In addition to slightly increased segment sizes, SQL compatible null handling can incur a performance cost at query time as well, due to the need to check the null bitmap. This performance [...]
 <h2><a class="anchor" aria-hidden="true" id="naming-convention"></a><a href="#naming-convention" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
 <p>Identifiers for segments are typically constructed using the segment datasource, interval start time (in ISO 8601 format), interval end time (in ISO 8601 format), and a version. If data is additionally sharded beyond a time range, the segment identifier will also contain a partition number.</p>
 <p>An example segment identifier may be:
@@ -229,7 +229,7 @@ the same datasource, interval, and version, but have linearly increasing partiti
 foo_2015<span class="hljs-number">-01</span><span class="hljs-number">-01</span>/<span class="hljs-number">2015</span><span class="hljs-number">-01</span><span class="hljs-number">-02</span>_v1_1
 foo_2015<span class="hljs-number">-01</span><span class="hljs-number">-01</span>/<span class="hljs-number">2015</span><span class="hljs-number">-01</span><span class="hljs-number">-02</span>_v1_2
 </code></pre>
-<p>In the example segments above, the dataSource = foo, interval = 2015-01-01/2015-01-02, version = v1, partitionNum = 0.
+<p>In the example segments above, the <code>dataSource = foo</code>, <code>interval = 2015-01-01/2015-01-02</code>, <code>version = v1</code>, and <code>partitionNum = 0</code>.
 If at some later point in time, you reindex the data with a new schema, the newly created segments will have a higher version id.</p>
 <pre><code class="hljs">foo_2015<span class="hljs-number">-01</span><span class="hljs-number">-01</span>/<span class="hljs-number">2015</span><span class="hljs-number">-01</span><span class="hljs-number">-02</span>_v2_0
 foo_2015<span class="hljs-number">-01</span><span class="hljs-number">-01</span>/<span class="hljs-number">2015</span><span class="hljs-number">-01</span><span class="hljs-number">-02</span>_v2_1
@@ -257,7 +257,7 @@ foo_2015<span class="hljs-number">-01</span><span class="hljs-number">-03</span>
 another, queries that involve both segments still work. Queries for the segment missing the dimension will behave as if the dimension has only null values.
 Similarly, if one segment has a numeric column (metric) but another does not, queries on the segment missing the
 metric will generally &quot;do the right thing&quot;. Aggregations over this missing metric behave as if the metric were missing.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/design/architecture.html"><span class="arrow-prev">← </span><span>Design</span></a><a class="docs-next button" href="/docs/latest/design/processes.html"><span>Processes and servers</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#naming-convention">Naming Convention</a></li><li><a href="#segment-components">Segme [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/design/architecture.html"><span class="arrow-prev">← </span><span>Design</span></a><a class="docs-next button" href="/docs/0.17.0/design/processes.html"><span>Processes and servers</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#sql-compatible-null-handling">SQL Compatible Null Handling</a></li><li><a href="#nam [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -274,6 +274,6 @@ metric will generally &quot;do the right thing&quot;. Aggregations over this mis
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.16.1-incubating"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.17.0/development/approximate-histograms.html b/docs/0.17.0/development/approximate-histograms.html
new file mode 100644
index 0000000..8df4839
--- /dev/null
+++ b/docs/0.17.0/development/approximate-histograms.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="extensions-core/approximate-histograms.html">
+<meta http-equiv="refresh" content="0; url=extensions-core/approximate-histograms.html">
+<h1>Redirecting...</h1>
+<a href="extensions-core/approximate-histograms.html">Click here if you are not redirected.</a>
+<script>location="extensions-core/approximate-histograms.html"</script>
diff --git a/docs/0.17.0/development/build.html b/docs/0.17.0/development/build.html
new file mode 100644
index 0000000..3d61f15
--- /dev/null
+++ b/docs/0.17.0/development/build.html
@@ -0,0 +1,127 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Build from source · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/development/build.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.17.0" /><met [...]
+              window.dataLayer = window.dataLayer || [];
+              function gtag(){dataLayer.push(arguments); }
+              gtag('js', new Date());
+              gtag('config', 'UA-131010415-1');
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/development/build.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Build from source</h1></header><article><div><span><!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<p>You can build Apache Druid directly from source. Please note that these instructions are for building the latest stable version of Druid.
+For building the latest code in master, follow the instructions <a href="https://github.com/apache/druid/blob/master/docs/content/development/build.md">here</a>.</p>
+<h4><a class="anchor" aria-hidden="true" id="prerequisites"></a><a href="#prerequisites" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<h5><a class="anchor" aria-hidden="true" id="installing-java-and-maven"></a><a href="#installing-java-and-maven" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
+<ul>
+<li>JDK 8, 8u92+. We recommend using an OpenJDK distribution that provides long-term support and open-source licensing,
+like <a href="https://aws.amazon.com/corretto/">Amazon Corretto</a> or <a href="https://www.azul.com/downloads/zulu/">Azul Zulu</a>.</li>
+<li><a href="http://maven.apache.org/download.cgi">Maven version 3.x</a></li>
+</ul>
+<h5><a class="anchor" aria-hidden="true" id="downloading-the-source"></a><a href="#downloading-the-source" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
+<pre><code class="hljs css language-bash">git <span class="hljs-built_in">clone</span> git@github.com:apache/druid.git
+<span class="hljs-built_in">cd</span> druid
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="building-the-source"></a><a href="#building-the-source" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
+<p>The basic command to build Druid from source is:</p>
+<pre><code class="hljs css language-bash">mvn clean install
+</code></pre>
+<p>This will run static analysis, unit tests, compile classes, and package the projects into JARs. It will <em>not</em> generate the source or binary distribution tarball.</p>
+<p>In addition to the basic stages, you may also want to add the following profiles and properties:</p>
+<ul>
+<li><strong>-Pdist</strong> - Distribution profile: Generates the binary distribution tarball by pulling in core extensions and dependencies and packaging the files as <code>distribution/target/apache-druid-x.x.x-bin.tar.gz</code></li>
+<li><strong>-Papache-release</strong> - Apache release profile: Generates GPG signature and checksums, and builds the source distribution tarball as <code>distribution/target/apache-druid-x.x.x-src.tar.gz</code></li>
+<li><strong>-Prat</strong> - Apache Rat profile: Runs the Apache Rat license audit tool</li>
+<li><strong>-DskipTests</strong> - Skips unit tests (which reduces build time)</li>
+</ul>
+<p>Putting these together, if you wish to build the source and binary distributions with signatures and checksums, audit licenses, and skip the unit tests, you would run:</p>
+<pre><code class="hljs css language-bash">mvn clean install -Papache-release,dist,rat -DskipTests
+</code></pre>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/development/javascript.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">JavaScript functionality</span></a><a class="docs-next button" href="/docs/0.17.0/development/versioning.html"><span>Versioning</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class=" [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                
+                apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
+                indexName: 'apache_druid',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:0.17.0"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/docs/0.17.0/development/community-extensions/azure.html b/docs/0.17.0/development/community-extensions/azure.html
new file mode 100644
index 0000000..67da9a3
--- /dev/null
+++ b/docs/0.17.0/development/community-extensions/azure.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../extensions-contrib/azure.html">
+<meta http-equiv="refresh" content="0; url=../extensions-contrib/azure.html">
+<h1>Redirecting...</h1>
+<a href="../extensions-contrib/azure.html">Click here if you are not redirected.</a>
+<script>location="../extensions-contrib/azure.html"</script>
diff --git a/docs/0.17.0/development/community-extensions/cassandra.html b/docs/0.17.0/development/community-extensions/cassandra.html
new file mode 100644
index 0000000..7026a6a
--- /dev/null
+++ b/docs/0.17.0/development/community-extensions/cassandra.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../extensions-contrib/cassandra.html">
+<meta http-equiv="refresh" content="0; url=../extensions-contrib/cassandra.html">
+<h1>Redirecting...</h1>
+<a href="../extensions-contrib/cassandra.html">Click here if you are not redirected.</a>
+<script>location="../extensions-contrib/cassandra.html"</script>
diff --git a/docs/0.17.0/development/community-extensions/cloudfiles.html b/docs/0.17.0/development/community-extensions/cloudfiles.html
new file mode 100644
index 0000000..0c9b8c5
--- /dev/null
+++ b/docs/0.17.0/development/community-extensions/cloudfiles.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../extensions-contrib/cloudfiles.html">
+<meta http-equiv="refresh" content="0; url=../extensions-contrib/cloudfiles.html">
+<h1>Redirecting...</h1>
+<a href="../extensions-contrib/cloudfiles.html">Click here if you are not redirected.</a>
+<script>location="../extensions-contrib/cloudfiles.html"</script>
diff --git a/docs/0.17.0/development/community-extensions/graphite.html b/docs/0.17.0/development/community-extensions/graphite.html
new file mode 100644
index 0000000..dc31894
--- /dev/null
+++ b/docs/0.17.0/development/community-extensions/graphite.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../extensions-contrib/graphite.html">
+<meta http-equiv="refresh" content="0; url=../extensions-contrib/graphite.html">
+<h1>Redirecting...</h1>
+<a href="../extensions-contrib/graphite.html">Click here if you are not redirected.</a>
+<script>location="../extensions-contrib/graphite.html"</script>
diff --git a/docs/0.17.0/development/community-extensions/kafka-simple.html b/docs/0.17.0/development/community-extensions/kafka-simple.html
new file mode 100644
index 0000000..179d16a
--- /dev/null
+++ b/docs/0.17.0/development/community-extensions/kafka-simple.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../extensions-core/kafka-ingestion.html">
+<meta http-equiv="refresh" content="0; url=../extensions-core/kafka-ingestion.html">
+<h1>Redirecting...</h1>
+<a href="../extensions-core/kafka-ingestion.html">Click here if you are not redirected.</a>
+<script>location="../extensions-core/kafka-ingestion.html"</script>
diff --git a/docs/0.17.0/development/community-extensions/rabbitmq.html b/docs/0.17.0/development/community-extensions/rabbitmq.html
new file mode 100644
index 0000000..179d16a
--- /dev/null
+++ b/docs/0.17.0/development/community-extensions/rabbitmq.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../extensions-core/kafka-ingestion.html">
+<meta http-equiv="refresh" content="0; url=../extensions-core/kafka-ingestion.html">
+<h1>Redirecting...</h1>
+<a href="../extensions-core/kafka-ingestion.html">Click here if you are not redirected.</a>
+<script>location="../extensions-core/kafka-ingestion.html"</script>
diff --git a/docs/0.17.0/development/datasketches-aggregators.html b/docs/0.17.0/development/datasketches-aggregators.html
new file mode 100644
index 0000000..9ef81f4
--- /dev/null
+++ b/docs/0.17.0/development/datasketches-aggregators.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="extensions-core/datasketches-extension.html">
+<meta http-equiv="refresh" content="0; url=extensions-core/datasketches-extension.html">
+<h1>Redirecting...</h1>
+<a href="extensions-core/datasketches-extension.html">Click here if you are not redirected.</a>
+<script>location="extensions-core/datasketches-extension.html"</script>
diff --git a/docs/0.17.0/development/experimental.html b/docs/0.17.0/development/experimental.html
new file mode 100644
index 0000000..8700493
--- /dev/null
+++ b/docs/0.17.0/development/experimental.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Experimental features · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.17.0/development/experimental.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.1 [...]
+              window.dataLayer = window.dataLayer || [];
+              function gtag(){dataLayer.push(arguments); }
+              gtag('js', new Date());
+              gtag('config', 'UA-131010415-1');
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/development/experimental.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Experimental features</h1></header><article><div><span><!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<p>Features often start out in &quot;experimental&quot; status that indicates they are still evolving.
+This can mean any of the following things:</p>
+<ol>
+<li>The feature's API may change even in minor releases or patch releases.</li>
+<li>The feature may have known &quot;missing&quot; pieces that will be added later.</li>
+<li>The feature may or may not have received full battle-testing in production environments.</li>
+</ol>
+<p>All experimental features are optional.</p>
+<p>Note that not all of these points apply to every experimental feature. Some have been battle-tested in terms of
+implementation, but are still marked experimental due to an evolving API. Please check the documentation for each
+feature for full details.</p>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.17.0/development/versioning.html"><span class="arrow-prev">← </span><span>Versioning</span></a><a class="docs-next button" href="/docs/0.17.0/misc/math-expr.html"><span>Expressions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"><div class="text-center"><p><a href="/tec [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
... 35961 lines suppressed ...


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org