You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by vo...@apache.org on 2021/12/11 09:22:29 UTC

[druid-website-src] branch master updated: Doc changes for the 0.22.1 release

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

vogievetsky pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid-website-src.git


The following commit(s) were added to refs/heads/master by this push:
     new e8b2883  Doc changes for the 0.22.1 release
     new dc11f66  Merge pull request #273 from jihoonson/0.22.1-docs
e8b2883 is described below

commit e8b28836c71482a63100fd1cf95b04eac8f00926
Author: Jihoon Son <ji...@apache.org>
AuthorDate: Sat Dec 11 01:18:27 2021 -0800

    Doc changes for the 0.22.1 release
---
 _config.yml                                        |   4 +-
 docs/0.22.1/About-Experimental-Features.html       |   8 +
 docs/0.22.1/Aggregations.html                      |   8 +
 docs/0.22.1/ApproxHisto.html                       |   8 +
 docs/0.22.1/Batch-ingestion.html                   |   8 +
 docs/0.22.1/Booting-a-production-cluster.html      |   8 +
 docs/0.22.1/Broker-Config.html                     |   8 +
 docs/0.22.1/Broker.html                            |   8 +
 docs/0.22.1/Build-from-source.html                 |   8 +
 docs/0.22.1/Cassandra-Deep-Storage.html            |   8 +
 docs/0.22.1/Cluster-setup.html                     |   8 +
 docs/0.22.1/Compute.html                           |   8 +
 docs/0.22.1/Concepts-and-Terminology.html          |   8 +
 docs/0.22.1/Configuration.html                     |   8 +
 docs/0.22.1/Contribute.html                        |   8 +
 docs/0.22.1/Coordinator-Config.html                |   8 +
 docs/0.22.1/Coordinator.html                       |   8 +
 docs/0.22.1/DataSource.html                        |   8 +
 docs/0.22.1/DataSourceMetadataQuery.html           |   8 +
 docs/0.22.1/Data_formats.html                      |   8 +
 docs/0.22.1/Deep-Storage.html                      |   8 +
 docs/0.22.1/Design.html                            |   8 +
 docs/0.22.1/DimensionSpecs.html                    |   8 +
 docs/0.22.1/Download.html                          |   8 +
 docs/0.22.1/Druid-Personal-Demo-Cluster.html       |   8 +
 docs/0.22.1/Druid-vs-Cassandra.html                |   8 +
 docs/0.22.1/Druid-vs-Elasticsearch.html            |   8 +
 docs/0.22.1/Druid-vs-Hadoop.html                   |   8 +
 docs/0.22.1/Druid-vs-Impala-or-Shark.html          |   8 +
 docs/0.22.1/Druid-vs-Redshift.html                 |   8 +
 docs/0.22.1/Druid-vs-Spark.html                    |   8 +
 docs/0.22.1/Druid-vs-Vertica.html                  |   8 +
 docs/0.22.1/Evaluate.html                          |   8 +
 docs/0.22.1/Examples.html                          |   8 +
 docs/0.22.1/Filters.html                           |   8 +
 docs/0.22.1/Firehose.html                          |   8 +
 docs/0.22.1/GeographicQueries.html                 |   8 +
 docs/0.22.1/Granularities.html                     |   8 +
 docs/0.22.1/GroupByQuery.html                      |   8 +
 docs/0.22.1/Hadoop-Configuration.html              |   8 +
 docs/0.22.1/Having.html                            |   8 +
 docs/0.22.1/Historical-Config.html                 |   8 +
 docs/0.22.1/Historical.html                        |   8 +
 docs/0.22.1/Home.html                              |   8 +
 docs/0.22.1/Including-Extensions.html              |   8 +
 docs/0.22.1/Indexing-Service-Config.html           |   8 +
 docs/0.22.1/Indexing-Service.html                  |   8 +
 docs/0.22.1/Ingestion-FAQ.html                     |   8 +
 docs/0.22.1/Ingestion-overview.html                |   8 +
 docs/0.22.1/Ingestion.html                         |   8 +
 .../Integrating-Druid-With-Other-Technologies.html |   8 +
 docs/0.22.1/Kafka-Eight.html                       |   8 +
 docs/0.22.1/Libraries.html                         |   8 +
 docs/0.22.1/LimitSpec.html                         |   8 +
 docs/0.22.1/Loading-Your-Data.html                 |   8 +
 docs/0.22.1/Logging.html                           |   8 +
 docs/0.22.1/Master.html                            |   8 +
 docs/0.22.1/Metadata-storage.html                  |   8 +
 docs/0.22.1/Metrics.html                           |   8 +
 docs/0.22.1/Middlemanager.html                     |   8 +
 docs/0.22.1/Modules.html                           |   8 +
 docs/0.22.1/MySQL.html                             |   8 +
 docs/0.22.1/OrderBy.html                           |   8 +
 docs/0.22.1/Other-Hadoop.html                      |   8 +
 docs/0.22.1/Papers-and-talks.html                  |   8 +
 docs/0.22.1/Peons.html                             |   8 +
 docs/0.22.1/Performance-FAQ.html                   |   8 +
 docs/0.22.1/Plumber.html                           |   8 +
 docs/0.22.1/Post-aggregations.html                 |   8 +
 docs/0.22.1/Production-Cluster-Configuration.html  |   8 +
 docs/0.22.1/Query-Context.html                     |   8 +
 docs/0.22.1/Querying-your-data.html                |   8 +
 docs/0.22.1/Querying.html                          |   8 +
 docs/0.22.1/Realtime-Config.html                   |   8 +
 docs/0.22.1/Realtime-ingestion.html                |   8 +
 docs/0.22.1/Realtime.html                          |   8 +
 docs/0.22.1/Recommendations.html                   |   8 +
 docs/0.22.1/Rolling-Updates.html                   |   8 +
 docs/0.22.1/Router.html                            |   8 +
 docs/0.22.1/Rule-Configuration.html                |   8 +
 docs/0.22.1/SearchQuery.html                       |   8 +
 docs/0.22.1/SearchQuerySpec.html                   |   8 +
 docs/0.22.1/SegmentMetadataQuery.html              |   8 +
 docs/0.22.1/Segments.html                          |   8 +
 docs/0.22.1/SelectQuery.html                       |   8 +
 docs/0.22.1/Simple-Cluster-Configuration.html      |   8 +
 docs/0.22.1/Spatial-Filters.html                   |   8 +
 docs/0.22.1/Spatial-Indexing.html                  |   8 +
 docs/0.22.1/Stand-Alone-With-Riak-CS.html          |   8 +
 docs/0.22.1/Support.html                           |   8 +
 docs/0.22.1/Tasks.html                             |   8 +
 docs/0.22.1/Thanks.html                            |   8 +
 docs/0.22.1/TimeBoundaryQuery.html                 |   8 +
 docs/0.22.1/TimeseriesQuery.html                   |   8 +
 docs/0.22.1/TopNMetricSpec.html                    |   8 +
 docs/0.22.1/TopNQuery.html                         |   8 +
 docs/0.22.1/Tutorial-A-First-Look-at-Druid.html    |   8 +
 docs/0.22.1/Tutorial-All-About-Queries.html        |   8 +
 docs/0.22.1/Tutorial-Loading-Batch-Data.html       |   8 +
 docs/0.22.1/Tutorial-Loading-Streaming-Data.html   |   8 +
 docs/0.22.1/Tutorial-The-Druid-Cluster.html        |   8 +
 docs/0.22.1/Tutorial:-A-First-Look-at-Druid.html   |   8 +
 docs/0.22.1/Tutorial:-All-About-Queries.html       |   8 +
 docs/0.22.1/Tutorial:-Loading-Batch-Data.html      |   8 +
 docs/0.22.1/Tutorial:-Loading-Streaming-Data.html  |   8 +
 .../0.22.1/Tutorial:-Loading-Your-Data-Part-1.html |   8 +
 .../0.22.1/Tutorial:-Loading-Your-Data-Part-2.html |   8 +
 docs/0.22.1/Tutorial:-The-Druid-Cluster.html       |   8 +
 docs/0.22.1/Tutorial:-Webstream.html               |   8 +
 docs/0.22.1/Tutorials.html                         |   8 +
 docs/0.22.1/Twitter-Tutorial.html                  |   8 +
 docs/0.22.1/Versioning.html                        |   8 +
 docs/0.22.1/ZooKeeper.html                         |   8 +
 docs/0.22.1/alerts.html                            |   8 +
 docs/0.22.1/assets/datasources-action-button.png   | Bin 0 -> 800 bytes
 docs/0.22.1/assets/druid-architecture.png          | Bin 0 -> 134117 bytes
 docs/0.22.1/assets/druid-column-types.png          | Bin 0 -> 93363 bytes
 docs/0.22.1/assets/druid-dataflow-2x.png           | Bin 0 -> 130160 bytes
 docs/0.22.1/assets/druid-dataflow-3.png            | Bin 0 -> 71425 bytes
 docs/0.22.1/assets/druid-manage-1.png              | Bin 0 -> 80415 bytes
 docs/0.22.1/assets/druid-timeline.png              | Bin 0 -> 24160 bytes
 docs/0.22.1/assets/indexing_service.png            | Bin 0 -> 22490 bytes
 docs/0.22.1/assets/native-queries-01.png           | Bin 0 -> 259507 bytes
 docs/0.22.1/assets/security-model-1.png            | Bin 0 -> 85098 bytes
 docs/0.22.1/assets/security-model-2.png            | Bin 0 -> 29613 bytes
 docs/0.22.1/assets/segmentPropagation.png          | Bin 0 -> 30569 bytes
 .../assets/tutorial-batch-data-loader-00.png       | Bin 0 -> 2904 bytes
 .../assets/tutorial-batch-data-loader-01.png       | Bin 0 -> 227941 bytes
 .../assets/tutorial-batch-data-loader-015.png      | Bin 0 -> 206331 bytes
 .../assets/tutorial-batch-data-loader-02.png       | Bin 0 -> 1193472 bytes
 .../assets/tutorial-batch-data-loader-03.png       | Bin 0 -> 405035 bytes
 .../assets/tutorial-batch-data-loader-04.png       | Bin 0 -> 488906 bytes
 .../assets/tutorial-batch-data-loader-05.png       | Bin 0 -> 447046 bytes
 .../assets/tutorial-batch-data-loader-06.png       | Bin 0 -> 191383 bytes
 .../assets/tutorial-batch-data-loader-07.png       | Bin 0 -> 173618 bytes
 .../assets/tutorial-batch-data-loader-08.png       | Bin 0 -> 325806 bytes
 .../assets/tutorial-batch-data-loader-09.png       | Bin 0 -> 187695 bytes
 .../assets/tutorial-batch-data-loader-10.png       | Bin 0 -> 219732 bytes
 .../assets/tutorial-batch-data-loader-11.png       | Bin 0 -> 316540 bytes
 .../assets/tutorial-batch-data-loader-12.png       | Bin 0 -> 31752 bytes
 .../assets/tutorial-batch-submit-task-01.png       | Bin 0 -> 170537 bytes
 .../assets/tutorial-batch-submit-task-02.png       | Bin 0 -> 207377 bytes
 docs/0.22.1/assets/tutorial-compaction-01.png      | Bin 0 -> 35710 bytes
 docs/0.22.1/assets/tutorial-compaction-02.png      | Bin 0 -> 166571 bytes
 docs/0.22.1/assets/tutorial-compaction-03.png      | Bin 0 -> 26755 bytes
 docs/0.22.1/assets/tutorial-compaction-04.png      | Bin 0 -> 184365 bytes
 docs/0.22.1/assets/tutorial-compaction-05.png      | Bin 0 -> 26588 bytes
 docs/0.22.1/assets/tutorial-compaction-06.png      | Bin 0 -> 206717 bytes
 docs/0.22.1/assets/tutorial-compaction-07.png      | Bin 0 -> 26683 bytes
 docs/0.22.1/assets/tutorial-compaction-08.png      | Bin 0 -> 28751 bytes
 docs/0.22.1/assets/tutorial-deletion-01.png        | Bin 0 -> 43586 bytes
 docs/0.22.1/assets/tutorial-deletion-02.png        | Bin 0 -> 439602 bytes
 docs/0.22.1/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 -> 613518 bytes
 .../assets/tutorial-kafka-data-loader-03.png       | Bin 0 -> 201934 bytes
 .../assets/tutorial-kafka-data-loader-04.png       | Bin 0 -> 252479 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.22.1/assets/tutorial-query-01.png           | Bin 0 -> 81402 bytes
 docs/0.22.1/assets/tutorial-query-02.png           | Bin 0 -> 155423 bytes
 docs/0.22.1/assets/tutorial-query-03.png           | Bin 0 -> 197392 bytes
 docs/0.22.1/assets/tutorial-query-035.png          | Bin 0 -> 256043 bytes
 docs/0.22.1/assets/tutorial-query-04.png           | Bin 0 -> 250861 bytes
 docs/0.22.1/assets/tutorial-query-05.png           | Bin 0 -> 51855 bytes
 docs/0.22.1/assets/tutorial-query-06.png           | Bin 0 -> 208088 bytes
 docs/0.22.1/assets/tutorial-query-07.png           | Bin 0 -> 260071 bytes
 docs/0.22.1/assets/tutorial-query-08.png           | Bin 0 -> 297253 bytes
 docs/0.22.1/assets/tutorial-quickstart-01.png      | Bin 0 -> 122497 bytes
 docs/0.22.1/assets/tutorial-retention-00.png       | Bin 0 -> 77704 bytes
 docs/0.22.1/assets/tutorial-retention-01.png       | Bin 0 -> 35171 bytes
 docs/0.22.1/assets/tutorial-retention-02.png       | Bin 0 -> 240310 bytes
 docs/0.22.1/assets/tutorial-retention-03.png       | Bin 0 -> 30029 bytes
 docs/0.22.1/assets/tutorial-retention-04.png       | Bin 0 -> 44617 bytes
 docs/0.22.1/assets/tutorial-retention-05.png       | Bin 0 -> 38992 bytes
 docs/0.22.1/assets/tutorial-retention-06.png       | Bin 0 -> 137570 bytes
 docs/0.22.1/assets/web-console-01-home-view.png    | Bin 0 -> 62928 bytes
 .../0.22.1/assets/web-console-02-data-loader-1.png | Bin 0 -> 80587 bytes
 .../0.22.1/assets/web-console-03-data-loader-2.png | Bin 0 -> 280137 bytes
 docs/0.22.1/assets/web-console-04-datasources.png  | Bin 0 -> 113501 bytes
 docs/0.22.1/assets/web-console-05-retention.png    | Bin 0 -> 99148 bytes
 docs/0.22.1/assets/web-console-06-segments.png     | Bin 0 -> 136070 bytes
 docs/0.22.1/assets/web-console-07-supervisors.png  | Bin 0 -> 77637 bytes
 .../assets/web-console-08-supervisor-status.png    | Bin 0 -> 82538 bytes
 docs/0.22.1/assets/web-console-09-task-status.png  | Bin 0 -> 251600 bytes
 docs/0.22.1/assets/web-console-10-servers.png      | Bin 0 -> 92508 bytes
 docs/0.22.1/assets/web-console-11-query-sql.png    | Bin 0 -> 136714 bytes
 docs/0.22.1/assets/web-console-12-query-rune.png   | Bin 0 -> 94341 bytes
 docs/0.22.1/assets/web-console-13-lookups.png      | Bin 0 -> 56556 bytes
 docs/0.22.1/comparisons/druid-vs-cassandra.html    |   8 +
 .../comparisons/druid-vs-elasticsearch.html        |   8 +-
 docs/0.22.1/comparisons/druid-vs-hadoop.html       |   8 +
 .../comparisons/druid-vs-impala-or-shark.html      |   8 +
 .../comparisons/druid-vs-key-value.html            |   8 +-
 .../comparisons/druid-vs-kudu.html                 |   8 +-
 .../comparisons/druid-vs-redshift.html             |   8 +-
 .../comparisons/druid-vs-spark.html                |   8 +-
 .../comparisons/druid-vs-sql-on-hadoop.html        |   8 +-
 docs/0.22.1/comparisons/druid-vs-vertica.html      |   8 +
 docs/0.22.1/configuration/auth.html                |   8 +
 docs/0.22.1/configuration/broker.html              |   8 +
 docs/0.22.1/configuration/caching.html             |   8 +
 docs/0.22.1/configuration/coordinator.html         |   8 +
 docs/0.22.1/configuration/hadoop.html              |   8 +
 docs/0.22.1/configuration/historical.html          |   8 +
 .../configuration/human-readable-byte.html         |   8 +-
 docs/{latest => 0.22.1}/configuration/index.html   | 206 ++++++++++-----------
 docs/0.22.1/configuration/indexing-service.html    |   8 +
 docs/{latest => 0.22.1}/configuration/logging.html |  10 +-
 docs/0.22.1/configuration/production-cluster.html  |   8 +
 docs/0.22.1/configuration/realtime.html            |   8 +
 docs/0.22.1/configuration/simple-cluster.html      |   8 +
 docs/0.22.1/configuration/zookeeper.html           |   8 +
 .../dependencies/cassandra-deep-storage.html       |   8 +
 .../dependencies/deep-storage.html                 |  14 +-
 .../dependencies/metadata-storage.html             |  22 +--
 .../{latest => 0.22.1}/dependencies/zookeeper.html |  24 +--
 docs/{latest => 0.22.1}/design/architecture.html   |  68 +++----
 docs/{latest => 0.22.1}/design/auth.html           |   8 +-
 docs/{latest => 0.22.1}/design/broker.html         |  16 +-
 docs/0.22.1/design/concepts-and-terminology.html   |   8 +
 docs/{latest => 0.22.1}/design/coordinator.html    |  28 +--
 docs/0.22.1/design/design.html                     |   8 +
 .../design/extensions-contrib/dropwizard.html      |  10 +-
 docs/{latest => 0.22.1}/design/historical.html     |  18 +-
 docs/{latest => 0.22.1}/design/index.html          |  14 +-
 docs/{latest => 0.22.1}/design/indexer.html        |  18 +-
 .../design/indexing-service.html                   |  22 +--
 docs/{latest => 0.22.1}/design/middlemanager.html  |  14 +-
 docs/{latest => 0.22.1}/design/overlord.html       |  14 +-
 docs/{latest => 0.22.1}/design/peons.html          |  12 +-
 docs/0.22.1/design/plumber.html                    |   8 +
 docs/{latest => 0.22.1}/design/processes.html      |  44 ++---
 docs/0.22.1/design/realtime.html                   |   8 +
 docs/{latest => 0.22.1}/design/router.html         |  22 +--
 docs/{latest => 0.22.1}/design/segments.html       |  14 +-
 .../0.22.1/development/approximate-histograms.html |   8 +
 docs/{latest => 0.22.1}/development/build.html     |   8 +-
 .../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 +
 .../development/experimental.html                  |   8 +-
 .../development/extensions-contrib/aliyun-oss.html |  14 +-
 .../extensions-contrib/ambari-metrics-emitter.html |  10 +-
 .../development/extensions-contrib/cassandra.html  |  10 +-
 .../development/extensions-contrib/cloudfiles.html |  12 +-
 .../extensions-contrib/distinctcount.html          |  10 +-
 .../extensions-contrib/gce-extensions.html         |  12 +-
 .../development/extensions-contrib/google.html     |   8 +
 .../development/extensions-contrib/graphite.html   |  12 +-
 .../development/extensions-contrib/influx.html     |  10 +-
 .../extensions-contrib/influxdb-emitter.html       |  12 +-
 .../extensions-contrib/kafka-emitter.html          |  10 +-
 .../extensions-contrib/kafka-simple.html           |   8 +
 .../extensions-contrib/materialized-view.html      |  14 +-
 .../extensions-contrib/momentsketch-quantiles.html |  10 +-
 .../extensions-contrib/moving-average-query.html   |  36 ++--
 .../extensions-contrib/opentsdb-emitter.html       |  12 +-
 .../0.22.1/development/extensions-contrib/orc.html |   8 +
 .../development/extensions-contrib/parquet.html    |   8 +
 .../development/extensions-contrib/prometheus.html |  10 +-
 .../development/extensions-contrib/rabbitmq.html   |   8 +
 .../extensions-contrib/redis-cache.html            |  18 +-
 .../development/extensions-contrib/rocketmq.html   |   8 +
 .../development/extensions-contrib/scan-query.html |   8 +
 .../development/extensions-contrib/sqlserver.html  |  10 +-
 .../development/extensions-contrib/statsd.html     |  12 +-
 .../tdigestsketch-quantiles.html                   |  10 +-
 .../development/extensions-contrib/thrift.html     |  10 +-
 .../extensions-contrib/time-min-max.html           |  10 +-
 .../extensions-core/approximate-histograms.html    |  14 +-
 .../development/extensions-core/avro.html          |  18 +-
 .../development/extensions-core/azure.html         |  10 +-
 .../development/extensions-core/bloom-filter.html  |  16 +-
 .../extensions-core/caffeine-cache.html            |   8 +
 .../extensions-core/datasketches-aggregators.html  |   8 +
 .../extensions-core/datasketches-extension.html    |  18 +-
 .../extensions-core/datasketches-hll.html          |  12 +-
 .../extensions-core/datasketches-quantiles.html    |  10 +-
 .../extensions-core/datasketches-theta.html        |  10 +-
 .../extensions-core/datasketches-tuple.html        |  12 +-
 .../development/extensions-core/druid-aws-rds.html |  12 +-
 .../extensions-core/druid-basic-security.html      |  26 +--
 .../extensions-core/druid-kerberos.html            |  12 +-
 .../development/extensions-core/druid-lookups.html |  14 +-
 .../development/extensions-core/druid-pac4j.html   |  16 +-
 .../extensions-core/druid-ranger-security.html     |  18 +-
 .../development/extensions-core/examples.html      |   8 +-
 .../development/extensions-core/google.html        |  20 +-
 .../development/extensions-core/hdfs.html          |  24 +--
 .../extensions-core/kafka-eight-firehose.html      |   8 +
 .../kafka-extraction-namespace.html                |  16 +-
 .../extensions-core/kafka-ingestion.html           |  32 ++--
 .../extensions-core/kinesis-ingestion.html         |  32 ++--
 .../development/extensions-core/kubernetes.html    |  12 +-
 .../extensions-core/lookups-cached-global.html     |  26 +--
 .../development/extensions-core/mysql.html         |  16 +-
 .../extensions-core/namespaced-lookup.html         |   8 +
 .../development/extensions-core/orc.html           |  18 +-
 .../development/extensions-core/parquet.html       |  20 +-
 .../development/extensions-core/postgresql.html    |  14 +-
 .../development/extensions-core/protobuf.html      |  16 +-
 .../development/extensions-core/s3.html            |  20 +-
 .../extensions-core/simple-client-sslcontext.html  |  16 +-
 .../development/extensions-core/stats.html         |  12 +-
 .../development/extensions-core/test-stats.html    |   8 +-
 .../{latest => 0.22.1}/development/extensions.html | 120 ++++++------
 docs/{latest => 0.22.1}/development/geo.html       |  10 +-
 docs/0.22.1/development/indexer.html               |   8 +
 .../integrating-druid-with-other-technologies.html |   8 +
 .../{latest => 0.22.1}/development/javascript.html |  24 +--
 .../kafka-simple-consumer-firehose.html            |   8 +
 docs/0.22.1/development/libraries.html             |   8 +
 docs/{latest => 0.22.1}/development/modules.html   |  14 +-
 docs/{latest => 0.22.1}/development/overview.html  |  10 +-
 docs/0.22.1/development/router.html                |   8 +
 docs/0.22.1/development/select-query.html          |   8 +
 .../{latest => 0.22.1}/development/versioning.html |   8 +-
 docs/0.22.1/index.html                             |   8 +
 docs/0.22.1/ingestion/batch-ingestion.html         |   8 +
 .../ingestion/command-line-hadoop-indexer.html     |   8 +
 docs/{latest => 0.22.1}/ingestion/compaction.html  |  46 ++---
 .../{latest => 0.22.1}/ingestion/data-formats.html |  90 ++++-----
 .../ingestion/data-management.html                 |  36 ++--
 docs/{latest => 0.22.1}/ingestion/data-model.html  |  28 +--
 docs/0.22.1/ingestion/delete-data.html             |   8 +
 docs/{latest => 0.22.1}/ingestion/faq.html         |  38 ++--
 docs/0.22.1/ingestion/firehose.html                |   8 +
 docs/0.22.1/ingestion/hadoop-vs-native-batch.html  |   8 +
 docs/{latest => 0.22.1}/ingestion/hadoop.html      |  38 ++--
 docs/{latest => 0.22.1}/ingestion/index.html       |  38 ++--
 .../ingestion/ingestion-spec.html                  |  88 ++++-----
 docs/0.22.1/ingestion/ingestion.html               |   8 +
 docs/0.22.1/ingestion/locking-and-priority.html    |   8 +
 docs/0.22.1/ingestion/misc-tasks.html              |   8 +
 .../{latest => 0.22.1}/ingestion/native-batch.html | 118 ++++++------
 docs/0.22.1/ingestion/native_tasks.html            |   8 +
 docs/0.22.1/ingestion/overview.html                |   8 +
 .../{latest => 0.22.1}/ingestion/partitioning.html |  26 +--
 docs/0.22.1/ingestion/realtime-ingestion.html      |   8 +
 docs/0.22.1/ingestion/reports.html                 |   8 +
 docs/{latest => 0.22.1}/ingestion/rollup.html      |  28 +--
 .../ingestion/schema-design.html                   |  60 +++---
 .../ingestion/standalone-realtime.html             |  14 +-
 docs/0.22.1/ingestion/stream-ingestion.html        |   8 +
 docs/0.22.1/ingestion/stream-pull.html             |   8 +
 docs/0.22.1/ingestion/stream-push.html             |   8 +
 docs/{latest => 0.22.1}/ingestion/tasks.html       |  56 +++---
 docs/{latest => 0.22.1}/ingestion/tranquility.html |  12 +-
 docs/0.22.1/ingestion/update-existing-data.html    |   8 +
 docs/0.22.1/misc/cluster-setup.html                |   8 +
 docs/0.22.1/misc/evaluate.html                     |   8 +
 docs/{latest => 0.22.1}/misc/math-expr.html        |  26 +--
 docs/{latest => 0.22.1}/misc/papers-and-talks.html |   8 +-
 docs/0.22.1/misc/tasks.html                        |   8 +
 docs/{latest => 0.22.1}/operations/alerts.html     |   8 +-
 .../operations/api-reference.html                  |  62 +++----
 docs/{latest => 0.22.1}/operations/auth-ldap.html  |  12 +-
 .../operations/basic-cluster-tuning.html           |  26 +--
 .../operations/clean-metadata-store.html           |  22 +--
 .../operations/deep-storage-migration.html         |  16 +-
 .../operations/druid-console.html                  |  20 +-
 .../operations/dump-segment.html                   |  12 +-
 .../operations/dynamic-config-provider.html        |  14 +-
 .../operations/export-metadata.html                |   8 +-
 .../operations/getting-started.html                |  20 +-
 .../operations/high-availability.html              |   8 +-
 .../operations/http-compression.html               |   8 +-
 docs/0.22.1/operations/including-extensions.html   |   8 +
 .../operations/insert-segment-to-db.html           |   8 +-
 docs/{latest => 0.22.1}/operations/kubernetes.html |  10 +-
 .../operations/management-uis.html                 |  10 +-
 .../operations/metadata-migration.html             |  16 +-
 docs/{latest => 0.22.1}/operations/metrics.html    |  14 +-
 docs/0.22.1/operations/multitenancy.html           |   8 +
 .../operations/other-hadoop.html                   |  26 +--
 .../operations/password-provider.html              |  10 +-
 docs/0.22.1/operations/performance-faq.html        |   8 +
 docs/{latest => 0.22.1}/operations/pull-deps.html  |  24 +--
 docs/0.22.1/operations/recommendations.html        |   8 +
 .../operations/reset-cluster.html                  |   8 +-
 .../operations/rolling-updates.html                |   8 +-
 .../operations/rule-configuration.html             |  10 +-
 .../operations/security-overview.html              |  16 +-
 .../operations/security-user-auth.html             |  16 +-
 .../operations/segment-optimization.html           |  26 +--
 .../operations/single-server.html                  |  12 +-
 .../{latest => 0.22.1}/operations/tls-support.html |  20 +-
 .../operations/use_sbt_to_build_fat_jar.html       |   8 +-
 docs/{latest => 0.22.1}/querying/aggregations.html |  36 ++--
 docs/{latest => 0.22.1}/querying/caching.html      |  28 +--
 docs/{latest => 0.22.1}/querying/datasource.html   |  44 ++---
 .../querying/datasourcemetadataquery.html          |  14 +-
 .../querying/dimensionspecs.html                   |  36 ++--
 docs/{latest => 0.22.1}/querying/filters.html      |  28 +--
 .../{latest => 0.22.1}/querying/granularities.html |  18 +-
 docs/{latest => 0.22.1}/querying/groupbyquery.html |  50 ++---
 docs/{latest => 0.22.1}/querying/having.html       |  14 +-
 docs/{latest => 0.22.1}/querying/hll-old.html      |  10 +-
 docs/{latest => 0.22.1}/querying/joins.html        |  18 +-
 docs/{latest => 0.22.1}/querying/limitspec.html    |  16 +-
 docs/{latest => 0.22.1}/querying/lookups.html      |  32 ++--
 .../querying/multi-value-dimensions.html           |  26 +--
 docs/{latest => 0.22.1}/querying/multitenancy.html |  18 +-
 docs/0.22.1/querying/optimizations.html            |   8 +
 .../querying/post-aggregations.html                |  18 +-
 .../{latest => 0.22.1}/querying/query-context.html |  34 ++--
 .../querying/query-execution.html                  |  38 ++--
 docs/{latest => 0.22.1}/querying/querying.html     |  34 ++--
 docs/{latest => 0.22.1}/querying/scan-query.html   |  16 +-
 docs/{latest => 0.22.1}/querying/searchquery.html  |  20 +-
 docs/0.22.1/querying/searchqueryspec.html          |   8 +
 .../querying/segmentmetadataquery.html             |  20 +-
 docs/{latest => 0.22.1}/querying/select-query.html |  10 +-
 .../querying/sorting-orders.html                   |  14 +-
 docs/{latest => 0.22.1}/querying/sql.html          | 148 +++++++--------
 .../querying/timeboundaryquery.html                |  16 +-
 .../querying/timeseriesquery.html                  |  24 +--
 .../querying/topnmetricspec.html                   |  16 +-
 docs/{latest => 0.22.1}/querying/topnquery.html    |  34 ++--
 .../{latest => 0.22.1}/querying/using-caching.html |  26 +--
 .../querying/virtual-columns.html                  |  14 +-
 .../tutorials/booting-a-production-cluster.html    |   8 +
 docs/{latest => 0.22.1}/tutorials/cluster.html     |  46 ++---
 docs/{latest => 0.22.1}/tutorials/docker.html      |  24 +--
 docs/0.22.1/tutorials/examples.html                |   8 +
 docs/0.22.1/tutorials/firewall.html                |   8 +
 docs/{latest => 0.22.1}/tutorials/index.html       |  56 +++---
 docs/0.22.1/tutorials/ingestion-streams.html       |   8 +
 docs/0.22.1/tutorials/ingestion.html               |   8 +
 docs/0.22.1/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           |  22 +--
 .../tutorials/tutorial-batch.html                  |  16 +-
 .../tutorials/tutorial-compaction.html             |  18 +-
 .../tutorials/tutorial-delete-data.html            |  10 +-
 .../tutorials/tutorial-ingestion-spec.html         |  14 +-
 .../tutorials/tutorial-kafka.html                  |  22 +--
 .../tutorials/tutorial-kerberos-hadoop.html        |   8 +-
 .../tutorials/tutorial-loading-batch-data.html     |   8 +
 .../tutorials/tutorial-loading-streaming-data.html |   8 +
 .../tutorials/tutorial-query.html                  |  26 +--
 .../tutorials/tutorial-retention.html              |  14 +-
 .../tutorials/tutorial-rollup.html                 |  14 +-
 .../tutorials/tutorial-the-druid-cluster.html      |   8 +
 docs/0.22.1/tutorials/tutorial-tranquility.html    |   8 +
 .../tutorials/tutorial-transform-spec.html         |  12 +-
 .../tutorials/tutorial-update-data.html            |  12 +-
 .../latest/comparisons/druid-vs-elasticsearch.html |   4 +-
 docs/latest/comparisons/druid-vs-key-value.html    |   4 +-
 docs/latest/comparisons/druid-vs-kudu.html         |   4 +-
 docs/latest/comparisons/druid-vs-redshift.html     |   4 +-
 docs/latest/comparisons/druid-vs-spark.html        |   4 +-
 .../latest/comparisons/druid-vs-sql-on-hadoop.html |   4 +-
 docs/latest/configuration/human-readable-byte.html |   4 +-
 docs/latest/configuration/index.html               |   4 +-
 docs/latest/configuration/logging.html             |   4 +-
 docs/latest/dependencies/deep-storage.html         |   4 +-
 docs/latest/dependencies/metadata-storage.html     |   4 +-
 docs/latest/dependencies/zookeeper.html            |   4 +-
 docs/latest/design/architecture.html               |   4 +-
 docs/latest/design/auth.html                       |   4 +-
 docs/latest/design/broker.html                     |   4 +-
 docs/latest/design/coordinator.html                |   4 +-
 .../design/extensions-contrib/dropwizard.html      |   4 +-
 docs/latest/design/historical.html                 |   4 +-
 docs/latest/design/index.html                      |   4 +-
 docs/latest/design/indexer.html                    |   4 +-
 docs/latest/design/indexing-service.html           |   4 +-
 docs/latest/design/middlemanager.html              |   4 +-
 docs/latest/design/overlord.html                   |   4 +-
 docs/latest/design/peons.html                      |   4 +-
 docs/latest/design/processes.html                  |   4 +-
 docs/latest/design/router.html                     |   4 +-
 docs/latest/design/segments.html                   |   4 +-
 docs/latest/development/build.html                 |   4 +-
 docs/latest/development/experimental.html          |   4 +-
 .../development/extensions-contrib/aliyun-oss.html |   4 +-
 .../extensions-contrib/ambari-metrics-emitter.html |   4 +-
 .../development/extensions-contrib/cassandra.html  |   4 +-
 .../development/extensions-contrib/cloudfiles.html |   4 +-
 .../extensions-contrib/distinctcount.html          |   4 +-
 .../extensions-contrib/gce-extensions.html         |   4 +-
 .../development/extensions-contrib/graphite.html   |   4 +-
 .../development/extensions-contrib/influx.html     |   4 +-
 .../extensions-contrib/influxdb-emitter.html       |   4 +-
 .../extensions-contrib/kafka-emitter.html          |   4 +-
 .../extensions-contrib/materialized-view.html      |   4 +-
 .../extensions-contrib/momentsketch-quantiles.html |   4 +-
 .../extensions-contrib/moving-average-query.html   |   4 +-
 .../extensions-contrib/opentsdb-emitter.html       |   4 +-
 .../development/extensions-contrib/prometheus.html |   4 +-
 .../extensions-contrib/redis-cache.html            |   4 +-
 .../development/extensions-contrib/sqlserver.html  |   4 +-
 .../development/extensions-contrib/statsd.html     |   4 +-
 .../tdigestsketch-quantiles.html                   |   4 +-
 .../development/extensions-contrib/thrift.html     |   4 +-
 .../extensions-contrib/time-min-max.html           |   4 +-
 .../extensions-core/approximate-histograms.html    |   4 +-
 docs/latest/development/extensions-core/avro.html  |   4 +-
 docs/latest/development/extensions-core/azure.html |   4 +-
 .../development/extensions-core/bloom-filter.html  |   4 +-
 .../extensions-core/datasketches-extension.html    |   4 +-
 .../extensions-core/datasketches-hll.html          |   4 +-
 .../extensions-core/datasketches-quantiles.html    |   4 +-
 .../extensions-core/datasketches-theta.html        |   4 +-
 .../extensions-core/datasketches-tuple.html        |   4 +-
 .../development/extensions-core/druid-aws-rds.html |   4 +-
 .../extensions-core/druid-basic-security.html      |   4 +-
 .../extensions-core/druid-kerberos.html            |   4 +-
 .../development/extensions-core/druid-lookups.html |   4 +-
 .../development/extensions-core/druid-pac4j.html   |   4 +-
 .../extensions-core/druid-ranger-security.html     |   4 +-
 .../development/extensions-core/examples.html      |   4 +-
 .../latest/development/extensions-core/google.html |   4 +-
 docs/latest/development/extensions-core/hdfs.html  |   4 +-
 .../kafka-extraction-namespace.html                |   4 +-
 .../extensions-core/kafka-ingestion.html           |   4 +-
 .../extensions-core/kinesis-ingestion.html         |   4 +-
 .../development/extensions-core/kubernetes.html    |   4 +-
 .../extensions-core/lookups-cached-global.html     |   4 +-
 docs/latest/development/extensions-core/mysql.html |   4 +-
 docs/latest/development/extensions-core/orc.html   |   4 +-
 .../development/extensions-core/parquet.html       |   4 +-
 .../development/extensions-core/postgresql.html    |   4 +-
 .../development/extensions-core/protobuf.html      |   4 +-
 docs/latest/development/extensions-core/s3.html    |   4 +-
 .../extensions-core/simple-client-sslcontext.html  |   4 +-
 docs/latest/development/extensions-core/stats.html |   4 +-
 .../development/extensions-core/test-stats.html    |   4 +-
 docs/latest/development/extensions.html            |   4 +-
 docs/latest/development/geo.html                   |   4 +-
 docs/latest/development/javascript.html            |   4 +-
 docs/latest/development/modules.html               |   4 +-
 docs/latest/development/overview.html              |   4 +-
 docs/latest/development/versioning.html            |   4 +-
 docs/latest/ingestion/compaction.html              |   4 +-
 docs/latest/ingestion/data-formats.html            |   4 +-
 docs/latest/ingestion/data-management.html         |   4 +-
 docs/latest/ingestion/data-model.html              |   4 +-
 docs/latest/ingestion/faq.html                     |   4 +-
 docs/latest/ingestion/hadoop.html                  |   4 +-
 docs/latest/ingestion/index.html                   |   4 +-
 docs/latest/ingestion/ingestion-spec.html          |   4 +-
 docs/latest/ingestion/native-batch.html            |   4 +-
 docs/latest/ingestion/partitioning.html            |   4 +-
 docs/latest/ingestion/rollup.html                  |   4 +-
 docs/latest/ingestion/schema-design.html           |   4 +-
 docs/latest/ingestion/standalone-realtime.html     |   4 +-
 docs/latest/ingestion/tasks.html                   |   4 +-
 docs/latest/ingestion/tranquility.html             |   4 +-
 docs/latest/misc/math-expr.html                    |   4 +-
 docs/latest/misc/papers-and-talks.html             |   4 +-
 docs/latest/operations/alerts.html                 |   4 +-
 docs/latest/operations/api-reference.html          |   4 +-
 docs/latest/operations/auth-ldap.html              |   4 +-
 docs/latest/operations/basic-cluster-tuning.html   |   4 +-
 docs/latest/operations/clean-metadata-store.html   |   4 +-
 docs/latest/operations/deep-storage-migration.html |   4 +-
 docs/latest/operations/druid-console.html          |   4 +-
 docs/latest/operations/dump-segment.html           |   4 +-
 .../latest/operations/dynamic-config-provider.html |   4 +-
 docs/latest/operations/export-metadata.html        |   4 +-
 docs/latest/operations/getting-started.html        |   4 +-
 docs/latest/operations/high-availability.html      |   4 +-
 docs/latest/operations/http-compression.html       |   4 +-
 docs/latest/operations/insert-segment-to-db.html   |   4 +-
 docs/latest/operations/kubernetes.html             |   4 +-
 docs/latest/operations/management-uis.html         |   4 +-
 docs/latest/operations/metadata-migration.html     |   4 +-
 docs/latest/operations/metrics.html                |   4 +-
 docs/latest/operations/other-hadoop.html           |   4 +-
 docs/latest/operations/password-provider.html      |   4 +-
 docs/latest/operations/pull-deps.html              |  16 +-
 docs/latest/operations/reset-cluster.html          |   4 +-
 docs/latest/operations/rolling-updates.html        |   4 +-
 docs/latest/operations/rule-configuration.html     |   4 +-
 docs/latest/operations/security-overview.html      |   4 +-
 docs/latest/operations/security-user-auth.html     |   4 +-
 docs/latest/operations/segment-optimization.html   |   4 +-
 docs/latest/operations/single-server.html          |   4 +-
 docs/latest/operations/tls-support.html            |   4 +-
 .../operations/use_sbt_to_build_fat_jar.html       |   4 +-
 docs/latest/querying/aggregations.html             |   4 +-
 docs/latest/querying/caching.html                  |   4 +-
 docs/latest/querying/datasource.html               |   8 +-
 docs/latest/querying/datasourcemetadataquery.html  |   4 +-
 docs/latest/querying/dimensionspecs.html           |   4 +-
 docs/latest/querying/filters.html                  |   4 +-
 docs/latest/querying/granularities.html            |   4 +-
 docs/latest/querying/groupbyquery.html             |   4 +-
 docs/latest/querying/having.html                   |   4 +-
 docs/latest/querying/hll-old.html                  |   4 +-
 docs/latest/querying/joins.html                    |   4 +-
 docs/latest/querying/limitspec.html                |   4 +-
 docs/latest/querying/lookups.html                  |   4 +-
 docs/latest/querying/multi-value-dimensions.html   |   4 +-
 docs/latest/querying/multitenancy.html             |   4 +-
 docs/latest/querying/post-aggregations.html        |   4 +-
 docs/latest/querying/query-context.html            |   4 +-
 docs/latest/querying/query-execution.html          |   4 +-
 docs/latest/querying/querying.html                 |   4 +-
 docs/latest/querying/scan-query.html               |   4 +-
 docs/latest/querying/searchquery.html              |   4 +-
 docs/latest/querying/segmentmetadataquery.html     |   4 +-
 docs/latest/querying/select-query.html             |   4 +-
 docs/latest/querying/sorting-orders.html           |   4 +-
 docs/latest/querying/sql.html                      |   4 +-
 docs/latest/querying/timeboundaryquery.html        |   4 +-
 docs/latest/querying/timeseriesquery.html          |   4 +-
 docs/latest/querying/topnmetricspec.html           |   4 +-
 docs/latest/querying/topnquery.html                |   4 +-
 docs/latest/querying/using-caching.html            |   4 +-
 docs/latest/querying/virtual-columns.html          |   4 +-
 docs/latest/tutorials/cluster.html                 |  14 +-
 docs/latest/tutorials/docker.html                  |  12 +-
 docs/latest/tutorials/index.html                   |  26 +--
 docs/latest/tutorials/tutorial-batch-hadoop.html   |   8 +-
 docs/latest/tutorials/tutorial-batch.html          |   6 +-
 docs/latest/tutorials/tutorial-compaction.html     |   4 +-
 docs/latest/tutorials/tutorial-delete-data.html    |   4 +-
 docs/latest/tutorials/tutorial-ingestion-spec.html |   6 +-
 docs/latest/tutorials/tutorial-kafka.html          |   4 +-
 .../latest/tutorials/tutorial-kerberos-hadoop.html |   4 +-
 docs/latest/tutorials/tutorial-query.html          |   4 +-
 docs/latest/tutorials/tutorial-retention.html      |   4 +-
 docs/latest/tutorials/tutorial-rollup.html         |   6 +-
 docs/latest/tutorials/tutorial-transform-spec.html |   4 +-
 docs/latest/tutorials/tutorial-update-data.html    |   4 +-
 release.sh                                         |   6 +-
 642 files changed, 3998 insertions(+), 2430 deletions(-)

diff --git a/_config.yml b/_config.yml
index 44893ba..201fa88 100644
--- a/_config.yml
+++ b/_config.yml
@@ -28,8 +28,8 @@ description: 'Real²time Exploratory Analytics on Large Datasets'
 druid_versions:
   - release: 0.22
     versions:
-      - version: 0.22.0
-        date: 2021-09-22
+      - version: 0.22.1
+        date: 2021-12-11
   - release: 0.21
     versions:
       - version: 0.21.1
diff --git a/docs/0.22.1/About-Experimental-Features.html b/docs/0.22.1/About-Experimental-Features.html
new file mode 100644
index 0000000..4c16ee2
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Aggregations.html b/docs/0.22.1/Aggregations.html
new file mode 100644
index 0000000..08794b9
--- /dev/null
+++ b/docs/0.22.1/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.22.1/ApproxHisto.html b/docs/0.22.1/ApproxHisto.html
new file mode 100644
index 0000000..4e654a9
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Batch-ingestion.html b/docs/0.22.1/Batch-ingestion.html
new file mode 100644
index 0000000..b571cbd
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Booting-a-production-cluster.html b/docs/0.22.1/Booting-a-production-cluster.html
new file mode 100644
index 0000000..bd0e468
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Broker-Config.html b/docs/0.22.1/Broker-Config.html
new file mode 100644
index 0000000..01b38ae
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Broker.html b/docs/0.22.1/Broker.html
new file mode 100644
index 0000000..a28166f
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Build-from-source.html b/docs/0.22.1/Build-from-source.html
new file mode 100644
index 0000000..30898e7
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Cassandra-Deep-Storage.html b/docs/0.22.1/Cassandra-Deep-Storage.html
new file mode 100644
index 0000000..31d6841
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Cluster-setup.html b/docs/0.22.1/Cluster-setup.html
new file mode 100644
index 0000000..bd0e468
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Compute.html b/docs/0.22.1/Compute.html
new file mode 100644
index 0000000..c3bea73
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Concepts-and-Terminology.html b/docs/0.22.1/Concepts-and-Terminology.html
new file mode 100644
index 0000000..57986ec
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Configuration.html b/docs/0.22.1/Configuration.html
new file mode 100644
index 0000000..ea6ae53
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Contribute.html b/docs/0.22.1/Contribute.html
new file mode 100644
index 0000000..ea71408
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Coordinator-Config.html b/docs/0.22.1/Coordinator-Config.html
new file mode 100644
index 0000000..bb3def4
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Coordinator.html b/docs/0.22.1/Coordinator.html
new file mode 100644
index 0000000..accfe43
--- /dev/null
+++ b/docs/0.22.1/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.22.1/DataSource.html b/docs/0.22.1/DataSource.html
new file mode 100644
index 0000000..cde1771
--- /dev/null
+++ b/docs/0.22.1/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.22.1/DataSourceMetadataQuery.html b/docs/0.22.1/DataSourceMetadataQuery.html
new file mode 100644
index 0000000..6c7cd57
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Data_formats.html b/docs/0.22.1/Data_formats.html
new file mode 100644
index 0000000..ae6f673
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Deep-Storage.html b/docs/0.22.1/Deep-Storage.html
new file mode 100644
index 0000000..07a7cd5
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Design.html b/docs/0.22.1/Design.html
new file mode 100644
index 0000000..57986ec
--- /dev/null
+++ b/docs/0.22.1/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.22.1/DimensionSpecs.html b/docs/0.22.1/DimensionSpecs.html
new file mode 100644
index 0000000..7ab536a
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Download.html b/docs/0.22.1/Download.html
new file mode 100644
index 0000000..cfb2d2b
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Druid-Personal-Demo-Cluster.html b/docs/0.22.1/Druid-Personal-Demo-Cluster.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Druid-vs-Cassandra.html b/docs/0.22.1/Druid-vs-Cassandra.html
new file mode 100644
index 0000000..1a0249a
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Druid-vs-Elasticsearch.html b/docs/0.22.1/Druid-vs-Elasticsearch.html
new file mode 100644
index 0000000..5d519fb
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Druid-vs-Hadoop.html b/docs/0.22.1/Druid-vs-Hadoop.html
new file mode 100644
index 0000000..d5202e7
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Druid-vs-Impala-or-Shark.html b/docs/0.22.1/Druid-vs-Impala-or-Shark.html
new file mode 100644
index 0000000..d5202e7
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Druid-vs-Redshift.html b/docs/0.22.1/Druid-vs-Redshift.html
new file mode 100644
index 0000000..4199696
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Druid-vs-Spark.html b/docs/0.22.1/Druid-vs-Spark.html
new file mode 100644
index 0000000..31713ad
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Druid-vs-Vertica.html b/docs/0.22.1/Druid-vs-Vertica.html
new file mode 100644
index 0000000..4199696
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Evaluate.html b/docs/0.22.1/Evaluate.html
new file mode 100644
index 0000000..bd0e468
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Examples.html b/docs/0.22.1/Examples.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Filters.html b/docs/0.22.1/Filters.html
new file mode 100644
index 0000000..a318095
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Firehose.html b/docs/0.22.1/Firehose.html
new file mode 100644
index 0000000..5b2dcc1
--- /dev/null
+++ b/docs/0.22.1/Firehose.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="ingestion/native-batch.html#firehoses-deprecated">
+<meta http-equiv="refresh" content="0; url=ingestion/native-batch.html#firehoses-deprecated">
+<h1>Redirecting...</h1>
+<a href="ingestion/native-batch.html#firehoses-deprecated">Click here if you are not redirected.</a>
+<script>location="ingestion/native-batch.html#firehoses-deprecated"</script>
diff --git a/docs/0.22.1/GeographicQueries.html b/docs/0.22.1/GeographicQueries.html
new file mode 100644
index 0000000..566645a
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Granularities.html b/docs/0.22.1/Granularities.html
new file mode 100644
index 0000000..05ddc32
--- /dev/null
+++ b/docs/0.22.1/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.22.1/GroupByQuery.html b/docs/0.22.1/GroupByQuery.html
new file mode 100644
index 0000000..51a97c6
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Hadoop-Configuration.html b/docs/0.22.1/Hadoop-Configuration.html
new file mode 100644
index 0000000..7e5143c
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Having.html b/docs/0.22.1/Having.html
new file mode 100644
index 0000000..7715018
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Historical-Config.html b/docs/0.22.1/Historical-Config.html
new file mode 100644
index 0000000..20901ec
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Historical.html b/docs/0.22.1/Historical.html
new file mode 100644
index 0000000..4654f6a
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Home.html b/docs/0.22.1/Home.html
new file mode 100644
index 0000000..57986ec
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Including-Extensions.html b/docs/0.22.1/Including-Extensions.html
new file mode 100644
index 0000000..89a2675
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Indexing-Service-Config.html b/docs/0.22.1/Indexing-Service-Config.html
new file mode 100644
index 0000000..b6aa387
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Indexing-Service.html b/docs/0.22.1/Indexing-Service.html
new file mode 100644
index 0000000..20f139d
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Ingestion-FAQ.html b/docs/0.22.1/Ingestion-FAQ.html
new file mode 100644
index 0000000..dddd3a4
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Ingestion-overview.html b/docs/0.22.1/Ingestion-overview.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Ingestion.html b/docs/0.22.1/Ingestion.html
new file mode 100644
index 0000000..b571cbd
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Integrating-Druid-With-Other-Technologies.html b/docs/0.22.1/Integrating-Druid-With-Other-Technologies.html
new file mode 100644
index 0000000..b571cbd
--- /dev/null
+++ b/docs/0.22.1/Integrating-Druid-With-Other-Technologies.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.22.1/Kafka-Eight.html b/docs/0.22.1/Kafka-Eight.html
new file mode 100644
index 0000000..b654b03
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Libraries.html b/docs/0.22.1/Libraries.html
new file mode 100644
index 0000000..545edee
--- /dev/null
+++ b/docs/0.22.1/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.22.1/LimitSpec.html b/docs/0.22.1/LimitSpec.html
new file mode 100644
index 0000000..8b6a28d
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Loading-Your-Data.html b/docs/0.22.1/Loading-Your-Data.html
new file mode 100644
index 0000000..b571cbd
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Logging.html b/docs/0.22.1/Logging.html
new file mode 100644
index 0000000..3b2b135
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Master.html b/docs/0.22.1/Master.html
new file mode 100644
index 0000000..c3bea73
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Metadata-storage.html b/docs/0.22.1/Metadata-storage.html
new file mode 100644
index 0000000..f13b365
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Metrics.html b/docs/0.22.1/Metrics.html
new file mode 100644
index 0000000..011ab0b
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Middlemanager.html b/docs/0.22.1/Middlemanager.html
new file mode 100644
index 0000000..8e9da09
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Modules.html b/docs/0.22.1/Modules.html
new file mode 100644
index 0000000..93a8be1
--- /dev/null
+++ b/docs/0.22.1/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.22.1/MySQL.html b/docs/0.22.1/MySQL.html
new file mode 100644
index 0000000..5c90272
--- /dev/null
+++ b/docs/0.22.1/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.22.1/OrderBy.html b/docs/0.22.1/OrderBy.html
new file mode 100644
index 0000000..8b6a28d
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Other-Hadoop.html b/docs/0.22.1/Other-Hadoop.html
new file mode 100644
index 0000000..b7bdd99
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Papers-and-talks.html b/docs/0.22.1/Papers-and-talks.html
new file mode 100644
index 0000000..4602adb
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Peons.html b/docs/0.22.1/Peons.html
new file mode 100644
index 0000000..e9793f4
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Performance-FAQ.html b/docs/0.22.1/Performance-FAQ.html
new file mode 100644
index 0000000..e6da9b2
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Plumber.html b/docs/0.22.1/Plumber.html
new file mode 100644
index 0000000..b571cbd
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Post-aggregations.html b/docs/0.22.1/Post-aggregations.html
new file mode 100644
index 0000000..e0c4e24
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Production-Cluster-Configuration.html b/docs/0.22.1/Production-Cluster-Configuration.html
new file mode 100644
index 0000000..bd0e468
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Query-Context.html b/docs/0.22.1/Query-Context.html
new file mode 100644
index 0000000..711a21e
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Querying-your-data.html b/docs/0.22.1/Querying-your-data.html
new file mode 100644
index 0000000..702ed7a
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Querying.html b/docs/0.22.1/Querying.html
new file mode 100644
index 0000000..702ed7a
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Realtime-Config.html b/docs/0.22.1/Realtime-Config.html
new file mode 100644
index 0000000..3b8f656
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Realtime-ingestion.html b/docs/0.22.1/Realtime-ingestion.html
new file mode 100644
index 0000000..b571cbd
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Realtime.html b/docs/0.22.1/Realtime.html
new file mode 100644
index 0000000..3b8f656
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Recommendations.html b/docs/0.22.1/Recommendations.html
new file mode 100644
index 0000000..e6da9b2
--- /dev/null
+++ b/docs/0.22.1/Recommendations.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.22.1/Rolling-Updates.html b/docs/0.22.1/Rolling-Updates.html
new file mode 100644
index 0000000..90bc8b0
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Router.html b/docs/0.22.1/Router.html
new file mode 100644
index 0000000..64ba7f4
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Rule-Configuration.html b/docs/0.22.1/Rule-Configuration.html
new file mode 100644
index 0000000..19c0e7e
--- /dev/null
+++ b/docs/0.22.1/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.22.1/SearchQuery.html b/docs/0.22.1/SearchQuery.html
new file mode 100644
index 0000000..ee66987
--- /dev/null
+++ b/docs/0.22.1/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.22.1/SearchQuerySpec.html b/docs/0.22.1/SearchQuerySpec.html
new file mode 100644
index 0000000..ee66987
--- /dev/null
+++ b/docs/0.22.1/SearchQuerySpec.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.22.1/SegmentMetadataQuery.html b/docs/0.22.1/SegmentMetadataQuery.html
new file mode 100644
index 0000000..21294cb
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Segments.html b/docs/0.22.1/Segments.html
new file mode 100644
index 0000000..040d647
--- /dev/null
+++ b/docs/0.22.1/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.22.1/SelectQuery.html b/docs/0.22.1/SelectQuery.html
new file mode 100644
index 0000000..526110d
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Simple-Cluster-Configuration.html b/docs/0.22.1/Simple-Cluster-Configuration.html
new file mode 100644
index 0000000..bd0e468
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Spatial-Filters.html b/docs/0.22.1/Spatial-Filters.html
new file mode 100644
index 0000000..566645a
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Spatial-Indexing.html b/docs/0.22.1/Spatial-Indexing.html
new file mode 100644
index 0000000..566645a
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Stand-Alone-With-Riak-CS.html b/docs/0.22.1/Stand-Alone-With-Riak-CS.html
new file mode 100644
index 0000000..57986ec
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Support.html b/docs/0.22.1/Support.html
new file mode 100644
index 0000000..ea71408
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Tasks.html b/docs/0.22.1/Tasks.html
new file mode 100644
index 0000000..71e90f8
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Thanks.html b/docs/0.22.1/Thanks.html
new file mode 100644
index 0000000..ea71408
--- /dev/null
+++ b/docs/0.22.1/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.22.1/TimeBoundaryQuery.html b/docs/0.22.1/TimeBoundaryQuery.html
new file mode 100644
index 0000000..8e512e1
--- /dev/null
+++ b/docs/0.22.1/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.22.1/TimeseriesQuery.html b/docs/0.22.1/TimeseriesQuery.html
new file mode 100644
index 0000000..8d7f3e8
--- /dev/null
+++ b/docs/0.22.1/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.22.1/TopNMetricSpec.html b/docs/0.22.1/TopNMetricSpec.html
new file mode 100644
index 0000000..14acf27
--- /dev/null
+++ b/docs/0.22.1/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.22.1/TopNQuery.html b/docs/0.22.1/TopNQuery.html
new file mode 100644
index 0000000..dd719fd
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Tutorial-A-First-Look-at-Druid.html b/docs/0.22.1/Tutorial-A-First-Look-at-Druid.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Tutorial-All-About-Queries.html b/docs/0.22.1/Tutorial-All-About-Queries.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Tutorial-Loading-Batch-Data.html b/docs/0.22.1/Tutorial-Loading-Batch-Data.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Tutorial-Loading-Streaming-Data.html b/docs/0.22.1/Tutorial-Loading-Streaming-Data.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Tutorial-The-Druid-Cluster.html b/docs/0.22.1/Tutorial-The-Druid-Cluster.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Tutorial:-A-First-Look-at-Druid.html b/docs/0.22.1/Tutorial:-A-First-Look-at-Druid.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Tutorial:-All-About-Queries.html b/docs/0.22.1/Tutorial:-All-About-Queries.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Tutorial:-Loading-Batch-Data.html b/docs/0.22.1/Tutorial:-Loading-Batch-Data.html
new file mode 100644
index 0000000..744d5b6
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Tutorial:-Loading-Streaming-Data.html b/docs/0.22.1/Tutorial:-Loading-Streaming-Data.html
new file mode 100644
index 0000000..487fb6d
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Tutorial:-Loading-Your-Data-Part-1.html b/docs/0.22.1/Tutorial:-Loading-Your-Data-Part-1.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Tutorial:-Loading-Your-Data-Part-2.html b/docs/0.22.1/Tutorial:-Loading-Your-Data-Part-2.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Tutorial:-The-Druid-Cluster.html b/docs/0.22.1/Tutorial:-The-Druid-Cluster.html
new file mode 100644
index 0000000..bd0e468
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Tutorial:-Webstream.html b/docs/0.22.1/Tutorial:-Webstream.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Tutorials.html b/docs/0.22.1/Tutorials.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Twitter-Tutorial.html b/docs/0.22.1/Twitter-Tutorial.html
new file mode 100644
index 0000000..94e7c06
--- /dev/null
+++ b/docs/0.22.1/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.22.1/Versioning.html b/docs/0.22.1/Versioning.html
new file mode 100644
index 0000000..fe2eb7c
--- /dev/null
+++ b/docs/0.22.1/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.22.1/ZooKeeper.html b/docs/0.22.1/ZooKeeper.html
new file mode 100644
index 0000000..52406ac
--- /dev/null
+++ b/docs/0.22.1/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.22.1/alerts.html b/docs/0.22.1/alerts.html
new file mode 100644
index 0000000..6286bcd
--- /dev/null
+++ b/docs/0.22.1/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.22.1/assets/datasources-action-button.png b/docs/0.22.1/assets/datasources-action-button.png
new file mode 100644
index 0000000..6a52b84
Binary files /dev/null and b/docs/0.22.1/assets/datasources-action-button.png differ
diff --git a/docs/0.22.1/assets/druid-architecture.png b/docs/0.22.1/assets/druid-architecture.png
new file mode 100644
index 0000000..954a87b
Binary files /dev/null and b/docs/0.22.1/assets/druid-architecture.png differ
diff --git a/docs/0.22.1/assets/druid-column-types.png b/docs/0.22.1/assets/druid-column-types.png
new file mode 100644
index 0000000..9db56c0
Binary files /dev/null and b/docs/0.22.1/assets/druid-column-types.png differ
diff --git a/docs/0.22.1/assets/druid-dataflow-2x.png b/docs/0.22.1/assets/druid-dataflow-2x.png
new file mode 100644
index 0000000..ab1c583
Binary files /dev/null and b/docs/0.22.1/assets/druid-dataflow-2x.png differ
diff --git a/docs/0.22.1/assets/druid-dataflow-3.png b/docs/0.22.1/assets/druid-dataflow-3.png
new file mode 100644
index 0000000..355215c
Binary files /dev/null and b/docs/0.22.1/assets/druid-dataflow-3.png differ
diff --git a/docs/0.22.1/assets/druid-manage-1.png b/docs/0.22.1/assets/druid-manage-1.png
new file mode 100644
index 0000000..0d10c6e
Binary files /dev/null and b/docs/0.22.1/assets/druid-manage-1.png differ
diff --git a/docs/0.22.1/assets/druid-timeline.png b/docs/0.22.1/assets/druid-timeline.png
new file mode 100644
index 0000000..40380e2
Binary files /dev/null and b/docs/0.22.1/assets/druid-timeline.png differ
diff --git a/docs/0.22.1/assets/indexing_service.png b/docs/0.22.1/assets/indexing_service.png
new file mode 100644
index 0000000..a4462a4
Binary files /dev/null and b/docs/0.22.1/assets/indexing_service.png differ
diff --git a/docs/0.22.1/assets/native-queries-01.png b/docs/0.22.1/assets/native-queries-01.png
new file mode 100644
index 0000000..27fd29b
Binary files /dev/null and b/docs/0.22.1/assets/native-queries-01.png differ
diff --git a/docs/0.22.1/assets/security-model-1.png b/docs/0.22.1/assets/security-model-1.png
new file mode 100644
index 0000000..55c7f24
Binary files /dev/null and b/docs/0.22.1/assets/security-model-1.png differ
diff --git a/docs/0.22.1/assets/security-model-2.png b/docs/0.22.1/assets/security-model-2.png
new file mode 100644
index 0000000..dcb256b
Binary files /dev/null and b/docs/0.22.1/assets/security-model-2.png differ
diff --git a/docs/0.22.1/assets/segmentPropagation.png b/docs/0.22.1/assets/segmentPropagation.png
new file mode 100644
index 0000000..e1ec820
Binary files /dev/null and b/docs/0.22.1/assets/segmentPropagation.png differ
diff --git a/docs/0.22.1/assets/tutorial-batch-data-loader-00.png b/docs/0.22.1/assets/tutorial-batch-data-loader-00.png
new file mode 100644
index 0000000..793b6c1
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-batch-data-loader-00.png differ
diff --git a/docs/0.22.1/assets/tutorial-batch-data-loader-01.png b/docs/0.22.1/assets/tutorial-batch-data-loader-01.png
new file mode 100644
index 0000000..2ff1d63
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-batch-data-loader-01.png differ
diff --git a/docs/0.22.1/assets/tutorial-batch-data-loader-015.png b/docs/0.22.1/assets/tutorial-batch-data-loader-015.png
new file mode 100644
index 0000000..fd588ca
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-batch-data-loader-015.png differ
diff --git a/docs/0.22.1/assets/tutorial-batch-data-loader-02.png b/docs/0.22.1/assets/tutorial-batch-data-loader-02.png
new file mode 100644
index 0000000..736188c
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-batch-data-loader-02.png differ
diff --git a/docs/0.22.1/assets/tutorial-batch-data-loader-03.png b/docs/0.22.1/assets/tutorial-batch-data-loader-03.png
new file mode 100644
index 0000000..74bb8c8
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-batch-data-loader-03.png differ
diff --git a/docs/0.22.1/assets/tutorial-batch-data-loader-04.png b/docs/0.22.1/assets/tutorial-batch-data-loader-04.png
new file mode 100644
index 0000000..e4237cd
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-batch-data-loader-04.png differ
diff --git a/docs/0.22.1/assets/tutorial-batch-data-loader-05.png b/docs/0.22.1/assets/tutorial-batch-data-loader-05.png
new file mode 100644
index 0000000..d245dde
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-batch-data-loader-05.png differ
diff --git a/docs/0.22.1/assets/tutorial-batch-data-loader-06.png b/docs/0.22.1/assets/tutorial-batch-data-loader-06.png
new file mode 100644
index 0000000..285fd57
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-batch-data-loader-06.png differ
diff --git a/docs/0.22.1/assets/tutorial-batch-data-loader-07.png b/docs/0.22.1/assets/tutorial-batch-data-loader-07.png
new file mode 100644
index 0000000..481838d
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-batch-data-loader-07.png differ
diff --git a/docs/0.22.1/assets/tutorial-batch-data-loader-08.png b/docs/0.22.1/assets/tutorial-batch-data-loader-08.png
new file mode 100644
index 0000000..b64c5a4
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-batch-data-loader-08.png differ
diff --git a/docs/0.22.1/assets/tutorial-batch-data-loader-09.png b/docs/0.22.1/assets/tutorial-batch-data-loader-09.png
new file mode 100644
index 0000000..bec3085
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-batch-data-loader-09.png differ
diff --git a/docs/0.22.1/assets/tutorial-batch-data-loader-10.png b/docs/0.22.1/assets/tutorial-batch-data-loader-10.png
new file mode 100644
index 0000000..857a5a5
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-batch-data-loader-10.png differ
diff --git a/docs/0.22.1/assets/tutorial-batch-data-loader-11.png b/docs/0.22.1/assets/tutorial-batch-data-loader-11.png
new file mode 100644
index 0000000..bf7e304
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-batch-data-loader-11.png differ
diff --git a/docs/0.22.1/assets/tutorial-batch-data-loader-12.png b/docs/0.22.1/assets/tutorial-batch-data-loader-12.png
new file mode 100644
index 0000000..f195b9c
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-batch-data-loader-12.png differ
diff --git a/docs/0.22.1/assets/tutorial-batch-submit-task-01.png b/docs/0.22.1/assets/tutorial-batch-submit-task-01.png
new file mode 100644
index 0000000..01b9142
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-batch-submit-task-01.png differ
diff --git a/docs/0.22.1/assets/tutorial-batch-submit-task-02.png b/docs/0.22.1/assets/tutorial-batch-submit-task-02.png
new file mode 100644
index 0000000..ba7caeb
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-batch-submit-task-02.png differ
diff --git a/docs/0.22.1/assets/tutorial-compaction-01.png b/docs/0.22.1/assets/tutorial-compaction-01.png
new file mode 100644
index 0000000..aeb9bf3
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-compaction-01.png differ
diff --git a/docs/0.22.1/assets/tutorial-compaction-02.png b/docs/0.22.1/assets/tutorial-compaction-02.png
new file mode 100644
index 0000000..836d8a7
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-compaction-02.png differ
diff --git a/docs/0.22.1/assets/tutorial-compaction-03.png b/docs/0.22.1/assets/tutorial-compaction-03.png
new file mode 100644
index 0000000..d51f8f8
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-compaction-03.png differ
diff --git a/docs/0.22.1/assets/tutorial-compaction-04.png b/docs/0.22.1/assets/tutorial-compaction-04.png
new file mode 100644
index 0000000..46c5b1d
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-compaction-04.png differ
diff --git a/docs/0.22.1/assets/tutorial-compaction-05.png b/docs/0.22.1/assets/tutorial-compaction-05.png
new file mode 100644
index 0000000..e692694
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-compaction-05.png differ
diff --git a/docs/0.22.1/assets/tutorial-compaction-06.png b/docs/0.22.1/assets/tutorial-compaction-06.png
new file mode 100644
index 0000000..55c999f
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-compaction-06.png differ
diff --git a/docs/0.22.1/assets/tutorial-compaction-07.png b/docs/0.22.1/assets/tutorial-compaction-07.png
new file mode 100644
index 0000000..661e897
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-compaction-07.png differ
diff --git a/docs/0.22.1/assets/tutorial-compaction-08.png b/docs/0.22.1/assets/tutorial-compaction-08.png
new file mode 100644
index 0000000..6e3f1aa
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-compaction-08.png differ
diff --git a/docs/0.22.1/assets/tutorial-deletion-01.png b/docs/0.22.1/assets/tutorial-deletion-01.png
new file mode 100644
index 0000000..de68d38
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-deletion-01.png differ
diff --git a/docs/0.22.1/assets/tutorial-deletion-02.png b/docs/0.22.1/assets/tutorial-deletion-02.png
new file mode 100644
index 0000000..ffe4585
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-deletion-02.png differ
diff --git a/docs/0.22.1/assets/tutorial-deletion-03.png b/docs/0.22.1/assets/tutorial-deletion-03.png
new file mode 100644
index 0000000..221774f
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-deletion-03.png differ
diff --git a/docs/0.22.1/assets/tutorial-kafka-data-loader-01.png b/docs/0.22.1/assets/tutorial-kafka-data-loader-01.png
new file mode 100644
index 0000000..12e2820
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-kafka-data-loader-01.png differ
diff --git a/docs/0.22.1/assets/tutorial-kafka-data-loader-02.png b/docs/0.22.1/assets/tutorial-kafka-data-loader-02.png
new file mode 100644
index 0000000..fb67d06
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-kafka-data-loader-02.png differ
diff --git a/docs/0.22.1/assets/tutorial-kafka-data-loader-03.png b/docs/0.22.1/assets/tutorial-kafka-data-loader-03.png
new file mode 100644
index 0000000..022cd75
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-kafka-data-loader-03.png differ
diff --git a/docs/0.22.1/assets/tutorial-kafka-data-loader-04.png b/docs/0.22.1/assets/tutorial-kafka-data-loader-04.png
new file mode 100644
index 0000000..c6c6da2
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-kafka-data-loader-04.png differ
diff --git a/docs/0.22.1/assets/tutorial-kafka-data-loader-05.png b/docs/0.22.1/assets/tutorial-kafka-data-loader-05.png
new file mode 100644
index 0000000..4b6ba4d
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-kafka-data-loader-05.png differ
diff --git a/docs/0.22.1/assets/tutorial-kafka-data-loader-06.png b/docs/0.22.1/assets/tutorial-kafka-data-loader-06.png
new file mode 100644
index 0000000..bcd9567
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-kafka-data-loader-06.png differ
diff --git a/docs/0.22.1/assets/tutorial-kafka-data-loader-07.png b/docs/0.22.1/assets/tutorial-kafka-data-loader-07.png
new file mode 100644
index 0000000..b2b9c25
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-kafka-data-loader-07.png differ
diff --git a/docs/0.22.1/assets/tutorial-kafka-data-loader-08.png b/docs/0.22.1/assets/tutorial-kafka-data-loader-08.png
new file mode 100644
index 0000000..1b202b4
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-kafka-data-loader-08.png differ
diff --git a/docs/0.22.1/assets/tutorial-kafka-data-loader-09.png b/docs/0.22.1/assets/tutorial-kafka-data-loader-09.png
new file mode 100644
index 0000000..1775ecd
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-kafka-data-loader-09.png differ
diff --git a/docs/0.22.1/assets/tutorial-kafka-data-loader-10.png b/docs/0.22.1/assets/tutorial-kafka-data-loader-10.png
new file mode 100644
index 0000000..cb9c44c
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-kafka-data-loader-10.png differ
diff --git a/docs/0.22.1/assets/tutorial-kafka-data-loader-11.png b/docs/0.22.1/assets/tutorial-kafka-data-loader-11.png
new file mode 100644
index 0000000..9b6aa24
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-kafka-data-loader-11.png differ
diff --git a/docs/0.22.1/assets/tutorial-kafka-data-loader-12.png b/docs/0.22.1/assets/tutorial-kafka-data-loader-12.png
new file mode 100644
index 0000000..c62276d
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-kafka-data-loader-12.png differ
diff --git a/docs/0.22.1/assets/tutorial-kafka-submit-supervisor-01.png b/docs/0.22.1/assets/tutorial-kafka-submit-supervisor-01.png
new file mode 100644
index 0000000..debf3e2
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-kafka-submit-supervisor-01.png differ
diff --git a/docs/0.22.1/assets/tutorial-query-01.png b/docs/0.22.1/assets/tutorial-query-01.png
new file mode 100644
index 0000000..371d35d
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-query-01.png differ
diff --git a/docs/0.22.1/assets/tutorial-query-02.png b/docs/0.22.1/assets/tutorial-query-02.png
new file mode 100644
index 0000000..f459bd6
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-query-02.png differ
diff --git a/docs/0.22.1/assets/tutorial-query-03.png b/docs/0.22.1/assets/tutorial-query-03.png
new file mode 100644
index 0000000..29443ed
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-query-03.png differ
diff --git a/docs/0.22.1/assets/tutorial-query-035.png b/docs/0.22.1/assets/tutorial-query-035.png
new file mode 100644
index 0000000..f22db18
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-query-035.png differ
diff --git a/docs/0.22.1/assets/tutorial-query-04.png b/docs/0.22.1/assets/tutorial-query-04.png
new file mode 100644
index 0000000..9cfef34
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-query-04.png differ
diff --git a/docs/0.22.1/assets/tutorial-query-05.png b/docs/0.22.1/assets/tutorial-query-05.png
new file mode 100644
index 0000000..2fc59ce
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-query-05.png differ
diff --git a/docs/0.22.1/assets/tutorial-query-06.png b/docs/0.22.1/assets/tutorial-query-06.png
new file mode 100644
index 0000000..7056056
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-query-06.png differ
diff --git a/docs/0.22.1/assets/tutorial-query-07.png b/docs/0.22.1/assets/tutorial-query-07.png
new file mode 100644
index 0000000..5997ba2
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-query-07.png differ
diff --git a/docs/0.22.1/assets/tutorial-query-08.png b/docs/0.22.1/assets/tutorial-query-08.png
new file mode 100644
index 0000000..32aa5d4
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-query-08.png differ
diff --git a/docs/0.22.1/assets/tutorial-quickstart-01.png b/docs/0.22.1/assets/tutorial-quickstart-01.png
new file mode 100644
index 0000000..45760ea
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-quickstart-01.png differ
diff --git a/docs/0.22.1/assets/tutorial-retention-00.png b/docs/0.22.1/assets/tutorial-retention-00.png
new file mode 100644
index 0000000..a3f84a9
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-retention-00.png differ
diff --git a/docs/0.22.1/assets/tutorial-retention-01.png b/docs/0.22.1/assets/tutorial-retention-01.png
new file mode 100644
index 0000000..35a97c2
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-retention-01.png differ
diff --git a/docs/0.22.1/assets/tutorial-retention-02.png b/docs/0.22.1/assets/tutorial-retention-02.png
new file mode 100644
index 0000000..f38fad0
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-retention-02.png differ
diff --git a/docs/0.22.1/assets/tutorial-retention-03.png b/docs/0.22.1/assets/tutorial-retention-03.png
new file mode 100644
index 0000000..256836a
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-retention-03.png differ
diff --git a/docs/0.22.1/assets/tutorial-retention-04.png b/docs/0.22.1/assets/tutorial-retention-04.png
new file mode 100644
index 0000000..d39495f
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-retention-04.png differ
diff --git a/docs/0.22.1/assets/tutorial-retention-05.png b/docs/0.22.1/assets/tutorial-retention-05.png
new file mode 100644
index 0000000..638a752
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-retention-05.png differ
diff --git a/docs/0.22.1/assets/tutorial-retention-06.png b/docs/0.22.1/assets/tutorial-retention-06.png
new file mode 100644
index 0000000..f47cbff
Binary files /dev/null and b/docs/0.22.1/assets/tutorial-retention-06.png differ
diff --git a/docs/0.22.1/assets/web-console-01-home-view.png b/docs/0.22.1/assets/web-console-01-home-view.png
new file mode 100644
index 0000000..8388636
Binary files /dev/null and b/docs/0.22.1/assets/web-console-01-home-view.png differ
diff --git a/docs/0.22.1/assets/web-console-02-data-loader-1.png b/docs/0.22.1/assets/web-console-02-data-loader-1.png
new file mode 100644
index 0000000..64c5189
Binary files /dev/null and b/docs/0.22.1/assets/web-console-02-data-loader-1.png differ
diff --git a/docs/0.22.1/assets/web-console-03-data-loader-2.png b/docs/0.22.1/assets/web-console-03-data-loader-2.png
new file mode 100644
index 0000000..ab3aad5
Binary files /dev/null and b/docs/0.22.1/assets/web-console-03-data-loader-2.png differ
diff --git a/docs/0.22.1/assets/web-console-04-datasources.png b/docs/0.22.1/assets/web-console-04-datasources.png
new file mode 100644
index 0000000..267c175
Binary files /dev/null and b/docs/0.22.1/assets/web-console-04-datasources.png differ
diff --git a/docs/0.22.1/assets/web-console-05-retention.png b/docs/0.22.1/assets/web-console-05-retention.png
new file mode 100644
index 0000000..409a624
Binary files /dev/null and b/docs/0.22.1/assets/web-console-05-retention.png differ
diff --git a/docs/0.22.1/assets/web-console-06-segments.png b/docs/0.22.1/assets/web-console-06-segments.png
new file mode 100644
index 0000000..8b6bd83
Binary files /dev/null and b/docs/0.22.1/assets/web-console-06-segments.png differ
diff --git a/docs/0.22.1/assets/web-console-07-supervisors.png b/docs/0.22.1/assets/web-console-07-supervisors.png
new file mode 100644
index 0000000..9d20b32
Binary files /dev/null and b/docs/0.22.1/assets/web-console-07-supervisors.png differ
diff --git a/docs/0.22.1/assets/web-console-08-supervisor-status.png b/docs/0.22.1/assets/web-console-08-supervisor-status.png
new file mode 100644
index 0000000..42625c2
Binary files /dev/null and b/docs/0.22.1/assets/web-console-08-supervisor-status.png differ
diff --git a/docs/0.22.1/assets/web-console-09-task-status.png b/docs/0.22.1/assets/web-console-09-task-status.png
new file mode 100644
index 0000000..1731b62
Binary files /dev/null and b/docs/0.22.1/assets/web-console-09-task-status.png differ
diff --git a/docs/0.22.1/assets/web-console-10-servers.png b/docs/0.22.1/assets/web-console-10-servers.png
new file mode 100644
index 0000000..a0df368
Binary files /dev/null and b/docs/0.22.1/assets/web-console-10-servers.png differ
diff --git a/docs/0.22.1/assets/web-console-11-query-sql.png b/docs/0.22.1/assets/web-console-11-query-sql.png
new file mode 100644
index 0000000..9b7ead5
Binary files /dev/null and b/docs/0.22.1/assets/web-console-11-query-sql.png differ
diff --git a/docs/0.22.1/assets/web-console-12-query-rune.png b/docs/0.22.1/assets/web-console-12-query-rune.png
new file mode 100644
index 0000000..f980cb5
Binary files /dev/null and b/docs/0.22.1/assets/web-console-12-query-rune.png differ
diff --git a/docs/0.22.1/assets/web-console-13-lookups.png b/docs/0.22.1/assets/web-console-13-lookups.png
new file mode 100644
index 0000000..b284d19
Binary files /dev/null and b/docs/0.22.1/assets/web-console-13-lookups.png differ
diff --git a/docs/0.22.1/comparisons/druid-vs-cassandra.html b/docs/0.22.1/comparisons/druid-vs-cassandra.html
new file mode 100644
index 0000000..235af8f
--- /dev/null
+++ b/docs/0.22.1/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/latest/comparisons/druid-vs-elasticsearch.html b/docs/0.22.1/comparisons/druid-vs-elasticsearch.html
similarity index 67%
copy from docs/latest/comparisons/druid-vs-elasticsearch.html
copy to docs/0.22.1/comparisons/druid-vs-elasticsearch.html
index 07bd7bb..1431299 100644
--- a/docs/latest/comparisons/druid-vs-elasticsearch.html
+++ b/docs/0.22.1/comparisons/druid-vs-elasticsearch.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 Elasticsearch · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/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 [...]
+<!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.22.1/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>< [...]
+            </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++) {
@@ -88,7 +88,7 @@ stored up to 100x with real-world data sets. This leads to Elasticsearch having
 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/latest/misc/papers-and-talks.html"><span class="arrow-prev">← </span><span>Papers</span></a><a class="docs-next button" href="/docs/latest/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 [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/misc/papers-and-talks.html"><span class="arrow-prev">← </span><span>Papers</span></a><a class="docs-next button" href="/docs/0.22.1/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;
@@ -105,6 +105,6 @@ summarization/roll-up can be done.</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.22.1/comparisons/druid-vs-hadoop.html b/docs/0.22.1/comparisons/druid-vs-hadoop.html
new file mode 100644
index 0000000..cab995e
--- /dev/null
+++ b/docs/0.22.1/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.22.1/comparisons/druid-vs-impala-or-shark.html b/docs/0.22.1/comparisons/druid-vs-impala-or-shark.html
new file mode 100644
index 0000000..cab995e
--- /dev/null
+++ b/docs/0.22.1/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/latest/comparisons/druid-vs-key-value.html b/docs/0.22.1/comparisons/druid-vs-key-value.html
similarity index 67%
copy from docs/latest/comparisons/druid-vs-key-value.html
copy to docs/0.22.1/comparisons/druid-vs-key-value.html
index bfe6d3c..9bcad42 100644
--- a/docs/latest/comparisons/druid-vs-key-value.html
+++ b/docs/0.22.1/comparisons/druid-vs-key-value.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. 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/latest/comparisons/druid-vs-key-value.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en" [...]
+<!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.22.1/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>< [...]
+            </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++) {
@@ -96,7 +96,7 @@ When the number of rows to scan gets large, this limitation can greatly reduce p
 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/latest/comparisons/druid-vs-elasticsearch.html"><span class="arrow-prev">← </span><span>Apache Druid vs Elasticsearch</span></a><a class="docs-next button" href="/docs/latest/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 [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/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.22.1/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;
@@ -113,6 +113,6 @@ also enables fast scans on columns, which is important for good aggregation perf
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/comparisons/druid-vs-kudu.html b/docs/0.22.1/comparisons/druid-vs-kudu.html
similarity index 67%
copy from docs/latest/comparisons/druid-vs-kudu.html
copy to docs/0.22.1/comparisons/druid-vs-kudu.html
index 9236e5d..500e2da 100644
--- a/docs/latest/comparisons/druid-vs-kudu.html
+++ b/docs/0.22.1/comparisons/druid-vs-kudu.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 Kudu · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/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.2 [...]
+<!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.22.1/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.2 [...]
               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++) {
@@ -90,7 +90,7 @@ and does not need to be updated too frequently. Kudu supports arbitrary primary
 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/latest/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/latest/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 [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/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.22.1/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;
@@ -107,6 +107,6 @@ Druid includes its own query layer that allows it to push down aggregations and
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/comparisons/druid-vs-redshift.html b/docs/0.22.1/comparisons/druid-vs-redshift.html
similarity index 70%
copy from docs/latest/comparisons/druid-vs-redshift.html
copy to docs/0.22.1/comparisons/druid-vs-redshift.html
index c332b9c..7e39a4e 100644
--- a/docs/latest/comparisons/druid-vs-redshift.html
+++ b/docs/0.22.1/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.22.1/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++) {
@@ -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.22.1/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.22.1/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.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/comparisons/druid-vs-spark.html b/docs/0.22.1/comparisons/druid-vs-spark.html
similarity index 67%
copy from docs/latest/comparisons/druid-vs-spark.html
copy to docs/0.22.1/comparisons/druid-vs-spark.html
index ee98889..e786a91 100644
--- a/docs/latest/comparisons/druid-vs-spark.html
+++ b/docs/0.22.1/comparisons/druid-vs-spark.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 Spark · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/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 [...]
+<!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.22.1/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>< [...]
+            </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++) {
@@ -90,7 +90,7 @@ return fast enough such that users can interactively explore through data. Druid
 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/latest/comparisons/druid-vs-redshift.html"><span class="arrow-prev">← </span><span>Apache Druid vs Redshift</span></a><a class="docs-next button" href="/docs/latest/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  [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/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.22.1/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;
@@ -107,6 +107,6 @@ One typical setup seen in production is to process data in Spark, and load the p
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/comparisons/druid-vs-sql-on-hadoop.html b/docs/0.22.1/comparisons/druid-vs-sql-on-hadoop.html
similarity index 70%
copy from docs/latest/comparisons/druid-vs-sql-on-hadoop.html
copy to docs/0.22.1/comparisons/druid-vs-sql-on-hadoop.html
index bf2374a..3166acb 100644
--- a/docs/latest/comparisons/druid-vs-sql-on-hadoop.html
+++ b/docs/0.22.1/comparisons/druid-vs-sql-on-hadoop.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 SQL-on-Hadoop · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/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 [...]
+<!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.22.1/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>< [...]
+            </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++) {
@@ -121,7 +121,7 @@ base Druid is less flexible than SQL-on-Hadoop solutions for generic processing.
 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/latest/comparisons/druid-vs-spark.html"><span class="arrow-prev">← </span><span>Apache Druid vs Spark</span></a><a class="docs-next button" href="/docs/latest/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></ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/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.22.1/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;
@@ -138,6 +138,6 @@ more hierarchical, and is more designed for binary chunking. In theory, this sho
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.22.1/comparisons/druid-vs-vertica.html b/docs/0.22.1/comparisons/druid-vs-vertica.html
new file mode 100644
index 0000000..a1d74ac
--- /dev/null
+++ b/docs/0.22.1/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.22.1/configuration/auth.html b/docs/0.22.1/configuration/auth.html
new file mode 100644
index 0000000..ea2aebe
--- /dev/null
+++ b/docs/0.22.1/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.22.1/configuration/broker.html b/docs/0.22.1/configuration/broker.html
new file mode 100644
index 0000000..72363c4
--- /dev/null
+++ b/docs/0.22.1/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.22.1/configuration/caching.html b/docs/0.22.1/configuration/caching.html
new file mode 100644
index 0000000..dcb5dd6
--- /dev/null
+++ b/docs/0.22.1/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.22.1/configuration/coordinator.html b/docs/0.22.1/configuration/coordinator.html
new file mode 100644
index 0000000..e32a17a
--- /dev/null
+++ b/docs/0.22.1/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.22.1/configuration/hadoop.html b/docs/0.22.1/configuration/hadoop.html
new file mode 100644
index 0000000..a14b2fb
--- /dev/null
+++ b/docs/0.22.1/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.22.1/configuration/historical.html b/docs/0.22.1/configuration/historical.html
new file mode 100644
index 0000000..1112bc0
--- /dev/null
+++ b/docs/0.22.1/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/human-readable-byte.html b/docs/0.22.1/configuration/human-readable-byte.html
similarity index 97%
copy from docs/latest/configuration/human-readable-byte.html
copy to docs/0.22.1/configuration/human-readable-byte.html
index 42b790a..bdeedd4 100644
--- a/docs/latest/configuration/human-readable-byte.html
+++ b/docs/0.22.1/configuration/human-readable-byte.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>Human-readable Byte Configuration Reference · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/configuration/human-readable-byte.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name=" [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Human-readable Byte Configuration Reference · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/configuration/human-readable-byte.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name=" [...]
               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>< [...]
   ~ 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
@@ -67,7 +67,7 @@ Also, only integers are valid as the number part. For example, you can't replace
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># 256MiB bytes = 256 * 1024 * 1024 bytes</span>
 <span class="hljs-meta">druid.cache.sizeInBytes</span>=<span class="hljs-string">256MiB </span>
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#a-number-in-bytes">A number in bytes</a></li><li><a href="#a-number-with-a-unit-suffix">A number with a unit suffix</a><ul class="toc-headings"><li><a href="#supported-units">Supported Units</a></li></ul></li></ul></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"><div class="text-center"><p><a href="/technology">Techn [...]
+</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#a-number-in-bytes">A number in bytes</a></li><li><a href="#a-number-with-a-unit-suffix">A number with a unit suffix</a><ul class="toc-headings"><li><a href="#supported-units">Supported Units</a></li></ul></li></ul></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"><div class="text-center"><p><a href="/technology">Techn [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -84,6 +84,6 @@ Also, only integers are valid as the number part. For example, you can't replace
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/configuration/index.html b/docs/0.22.1/configuration/index.html
similarity index 94%
copy from docs/latest/configuration/index.html
copy to docs/0.22.1/configuration/index.html
index e648f66..4bae62d 100644
--- a/docs/latest/configuration/index.html
+++ b/docs/0.22.1/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.22.0 [...]
+<!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.22.1/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.22.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++) {
@@ -112,7 +112,7 @@ jvm.config         <span class="hljs-keyword">runtime</span>.properties
 <h3><a class="anchor" aria-hidden="true" id="jvm-configuration-best-practices"></a><a href="#jvm-configuration-best-practices" 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>There are four JVM parameters that we set on all of our processes:</p>
 <ul>
-<li><p><code>-Duser.timezone=UTC</code>: This sets the default timezone of the JVM to UTC. We always set this and do not test with other default timezones, so local timezones might work, but they also might uncover weird and interesting bugs. To issue queries in a non-UTC timezone, see <a href="/docs/latest/querying/granularities.html#period-granularities">query granularities</a></p></li>
+<li><p><code>-Duser.timezone=UTC</code>: This sets the default timezone of the JVM to UTC. We always set this and do not test with other default timezones, so local timezones might work, but they also might uncover weird and interesting bugs. To issue queries in a non-UTC timezone, see <a href="/docs/0.22.1/querying/granularities.html#period-granularities">query granularities</a></p></li>
 <li><p><code>-Dfile.encoding=UTF-8</code> This is similar to timezone, we test assuming UTF-8. Local encodings might work, but they also might result in weird and interesting bugs.</p></li>
 <li><p><code>-Djava.io.tmpdir=&lt;a path&gt;</code> Various parts of Druid use temporary files to interact with the file system. These files can become quite large. This means that systems that have small <code>/tmp</code> directories can cause problems for Druid. Therefore, set the JVM tmp directory to a location with ample space.</p>
 <p>Also consider the following when configuring the JVM tmp directory:</p>
@@ -159,7 +159,7 @@ jvm.config         <span class="hljs-keyword">runtime</span>.properties
 <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.22.1/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>
@@ -259,7 +259,7 @@ values for the following properties, among others provided by the Java implement
 <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.22.1/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>
@@ -269,7 +269,7 @@ values for the following properties, among others provided by the Java implement
 </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.22.1/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>
@@ -287,7 +287,7 @@ values for the following properties, among others provided by the Java implement
 <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.22.1/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
@@ -305,7 +305,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.22.1/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>
@@ -329,7 +329,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.22.1/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>
@@ -430,7 +430,7 @@ For native query, only request logs where query/time is above the threshold are
 <tbody>
 <tr><td><code>druid.audit.manager.auditHistoryMillis</code></td><td>Default duration for querying audit history.</td><td>1 week</td></tr>
 <tr><td><code>druid.audit.manager.includePayloadAsDimensionInMetric</code></td><td>Boolean flag on whether to add <code>payload</code> column in service metric.</td><td>false</td></tr>
-<tr><td><code>druid.audit.manager.maxPayloadSizeBytes</code></td><td>The maximum size of audit payload to store in Druid's metadata store audit table. If the size of audit payload exceeds this value, the audit log would be stored with a message indicating that the payload was omitted instead. Setting <code>maxPayloadSizeBytes</code> to -1 (default value) disables this check, meaning Druid will always store audit payload regardless of it's size. Setting to any negative number other than < [...]
+<tr><td><code>druid.audit.manager.maxPayloadSizeBytes</code></td><td>The maximum size of audit payload to store in Druid's metadata store audit table. If the size of audit payload exceeds this value, the audit log would be stored with a message indicating that the payload was omitted instead. Setting <code>maxPayloadSizeBytes</code> to -1 (default value) disables this check, meaning Druid will always store audit payload regardless of it's size. Setting to any negative number other than < [...]
 <tr><td><code>druid.audit.manager.skipNullField</code></td><td>If true, the audit payload stored in metadata store will exclude any field with null value.</td><td>false</td></tr>
 </tbody>
 </table>
@@ -466,7 +466,7 @@ For native query, only request logs where query/time is above the threshold are
 </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.22.1/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>
@@ -493,7 +493,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><a href="/docs/latest/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.basicAuthentication</code></td><td><a href="/docs/0.22.1/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 (5242880 (i. e. 5 MiB))</td></tr>
@@ -504,7 +504,7 @@ For native query, only request logs where query/time is above the threshold are
 </table>
 <h4><a class="anchor" aria-hidden="true" id="http-emitter-module-tls-overrides"></a><a href="#http-emitter-module-tls-overrides" 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.5S1 [...]
 <p>When emitting events to a TLS-enabled receiver, the Http Emitter will by default use an SSLContext obtained via the
-process described at <a href="/docs/latest/operations/tls-support.html">Druid's internal communication over TLS</a>, i.e., the same
+process described at <a href="/docs/0.22.1/operations/tls-support.html">Druid's internal communication over TLS</a>, i.e., the same
 SSLContext that would be used for internal communications between Druid processes.</p>
 <p>In some use cases it may be desirable to have the Http Emitter use its own separate truststore configuration. For example, there may be organizational policies that prevent the TLS-enabled metrics receiver's certificate from being added to the same truststore used by Druid's internal HTTP client.</p>
 <p>The following properties allow the Http Emitter to use its own truststore configuration when building its SSLContext.</p>
@@ -517,7 +517,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.22.1/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>
@@ -544,9 +544,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.22.1/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.22.1/design/coordinator.html">Coordinator</a> and <a href="/docs/0.22.1/design/overlord.html">Overlord</a>.</p>
 <table>
 <thead>
 <tr><th>Property</th><th>Description</th><th>Default</th></tr>
@@ -555,10 +555,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.22.1/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.22.1/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>
@@ -571,7 +571,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.22.1/design/segments.html">Segments</a> from deep storage.</p>
 <table>
 <thead>
 <tr><th>Property</th><th>Description</th><th>Default</th></tr>
@@ -594,7 +594,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.22.1/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>
@@ -602,10 +602,10 @@ The below table shows some important configurations for S3. See <a href="/docs/l
 <tbody>
 <tr><td><code>druid.storage.bucket</code></td><td>S3 bucket name.</td><td>none</td></tr>
 <tr><td><code>druid.storage.baseKey</code></td><td>S3 object key prefix for storage.</td><td>none</td></tr>
-<tr><td><code>druid.storage.disableAcl</code></td><td>Boolean flag for ACL. If this is set to <code>false</code>, the full control would be granted to the bucket owner. This may require to set additional permissions. See <a href="/docs/latest/development/extensions-core/s3.html#s3-permissions-settings">S3 permissions settings</a>.</td><td>false</td></tr>
+<tr><td><code>druid.storage.disableAcl</code></td><td>Boolean flag for ACL. If this is set to <code>false</code>, the full control would be granted to the bucket owner. This may require to set additional permissions. See <a href="/docs/0.22.1/development/extensions-core/s3.html#s3-permissions-settings">S3 permissions settings</a>.</td><td>false</td></tr>
 <tr><td><code>druid.storage.archiveBucket</code></td><td>S3 bucket name for archiving when running the <em>archive task</em>.</td><td>none</td></tr>
 <tr><td><code>druid.storage.archiveBaseKey</code></td><td>S3 object key prefix for archiving.</td><td>none</td></tr>
-<tr><td><code>druid.storage.sse.type</code></td><td>Server-side encryption type. Should be one of <code>s3</code>, <code>kms</code>, and <code>custom</code>. See the below <a href="/docs/latest/development/extensions-core/s3.html#server-side-encryption">Server-side encryption section</a> for more details.</td><td>None</td></tr>
+<tr><td><code>druid.storage.sse.type</code></td><td>Server-side encryption type. Should be one of <code>s3</code>, <code>kms</code>, and <code>custom</code>. See the below <a href="/docs/0.22.1/development/extensions-core/s3.html#server-side-encryption">Server-side encryption section</a> for more details.</td><td>None</td></tr>
 <tr><td><code>druid.storage.sse.kms.keyId</code></td><td>AWS KMS key ID. This is used only when <code>druid.storage.sse.type</code> is <code>kms</code> and can be empty to use the default key ID.</td><td>None</td></tr>
 <tr><td><code>druid.storage.sse.custom.base64EncodedKey</code></td><td>Base64-encoded key. Should be specified if <code>druid.storage.sse.type</code> is <code>custom</code>.</td><td>None</td></tr>
 <tr><td><code>druid.storage.useS3aSchema</code></td><td>If true, use the &quot;s3a&quot; filesystem when using Hadoop-based ingestion. If false, the &quot;s3n&quot; filesystem will be used. Only affects Hadoop-based ingestion.</td><td>false</td></tr>
@@ -635,7 +635,7 @@ The below table shows some important configurations for S3. See <a href="/docs/l
 <h3><a class="anchor" aria-hidden="true" id="ingestion-security-configuration"></a><a href="#ingestion-security-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. [...]
 <h4><a class="anchor" aria-hidden="true" id="hdfs-input-source"></a><a href="#hdfs-input-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.22-2- [...]
 <p>You can set the following property to specify permissible protocols for
-the <a href="/docs/latest/ingestion/native-batch.html#hdfs-input-source">HDFS input source</a> and the <a href="/docs/latest/ingestion/native-batch.html#hdfsfirehose">HDFS firehose</a>.</p>
+the <a href="/docs/0.22.1/ingestion/native-batch.html#hdfs-input-source">HDFS input source</a> and the <a href="/docs/0.22.1/ingestion/native-batch.html#hdfsfirehose">HDFS firehose</a>.</p>
 <table>
 <thead>
 <tr><th>Property</th><th>Possible Values</th><th>Description</th><th>Default</th></tr>
@@ -646,7 +646,7 @@ the <a href="/docs/latest/ingestion/native-batch.html#hdfs-input-source">HDFS in
 </table>
 <h4><a class="anchor" aria-hidden="true" id="http-input-source"></a><a href="#http-input-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.22-2- [...]
 <p>You can set the following property to specify permissible protocols for
-the <a href="/docs/latest/ingestion/native-batch.html#http-input-source">HTTP input source</a> and the <a href="/docs/latest/ingestion/native-batch.html#httpfirehose">HTTP firehose</a>.</p>
+the <a href="/docs/0.22.1/ingestion/native-batch.html#http-input-source">HTTP input source</a> and the <a href="/docs/0.22.1/ingestion/native-batch.html#httpfirehose">HTTP firehose</a>.</p>
 <table>
 <thead>
 <tr><th>Property</th><th>Possible Values</th><th>Description</th><th>Default</th></tr>
@@ -659,10 +659,10 @@ the <a href="/docs/latest/ingestion/native-batch.html#http-input-source">HTTP in
 <h4><a class="anchor" aria-hidden="true" id="jdbc-connections-to-external-databases"></a><a href="#jdbc-connections-to-external-databases" 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. [...]
 <p>You can use the following properties to specify permissible JDBC options for:</p>
 <ul>
-<li><a href="/docs/latest/ingestion/native-batch.html#sql-input-source">SQL input source</a></li>
-<li><a href="/docs/latest/ingestion/native-batch.html#sqlfirehose">SQL firehose</a>,</li>
-<li><a href="/docs/latest/development/extensions-core/lookups-cached-global.html#jdbc-lookup">globally cached JDBC lookups</a></li>
-<li><a href="/docs/latest/development/extensions-core/druid-lookups.html#data-fetcher-layer">JDBC Data Fetcher for per-lookup caching</a>.</li>
+<li><a href="/docs/0.22.1/ingestion/native-batch.html#sql-input-source">SQL input source</a></li>
+<li><a href="/docs/0.22.1/ingestion/native-batch.html#sqlfirehose">SQL firehose</a>,</li>
+<li><a href="/docs/0.22.1/development/extensions-core/lookups-cached-global.html#jdbc-lookup">globally cached JDBC lookups</a></li>
+<li><a href="/docs/0.22.1/development/extensions-core/druid-lookups.html#data-fetcher-layer">JDBC Data Fetcher for per-lookup caching</a>.</li>
 </ul>
 <p>These properties do not apply to metadata storage connections.</p>
 <table>
@@ -677,7 +677,7 @@ the <a href="/docs/latest/ingestion/native-batch.html#http-input-source">HTTP in
 </table>
 <h3><a class="anchor" aria-hidden="true" id="task-logging"></a><a href="#task-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 0-.83. [...]
 <p>You can use the <code>druid.indexer</code> configuration to set a <a href="#log-long-term-storage">long-term storage</a> location for task log files, and to set a <a href="#log-retention-policy">retention policy</a>.</p>
-<p>For more information about ingestion tasks and the process of generating logs, see the <a href="/docs/latest/ingestion/tasks.html">task reference</a>.</p>
+<p>For more information about ingestion tasks and the process of generating logs, see the <a href="/docs/0.22.1/ingestion/tasks.html">task reference</a>.</p>
 <h4><a class="anchor" aria-hidden="true" id="log-long-term-storage"></a><a href="#log-long-term-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 [...]
 <table>
 <thead>
@@ -756,7 +756,7 @@ the <a href="/docs/latest/ingestion/native-batch.html#http-input-source">HTTP in
 </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.22.1/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>
@@ -766,7 +766,7 @@ the <a href="/docs/latest/ingestion/native-batch.html#http-input-source">HTTP in
 </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.22.1/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>
@@ -802,7 +802,7 @@ 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.22.1/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
@@ -830,7 +830,7 @@ Support for 64-bit floating point columns was released in Druid 0.11.0, so if yo
 <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/latest/design/segments.html#sql-compatible-null-handling">segment documentation</a> for more details.</p>
+<p>This mode does have a storage size and query performance cost, see <a href="/docs/0.22.1/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>
@@ -846,9 +846,9 @@ Support for 64-bit floating point columns was released in Druid 0.11.0, so if yo
 </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="/docs/latest/design/processes.html#server-types">three-server configuration</a>.</p>
+<p>This section contains the configuration options for the processes that reside on Master servers (Coordinators and Overlords) in the suggested <a href="/docs/0.22.1/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.22.1/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 [...]
@@ -860,7 +860,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.22.1/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>
@@ -943,7 +943,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.22.1/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>
@@ -984,7 +984,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 a leader before it can start marking overshadowed segments as unused 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.22.1/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>useBatchedSegmentSampler</code></td><td>Boolean flag for whether or not we should use the Reservoir Sampling with a reservoir of size k instead of fixed size 1 to pick segments to move. This option can be enabled to speed up segment balancing process, especially if there are huge number of segments in the cluster or if there are too many segments to move.</td><td>false</td></tr>
 <tr><td><code>percentOfSegmentsToConsiderPerMove</code></td><td>The percentage of the total number of segments in the cluster that are considered every time a segment needs to be selected for a move. Druid orders servers by available capacity ascending (the least available capacity first) and then iterates over the servers. For each server, Druid iterates over the segments on the server, considering them for moving. The default config of 100% means that every segment on every server is a [...]
@@ -1011,7 +1011,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.22.1/querying/lookups.html">lookups page</a></p>
 <table>
 <thead>
 <tr><th>Property</th><th>Description</th><th>Default</th></tr>
@@ -1027,8 +1027,8 @@ Support for 64-bit floating point columns was released in Druid 0.11.0, so if yo
 </table>
 <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="/docs/latest/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>
+<a href="/docs/0.22.1/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/0.22.1/operations/segment-optimization.html">Segment Size Optimization</a>.</p>
 <p>A description of the compaction config is:</p>
 <table>
 <thead>
@@ -1036,12 +1036,12 @@ Support for 64-bit floating point columns was released in Druid 0.11.0, so if yo
 </thead>
 <tbody>
 <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="/docs/latest/ingestion/tasks.html#priority">Priority</a> of compaction task.</td><td>no (default = 25)</td></tr>
+<tr><td><code>taskPriority</code></td><td><a href="/docs/0.22.1/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>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 in <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> duration format. Strongly recommended to set for realtime dataSources. See <a href="/docs/latest/ingestion/compaction.html#data-handling-with-compaction">Data handling with compaction</a></td><td>no (default = &quot;P1D&quot;)</td></tr>
+<tr><td><code>skipOffsetFromLatest</code></td><td>The offset for searching segments to be compacted in <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> duration format. Strongly recommended to set for realtime dataSources. See <a href="/docs/0.22.1/ingestion/compaction.html#data-handling-with-compaction">Data handling with compaction</a></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="#automatic-compaction-tuningconfig">Compaction Task TuningConfig</a>.</td><td>no</td></tr>
-<tr><td><code>taskContext</code></td><td><a href="/docs/latest/ingestion/tasks.html#context">Task context</a> for compaction tasks.</td><td>no</td></tr>
+<tr><td><code>taskContext</code></td><td><a href="/docs/0.22.1/ingestion/tasks.html#context">Task context</a> for compaction tasks.</td><td>no</td></tr>
 <tr><td><code>granularitySpec</code></td><td>Custom <code>granularitySpec</code> to describe the <code>segmentGranularity</code> for the compacted segments. See <a href="#automatic-compaction-granularityspec">Automatic compaction granularitySpec</a></td><td>No</td></tr>
 <tr><td><code>ioConfig</code></td><td>IO config for compaction tasks. See below <a href="#automatic-compaction-ioconfig">Compaction Task IOConfig</a>.</td><td>no</td></tr>
 </tbody>
@@ -1057,7 +1057,7 @@ Support for 64-bit floating point columns was released in Druid 0.11.0, so if yo
 <p>Compaction tasks fail when higher priority tasks cause Druid to revoke their locks. By default, realtime tasks like ingestion have a higher priority than compaction tasks. Therefore frequent conflicts between compaction tasks and realtime tasks can cause the coordinator's automatic compaction to get stuck.
 You may see this issue with streaming ingestion from Kafka and Kinesis, which ingest late-arriving data. To mitigate this problem, set <code>skipOffsetFromLatest</code> to a value large enough so that arriving data tends to fall outside the offset value from the current time. This way you can avoid conflicts between compaction tasks and realtime ingestion tasks.</p>
 <h6><a class="anchor" aria-hidden="true" id="automatic-compaction-tuningconfig"></a><a href="#automatic-compaction-tuningconfig" 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.5S1 [...]
-<p>Auto compaction supports a subset of the <a href="/docs/latest/ingestion/native-batch.html#tuningconfig">tuningConfig for Parallel task</a>.
+<p>Auto compaction supports a subset of the <a href="/docs/0.22.1/ingestion/native-batch.html#tuningconfig">tuningConfig for Parallel task</a>.
 The below is a list of the supported configurations for auto compaction.</p>
 <table>
 <thead>
@@ -1067,14 +1067,14 @@ The below is a list of the supported configurations for auto compaction.</p>
 <tr><td>type</td><td>The task type, this should always be <code>index_parallel</code>.</td><td>yes</td></tr>
 <tr><td><code>maxRowsInMemory</code></td><td>Used in determining when intermediate persists to disk should occur. Normally user does not need to set this, but depending on the nature of data, if rows are short in terms of bytes, user may not want to store a million rows in memory and this value should be set.</td><td>no (default = 1000000)</td></tr>
 <tr><td><code>maxBytesInMemory</code></td><td>Used in determining when intermediate persists to disk should occur. Normally this is computed internally and user does not need to set it. This value represents number of bytes to aggregate in heap memory before persisting. This is based on a rough estimate of memory usage and not actual usage. The maximum heap memory usage for indexing is <code>maxBytesInMemory</code> * (2 + <code>maxPendingPersists</code>)</td><td>no (default = 1/6 of max  [...]
-<tr><td><code>splitHintSpec</code></td><td>Used to give a hint to control the amount of data that each first phase task reads. This hint could be ignored depending on the implementation of the input source. See <a href="/docs/latest/ingestion/native-batch.html#split-hint-spec">Split hint spec</a> for more details.</td><td>no (default = size-based split hint spec)</td></tr>
-<tr><td><code>partitionsSpec</code></td><td>Defines how to partition data in each time chunk, see <a href="/docs/latest/ingestion/native-batch.html#partitionsspec"><code>PartitionsSpec</code></a></td><td>no (default = <code>dynamic</code>)</td></tr>
-<tr><td><code>indexSpec</code></td><td>Defines segment storage format options to be used at indexing time, see <a href="/docs/latest/ingestion/ingestion-spec.html#indexspec">IndexSpec</a></td><td>no</td></tr>
-<tr><td><code>indexSpecForIntermediatePersists</code></td><td>Defines segment storage format options to be used at indexing time for intermediate persisted temporary segments. this can be used to disable dimension/metric compression on intermediate segments to reduce memory required for final merging. however, disabling compression on intermediate segments might increase page cache use while they are used before getting merged into final segment published, see <a href="/docs/latest/inges [...]
+<tr><td><code>splitHintSpec</code></td><td>Used to give a hint to control the amount of data that each first phase task reads. This hint could be ignored depending on the implementation of the input source. See <a href="/docs/0.22.1/ingestion/native-batch.html#split-hint-spec">Split hint spec</a> for more details.</td><td>no (default = size-based split hint spec)</td></tr>
+<tr><td><code>partitionsSpec</code></td><td>Defines how to partition data in each time chunk, see <a href="/docs/0.22.1/ingestion/native-batch.html#partitionsspec"><code>PartitionsSpec</code></a></td><td>no (default = <code>dynamic</code>)</td></tr>
+<tr><td><code>indexSpec</code></td><td>Defines segment storage format options to be used at indexing time, see <a href="/docs/0.22.1/ingestion/ingestion-spec.html#indexspec">IndexSpec</a></td><td>no</td></tr>
+<tr><td><code>indexSpecForIntermediatePersists</code></td><td>Defines segment storage format options to be used at indexing time for intermediate persisted temporary segments. this can be used to disable dimension/metric compression on intermediate segments to reduce memory required for final merging. however, disabling compression on intermediate segments might increase page cache use while they are used before getting merged into final segment published, see <a href="/docs/0.22.1/inges [...]
 <tr><td><code>maxPendingPersists</code></td><td>Maximum number of persists that can be pending but not started. If this limit would be exceeded by a new intermediate persist, ingestion will block until the currently-running persist finishes. Maximum heap memory usage for indexing scales with <code>maxRowsInMemory</code> * (2 + <code>maxPendingPersists</code>).</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>Milliseconds to wait for pushing segments. It must be &gt;= 0, where 0 means to wait forever.</td><td>no (default = 0)</td></tr>
-<tr><td><code>segmentWriteOutMediumFactory</code></td><td>Segment write-out medium to use when creating segments. See <a href="/docs/latest/ingestion/native-batch.html#segmentwriteoutmediumfactory">SegmentWriteOutMediumFactory</a>.</td><td>no (default is the value from <code>druid.peon.defaultSegmentWriteOutMediumFactory.type</code> is used)</td></tr>
-<tr><td><code>maxNumConcurrentSubTasks</code></td><td>Maximum number of worker tasks which can be run in parallel at the same time. The supervisor task would spawn worker tasks up to <code>maxNumConcurrentSubTasks</code> regardless of the current available task slots. If this value is set to 1, the supervisor task processes data ingestion on its own instead of spawning worker tasks. If this value is set to too large, too many worker tasks can be created which might block other ingestion. [...]
+<tr><td><code>segmentWriteOutMediumFactory</code></td><td>Segment write-out medium to use when creating segments. See <a href="/docs/0.22.1/ingestion/native-batch.html#segmentwriteoutmediumfactory">SegmentWriteOutMediumFactory</a>.</td><td>no (default is the value from <code>druid.peon.defaultSegmentWriteOutMediumFactory.type</code> is used)</td></tr>
+<tr><td><code>maxNumConcurrentSubTasks</code></td><td>Maximum number of worker tasks which can be run in parallel at the same time. The supervisor task would spawn worker tasks up to <code>maxNumConcurrentSubTasks</code> regardless of the current available task slots. If this value is set to 1, the supervisor task processes data ingestion on its own instead of spawning worker tasks. If this value is set to too large, too many worker tasks can be created which might block other ingestion. [...]
 <tr><td><code>maxRetry</code></td><td>Maximum number of retries on task failures.</td><td>no (default = 3)</td></tr>
 <tr><td><code>maxNumSegmentsToMerge</code></td><td>Max limit for the number of segments that a single task can merge at the same time in the second phase. Used only with <code>hashed</code> or <code>single_dim</code> partitionsSpec.</td><td>no (default = 100)</td></tr>
 <tr><td><code>totalNumMergeTasks</code></td><td>Total number of tasks to merge segments in the merge phase when <code>partitionsSpec</code> is set to <code>hashed</code> or <code>single_dim</code>.</td><td>no (default = 10)</td></tr>
@@ -1091,14 +1091,14 @@ The below is a list of the supported configurations for auto compaction.</p>
 <tr><th>Field</th><th>Description</th><th>Required</th></tr>
 </thead>
 <tbody>
-<tr><td><code>segmentGranularity</code></td><td>Time chunking period for the segment granularity. Defaults to 'null', which preserves the original segment granularity. Accepts all <a href="/docs/latest/querying/granularities.html">Query granularity</a> values.</td><td>No</td></tr>
+<tr><td><code>segmentGranularity</code></td><td>Time chunking period for the segment granularity. Defaults to 'null', which preserves the original segment granularity. Accepts all <a href="/docs/0.22.1/querying/granularities.html">Query granularity</a> values.</td><td>No</td></tr>
 </tbody>
 </table>
 <blockquote>
 <p>Unlike manual compaction, automatic compaction does not support query granularity.</p>
 </blockquote>
 <h6><a class="anchor" aria-hidden="true" id="automatic-compaction-ioconfig"></a><a href="#automatic-compaction-ioconfig" 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>Auto compaction supports a subset of the <a href="/docs/latest/ingestion/native-batch.html">IOConfig for Parallel task</a>.
+<p>Auto compaction supports a subset of the <a href="/docs/0.22.1/ingestion/native-batch.html">IOConfig for Parallel task</a>.
 The below is a list of the supported configurations for auto compaction.</p>
 <table>
 <thead>
@@ -1109,7 +1109,7 @@ The below is a list of the supported configurations for auto compaction.</p>
 </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.22.1/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-. [...]
@@ -1121,7 +1121,7 @@ The below is a list of the supported configurations for auto compaction.</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>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.22.1/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>
@@ -1134,7 +1134,7 @@ The below is a list of the supported configurations for auto compaction.</p>
 <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. &quot;local&quot; is mainly for internal testing while &quot;metadata&quot; is recommended in production because 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.22.1/ingestion/tasks.html#context">task context</a>. See <a href="/docs/0.22.1/ingestion/tasks.html#context">Task Locking  [...]
 <tr><td><code>druid.indexer.task.default.context</code></td><td>Default task context that is applied to all tasks submitted to the Overlord. Any default in this config does not override neither the context values the user provides nor <code>druid.indexer.tasklock.forceTimeChunkLock</code>.</td><td>empty context</td></tr>
 <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>
@@ -1142,7 +1142,7 @@ The below is a list of the supported configurations for auto compaction.</p>
 <tr><td><code>druid.indexer.queue.storageSyncRate</code></td><td>Sync Overlord state this often with an underlying task persistence mechanism.</td><td>PT1M</td></tr>
 </tbody>
 </table>
-<p>The following configs only apply if the Overlord is running in remote mode. For a description of local vs. remote mode, see <a href="/docs/latest/design/overlord.html">Overlord Process</a>.</p>
+<p>The following configs only apply if the Overlord is running in remote mode. For a description of local vs. remote mode, see <a href="/docs/0.22.1/design/overlord.html">Overlord Process</a>.</p>
 <table>
 <thead>
 <tr><th>Property</th><th>Description</th><th>Default</th></tr>
@@ -1151,7 +1151,7 @@ The below is a list of the supported configurations for auto compaction.</p>
 <tr><td><code>druid.indexer.runner.taskAssignmentTimeout</code></td><td>How long to wait after a task as been assigned to a MiddleManager before throwing an error.</td><td>PT5M</td></tr>
 <tr><td><code>druid.indexer.runner.minWorkerVersion</code></td><td>The minimum MiddleManager version to send tasks to.</td><td>&quot;0&quot;</td></tr>
 <tr><td><code>druid.indexer.runner.compressZnodes</code></td><td>Indicates whether or not the Overlord should expect MiddleManagers to compress Znodes.</td><td>true</td></tr>
-<tr><td><code>druid.indexer.runner.maxZnodeBytes</code></td><td>The maximum size Znode in bytes that can be created in Zookeeper, should be in the range of [10KiB, 2GiB). <a href="/docs/latest/configuration/human-readable-byte.html">Human-readable format</a> is supported.</td><td>512 KiB</td></tr>
+<tr><td><code>druid.indexer.runner.maxZnodeBytes</code></td><td>The maximum size Znode in bytes that can be created in Zookeeper, should be in the range of [10KiB, 2GiB). <a href="/docs/0.22.1/configuration/human-readable-byte.html">Human-readable format</a> is supported.</td><td>512 KiB</td></tr>
 <tr><td><code>druid.indexer.runner.taskCleanupTimeout</code></td><td>How long to wait before failing a task after a MiddleManager is disconnected from Zookeeper.</td><td>PT15M</td></tr>
 <tr><td><code>druid.indexer.runner.taskShutdownLinkTimeout</code></td><td>How long to wait on a shutdown request to a MiddleManager before timing out</td><td>PT1M</td></tr>
 <tr><td><code>druid.indexer.runner.pendingTasksRunnerNumThreads</code></td><td>Number of threads to allocate pending-tasks to workers, must be at least 1.</td><td>1</td></tr>
@@ -1358,7 +1358,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.22.1/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>Use the <code>affinityConfig</code> field to pass affinity configuration to the <em>equalDistribution</em> and <em>fillCapacity</em> strategies. If not provided, the default is to not use affinity at all.</p>
@@ -1408,10 +1408,10 @@ field. If not provided, the default is to not use it at all.</p>
 <tr><td><code>userData</code></td><td>A JSON object that describes how to configure new nodes. If you have set druid.indexer.autoscale.workerVersion, this must have a versionReplacementString. Otherwise, a versionReplacementString is not necessary.</td><td>none; optional</td></tr>
 </tbody>
 </table>
-<p>For GCE's properties, please refer to the <a href="/docs/latest/development/extensions-contrib/gce-extensions.html">gce-extensions</a>.</p>
+<p>For GCE's properties, please refer to the <a href="/docs/0.22.1/development/extensions-contrib/gce-extensions.html">gce-extensions</a>.</p>
 <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="/docs/latest/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>This section contains the configuration options for the processes that reside on Data servers (MiddleManagers/Peons and Historicals) in the suggested <a href="/docs/0.22.1/design/processes.html#server-types">three-server configuration</a>.</p>
+<p>Configuration options for the experimental <a href="/docs/0.22.1/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 [...]
@@ -1423,7 +1423,7 @@ field. If not provided, the default is to not use it 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.22.1/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>
@@ -1440,7 +1440,7 @@ field. If not provided, the default is to not use it at all.</p>
 <tr><td><code>druid.indexer.runner.javaCommand</code></td><td>Command required to execute java.</td><td>java</td></tr>
 <tr><td><code>druid.indexer.runner.javaOpts</code></td><td><em>DEPRECATED</em> A string of -X Java options to pass to the peon's JVM. Quotable parameters or parameters with spaces are encouraged to use javaOptsArray</td><td>&quot;&quot;</td></tr>
 <tr><td><code>druid.indexer.runner.javaOptsArray</code></td><td>A JSON array of strings to be passed in as options to the peon's JVM. This is additive to javaOpts and is recommended for properly handling arguments which contain quotes or spaces like <code>[&quot;-XX:OnOutOfMemoryError=kill -9 %p&quot;]</code></td><td><code>[]</code></td></tr>
-<tr><td><code>druid.indexer.runner.maxZnodeBytes</code></td><td>The maximum size Znode in bytes that can be created in Zookeeper, should be in the range of [10KiB, 2GiB). <a href="/docs/latest/configuration/human-readable-byte.html">Human-readable format</a> is supported.</td><td>512KiB</td></tr>
+<tr><td><code>druid.indexer.runner.maxZnodeBytes</code></td><td>The maximum size Znode in bytes that can be created in Zookeeper, should be in the range of [10KiB, 2GiB). <a href="/docs/0.22.1/configuration/human-readable-byte.html">Human-readable format</a> is supported.</td><td>512KiB</td></tr>
 <tr><td><code>druid.indexer.runner.startPort</code></td><td>Starting port used for peon processes, should be greater than 1023 and less than 65536.</td><td>8100</td></tr>
 <tr><td><code>druid.indexer.runner.endPort</code></td><td>Ending port used for peon processes, should be greater than or equal to <code>druid.indexer.runner.startPort</code> and less than 65536.</td><td>65535</td></tr>
 <tr><td><code>druid.indexer.runner.ports</code></td><td>A JSON array of integers to specify ports that used for peon processes. If provided and non-empty, ports for peon processes will be chosen from these ports. And <code>druid.indexer.runner.startPort/druid.indexer.runner.endPort</code> will be completely ignored.</td><td><code>[]</code></td></tr>
@@ -1457,7 +1457,7 @@ field. If not provided, the default is to not use it at all.</p>
 <tr><th>Property</th><th>Description</th><th>Default</th></tr>
 </thead>
 <tbody>
-<tr><td><code>druid.processing.buffer.sizeBytes</code></td><td>This specifies a buffer size (less than 2GiB) for the storage of intermediate results. The computation engine in both the Historical and Realtime processes will use a scratch buffer of this size to do all of their intermediate computations off-heap. Larger values allow for more aggregations in a single pass over the data while smaller values can require more passes depending on the query that is being executed. <a href="/docs [...]
+<tr><td><code>druid.processing.buffer.sizeBytes</code></td><td>This specifies a buffer size (less than 2GiB) for the storage of intermediate results. The computation engine in both the Historical and Realtime processes will use a scratch buffer of this size to do all of their intermediate computations off-heap. Larger values allow for more aggregations in a single pass over the data while smaller values can require more passes depending on the query that is being executed. <a href="/docs [...]
 <tr><td><code>druid.processing.buffer.poolCacheMaxCount</code></td><td>processing buffer pool caches the buffers for later use, this is the maximum count cache will grow to. note that pool can create more buffers than it can cache if necessary.</td><td>Integer.MAX_VALUE</td></tr>
 <tr><td><code>druid.processing.formatString</code></td><td>Realtime and Historical processes use this format string to name their processing threads.</td><td>processing-%s</td></tr>
 <tr><td><code>druid.processing.numMergeBuffers</code></td><td>The number of direct memory buffers available for merging query results. The buffers are sized by <code>druid.processing.buffer.sizeBytes</code>. This property is effectively a concurrency limit for queries that require merging buffers. If you are using any queries that require merge buffers (currently, just groupBy v2) then you should have at least two of these.</td><td><code>max(2, druid.processing.numThreads / 4)</code></td></tr>
@@ -1508,7 +1508,7 @@ ensure at least this amount of direct memory is available by providing <code>-XX
 <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>
 <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, MiddleManagers will attempt to stop tasks gracefully on shutdown and restore them on restart.</td><td>false</td></tr>
-<tr><td><code>druid.indexer.task.ignoreTimestampSpecForDruidInputSource</code></td><td>If true, tasks using the <a href="/docs/latest/ingestion/native-batch.html#druid-input-source">Druid input source</a> will ignore the provided timestampSpec, and will use the <code>__time</code> column of the input datasource. This option is provided for compatibility with ingestion specs written before Druid 0.22.0.</td><td>false</td></tr>
+<tr><td><code>druid.indexer.task.ignoreTimestampSpecForDruidInputSource</code></td><td>If true, tasks using the <a href="/docs/0.22.1/ingestion/native-batch.html#druid-input-source">Druid input source</a> will ignore the provided timestampSpec, and will use the <code>__time</code> column of the input datasource. This option is provided for compatibility with ingestion specs written before Druid 0.22.0.</td><td>false</td></tr>
 <tr><td><code>druid.indexer.server.maxChatRequests</code></td><td>Maximum number of concurrent requests served by a task's chat handler. Set to 0 to disable limiting.</td><td>0</td></tr>
 </tbody>
 </table>
@@ -1538,7 +1538,7 @@ than the configured maximum <em>heap</em> size (<code>-Xmx</code>) for the same
 Using on-heap memory introduces garbage collection overhead and so is not recommended in most cases. This type of medium is
 most helpful for tasks run on external clusters where it may be difficult to allocate and work with direct memory
 effectively.</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.22.1/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>
@@ -1559,7 +1559,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.22.1/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>
@@ -1579,7 +1579,7 @@ then the value from the configuration below is used:</p>
 <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>
-<tr><td><code>druid.indexer.task.ignoreTimestampSpecForDruidInputSource</code></td><td>If true, tasks using the <a href="/docs/latest/ingestion/native-batch.html#druid-input-source">Druid input source</a> will ignore the provided timestampSpec, and will use the <code>__time</code> column of the input datasource. This option is provided for compatibility with ingestion specs written before Druid 0.22.0.</td><td>false</td></tr>
+<tr><td><code>druid.indexer.task.ignoreTimestampSpecForDruidInputSource</code></td><td>If true, tasks using the <a href="/docs/0.22.1/ingestion/native-batch.html#druid-input-source">Druid input source</a> will ignore the provided timestampSpec, and will use the <code>__time</code> column of the input datasource. This option is provided for compatibility with ingestion specs written before Druid 0.22.0.</td><td>false</td></tr>
 <tr><td><code>druid.peon.taskActionClient.retry.minWait</code></td><td>The minimum retry time to communicate with Overlord.</td><td>PT5S</td></tr>
 <tr><td><code>druid.peon.taskActionClient.retry.maxWait</code></td><td>The maximum retry time to communicate with Overlord.</td><td>PT1M</td></tr>
 <tr><td><code>druid.peon.taskActionClient.retry.maxRetryCount</code></td><td>The maximum number of retries to communicate with Overlord.</td><td>60</td></tr>
@@ -1592,14 +1592,14 @@ then the value from the configuration below is used:</p>
 <tr><th>Property</th><th>Description</th><th>Default</th></tr>
 </thead>
 <tbody>
-<tr><td><code>druid.server.http.numThreads</code></td><td>Number of threads for HTTP requests. Please see the <a href="/docs/latest/design/indexer.html#server-http-threads">Indexer Server HTTP threads</a> documentation for more details on how the Indexer uses this configuration.</td><td>max(10, (Number of cores * 17) / 16 + 2) + 30</td></tr>
+<tr><td><code>druid.server.http.numThreads</code></td><td>Number of threads for HTTP requests. Please see the <a href="/docs/0.22.1/design/indexer.html#server-http-threads">Indexer Server HTTP threads</a> documentation for more details on how the Indexer uses this configuration.</td><td>max(10, (Number of cores * 17) / 16 + 2) + 30</td></tr>
 <tr><td><code>druid.server.http.queueSize</code></td><td>Size of the worker queue used by Jetty server to temporarily store incoming client connections. If this value is set and a request is rejected by jetty because queue is full then client would observe request failure with TCP connection being closed immediately with a completely empty response from server.</td><td>Unbounded</td></tr>
 <tr><td><code>druid.server.http.maxIdleTime</code></td><td>The Jetty max idle time for a connection.</td><td>PT5M</td></tr>
 <tr><td><code>druid.server.http.enableRequestLimit</code></td><td>If enabled, no requests would be queued in jetty queue and &quot;HTTP 429 Too Many Requests&quot; error response would be sent.</td><td>false</td></tr>
 <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(Only values greater than zero are valid).</td><td><code>PT30S</code></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.22.1/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>
 <tr><td><code>druid.server.http.allowedHttpMethods</code></td><td>List of HTTP methods that should be allowed in addition to the ones required by Druid APIs. Druid APIs require GET, PUT, POST, and DELETE, which are always allowed. This option is not useful unless you have installed an extension that needs these additional HTTP methods or that adds functionality related to CORS. None of Druid's bundled extensions require these methods.</td><td>[]</td></tr>
@@ -1611,7 +1611,7 @@ then the value from the configuration below is used:</p>
 <tr><th>Property</th><th>Description</th><th>Default</th></tr>
 </thead>
 <tbody>
-<tr><td><code>druid.processing.buffer.sizeBytes</code></td><td>This specifies a buffer size (less than 2GiB) for the storage of intermediate results. The computation engine in the Indexer processes will use a scratch buffer of this size to do all of their intermediate computations off-heap. Larger values allow for more aggregations in a single pass over the data while smaller values can require more passes depending on the query that is being executed. <a href="/docs/latest/configuration [...]
+<tr><td><code>druid.processing.buffer.sizeBytes</code></td><td>This specifies a buffer size (less than 2GiB) for the storage of intermediate results. The computation engine in the Indexer processes will use a scratch buffer of this size to do all of their intermediate computations off-heap. Larger values allow for more aggregations in a single pass over the data while smaller values can require more passes depending on the query that is being executed. <a href="/docs/0.22.1/configuration [...]
 <tr><td><code>druid.processing.buffer.poolCacheMaxCount</code></td><td>processing buffer pool caches the buffers for later use, this is the maximum count cache will grow to. note that pool can create more buffers than it can cache if necessary.</td><td>Integer.MAX_VALUE</td></tr>
 <tr><td><code>druid.processing.formatString</code></td><td>Indexer processes use this format string to name their processing threads.</td><td>processing-%s</td></tr>
 <tr><td><code>druid.processing.numMergeBuffers</code></td><td>The number of direct memory buffers available for merging query results. The buffers are sized by <code>druid.processing.buffer.sizeBytes</code>. This property is effectively a concurrency limit for queries that require merging buffers. If you are using any queries that require merge buffers (currently, just groupBy v2) then you should have at least two of these.</td><td><code>max(2, druid.processing.numThreads / 4)</code></td></tr>
@@ -1643,7 +1643,7 @@ line.</p>
 <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.22.1/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>
@@ -1654,7 +1654,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.22.1/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>
@@ -1664,8 +1664,8 @@ line.</p>
 <tr><th>Property</th><th>Description</th><th>Default</th></tr>
 </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. The Coordinator process will attempt to assign segments to a Historical process only if this property is greater than the total size of segments served by it. Since this property defines the upper limit on the total segment size that can be assigned to a Historical, it is defaulted to the sum of all <code>maxSize</code> values specified within <code>druid [...]
-<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.maxSize</code></td><td>The maximum number of bytes-worth of segments that the process wants assigned to it. The Coordinator process will attempt to assign segments to a Historical process only if this property is greater than the total size of segments served by it. Since this property defines the upper limit on the total segment size that can be assigned to a Historical, it is defaulted to the sum of all <code>maxSize</code> values specified within <code>druid [...]
+<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.22.1/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>
@@ -1716,7 +1716,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(Only values greater than zero are valid).</td><td><code>PT30S</code></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.22.1/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>
@@ -1726,7 +1726,7 @@ line.</p>
 <tr><th>Property</th><th>Description</th><th>Default</th></tr>
 </thead>
 <tbody>
-<tr><td><code>druid.processing.buffer.sizeBytes</code></td><td>This specifies a buffer size (less than 2GiB), for the storage of intermediate results. The computation engine in both the Historical and Realtime processes will use a scratch buffer of this size to do all of their intermediate computations off-heap. Larger values allow for more aggregations in a single pass over the data while smaller values can require more passes depending on the query that is being executed.  <a href="/do [...]
+<tr><td><code>druid.processing.buffer.sizeBytes</code></td><td>This specifies a buffer size (less than 2GiB), for the storage of intermediate results. The computation engine in both the Historical and Realtime processes will use a scratch buffer of this size to do all of their intermediate computations off-heap. Larger values allow for more aggregations in a single pass over the data while smaller values can require more passes depending on the query that is being executed.  <a href="/do [...]
 <tr><td><code>druid.processing.buffer.poolCacheMaxCount</code></td><td>processing buffer pool caches the buffers for later use, this is the maximum count cache will grow to. note that pool can create more buffers than it can cache if necessary.</td><td>Integer.MAX_VALUE</td></tr>
 <tr><td><code>druid.processing.formatString</code></td><td>Realtime and Historical processes use this format string to name their processing threads.</td><td>processing-%s</td></tr>
 <tr><td><code>druid.processing.numMergeBuffers</code></td><td>The number of direct memory buffers available for merging query results. The buffers are sized by <code>druid.processing.buffer.sizeBytes</code>. This property is effectively a concurrency limit for queries that require merging buffers. If you are using any queries that require merge buffers (currently, just groupBy v2) then you should have at least two of these.</td><td><code>max(2, druid.processing.numThreads / 4)</code></td></tr>
@@ -1757,10 +1757,10 @@ line.</p>
 </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="/docs/latest/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>This section contains the configuration options for the processes that reside on Query servers (Brokers) in the suggested <a href="/docs/0.22.1/design/processes.html#server-types">three-server configuration</a>.</p>
+<p>Configuration options for the experimental <a href="/docs/0.22.1/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.22.1/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>
@@ -1771,7 +1771,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.22.1/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>
@@ -1801,7 +1801,7 @@ line.</p>
 </table>
 <h5><a class="anchor" aria-hidden="true" id="prioritization-strategies"></a><a href="#prioritization-strategies" 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 [...]
 <h6><a class="anchor" aria-hidden="true" id="manual-prioritization-strategy"></a><a href="#manual-prioritization-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 1 [...]
-<p>With this configuration, queries are never assigned a priority automatically, but will preserve a priority manually set on the <a href="/docs/latest/querying/query-context.html">query context</a> with the <code>priority</code> key. This mode can be explicitly set by setting <code>druid.query.scheduler.prioritization.strategy</code> to <code>manual</code>.</p>
+<p>With this configuration, queries are never assigned a priority automatically, but will preserve a priority manually set on the <a href="/docs/0.22.1/querying/query-context.html">query context</a> with the <code>priority</code> key. This mode can be explicitly set by setting <code>druid.query.scheduler.prioritization.strategy</code> to <code>manual</code>.</p>
 <h6><a class="anchor" aria-hidden="true" id="threshold-prioritization-strategy"></a><a href="#threshold-prioritization-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.5S1 [...]
 <p>This prioritization strategy lowers the priority of queries that cross any of a configurable set of thresholds, such as how far in the past the data is, how large of an interval a query covers, or the number of segments taking part in a query.</p>
 <p>This strategy can be enabled by setting <code>druid.query.scheduler.prioritization.strategy</code> to <code>threshold</code>.</p>
@@ -1821,7 +1821,7 @@ line.</p>
 <p>In this mode, queries are never assigned a lane, and the concurrent query count will only be limited by <code>druid.server.http.numThreads</code> or <code>druid.query.scheduler.numThreads</code>, if set. This is the default Druid query scheduler operating mode. Enable this strategy explicitly by setting <code>druid.query.scheduler.laning.strategy</code> to <code>none</code>.</p>
 <h6><a class="anchor" aria-hidden="true" id="highlow-laning-strategy"></a><a href="#highlow-laning-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 [...]
 <p>This laning strategy splits queries with a <code>priority</code> below zero into a <code>low</code> query lane, automatically. Queries with priority of zero (the default) or above are considered 'interactive'. The limit on <code>low</code> queries can be set to some desired percentage of the total capacity (or HTTP thread pool size), reserving capacity for interactive queries. Queries in the <code>low</code> lane are <em>not</em> guaranteed their capacity, which may be consumed by int [...]
-<p>If the <code>low</code> lane is specified in the <a href="/docs/latest/querying/query-context.html">query context</a> <code>lane</code> parameter, this will override the computed lane.</p>
+<p>If the <code>low</code> lane is specified in the <a href="/docs/0.22.1/querying/query-context.html">query context</a> <code>lane</code> parameter, this will override the computed lane.</p>
 <p>This strategy can be enabled by setting <code>druid.query.scheduler.laning.strategy=hilo</code>.</p>
 <table>
 <thead>
@@ -1832,7 +1832,7 @@ line.</p>
 </tbody>
 </table>
 <h6><a class="anchor" aria-hidden="true" id="manual-laning-strategy"></a><a href="#manual-laning-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 [...]
-<p>This laning strategy is best suited for cases where one or more external applications which query Druid are capable of manually deciding what lane a given query should belong to. Configured with a map of lane names to percent or exact max capacities, queries with a matching <code>lane</code> parameter in the <a href="/docs/latest/querying/query-context.html">query context</a> will be subjected to those limits.</p>
+<p>This laning strategy is best suited for cases where one or more external applications which query Druid are capable of manually deciding what lane a given query should belong to. Configured with a map of lane names to percent or exact max capacities, queries with a matching <code>lane</code> parameter in the <a href="/docs/0.22.1/querying/query-context.html">query context</a> will be subjected to those limits.</p>
 <table>
 <thead>
 <tr><th>Property</th><th>Description</th><th>Default</th></tr>
@@ -1854,11 +1854,11 @@ line.</p>
 <tr><td><code>druid.server.http.maxIdleTime</code></td><td>The Jetty max idle time for a connection.</td><td>PT5M</td></tr>
 <tr><td><code>druid.server.http.enableRequestLimit</code></td><td>If enabled, no requests would be queued in jetty queue and &quot;HTTP 429 Too Many Requests&quot; error response would be sent.</td><td>false</td></tr>
 <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.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.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.maxSubqueryRows</code></td><td>Maximum number of rows from all subqueries per query. Druid stores the subquery rows in temporary tables that live in the Java heap. <code>druid.server.http.maxSubqueryRows</code> is a guardrail to prevent the system from exhausting available heap. When a subquery exceeds the row limit, Druid throws a resource limit exceeded exception: &quot;Subquery generated results beyond maximum.&quot;<br><br>It is a good practice to avoi [...]
 <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(Only values greater than zero are valid).</td><td><code>PT30S</code></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.22.1/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>
@@ -1874,7 +1874,7 @@ client has the following configuration options.</p>
 <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/latest/querying/query-context.html">&quot;maxQueuedBytes&quot; query context parameter</a>. Human-reada [...]
+<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.22.1/querying/query-context.html">&quot;maxQueuedBytes&quot; query context parameter</a>. Human-reada [...]
 <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>
@@ -1895,7 +1895,7 @@ client has the following configuration options.</p>
 <tr><th>Property</th><th>Description</th><th>Default</th></tr>
 </thead>
 <tbody>
-<tr><td><code>druid.processing.buffer.sizeBytes</code></td><td>This specifies a buffer size (less than 2GiB) for the storage of intermediate results. The computation engine in both the Historical and Realtime processes will use a scratch buffer of this size to do all of their intermediate computations off-heap. Larger values allow for more aggregations in a single pass over the data while smaller values can require more passes depending on the query that is being executed. <a href="/docs [...]
+<tr><td><code>druid.processing.buffer.sizeBytes</code></td><td>This specifies a buffer size (less than 2GiB) for the storage of intermediate results. The computation engine in both the Historical and Realtime processes will use a scratch buffer of this size to do all of their intermediate computations off-heap. Larger values allow for more aggregations in a single pass over the data while smaller values can require more passes depending on the query that is being executed. <a href="/docs [...]
 <tr><td><code>druid.processing.buffer.poolCacheMaxCount</code></td><td>processing buffer pool caches the buffers for later use, this is the maximum count cache will grow to. note that pool can create more buffers than it can cache if necessary.</td><td>Integer.MAX_VALUE</td></tr>
 <tr><td><code>druid.processing.formatString</code></td><td>Realtime and Historical processes use this format string to name their processing threads.</td><td>processing-%s</td></tr>
 <tr><td><code>druid.processing.numMergeBuffers</code></td><td>The number of direct memory buffers available for merging query results. The buffers are sized by <code>druid.processing.buffer.sizeBytes</code>. This property is effectively a concurrency limit for queries that require merging buffers. If you are using any queries that require merge buffers (currently, just groupBy v2) then you should have at least two of these.</td><td><code>max(2, druid.processing.numThreads / 4)</code></td></tr>
@@ -1933,11 +1933,11 @@ line.</p>
 <tr><td><code>druid.sql.avatica.maxStatementsPerConnection</code></td><td>Maximum number of simultaneous open statements per Avatica client connection.</td><td>4</td></tr>
 <tr><td><code>druid.sql.avatica.connectionIdleTimeout</code></td><td>Avatica client connection idle timeout.</td><td>PT5M</td></tr>
 <tr><td><code>druid.sql.http.enable</code></td><td>Whether to enable JSON over HTTP querying at <code>/druid/v2/sql/</code>.</td><td>true</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.22.1/querying/topnquery.html">TopN query</a>. Higher limits will be planned as <a href="/docs/0.22.1/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.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.useGroupingSetForExactDistinct</code></td><td>Only relevant when <code>useApproximateCountDistinct</code> is disabled. If set to true, exact distinct queries are re-written using grouping sets. Otherwise, exact distinct queries are re-written using joins. This should be set to true for group by query with multiple exact distinct aggregations. This flag can be overridden per query.</td><td>false</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.22.1/querying/topnquery.html">TopN queries</a> when a SQL query could be expressed as such. If false, exact <a href="/docs/0.22.1/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.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>
@@ -1968,8 +1968,8 @@ number of rows permitted across all subqueries.</p>
 </table>
 <p>See <a href="#cache-configuration">cache configuration</a> for how to configure cache settings.</p>
 <blockquote>
-<p>Note: Even if cache is enabled, for <a href="/docs/latest/querying/groupbyquery.html#strategies">groupBy v2</a> queries, both of non-result level cache and result level cache do not work on Brokers.
-See <a href="/docs/latest/querying/groupbyquery.html#differences-between-v1-and-v2">Differences between v1 and v2</a> and <a href="/docs/latest/querying/caching.html">Query caching</a> for more information.</p>
+<p>Note: Even if cache is enabled, for <a href="/docs/0.22.1/querying/groupbyquery.html#strategies">groupBy v2</a> queries, both of non-result level cache and result level cache do not work on Brokers.
+See <a href="/docs/0.22.1/querying/groupbyquery.html#differences-between-v1-and-v2">Differences between v1 and v2</a> and <a href="/docs/0.22.1/querying/caching.html">Query caching</a> for more information.</p>
 </blockquote>
 <h4><a class="anchor" aria-hidden="true" id="segment-discovery"></a><a href="#segment-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-2- [...]
 <table>
@@ -2027,7 +2027,7 @@ for both Broker and Historical processes, when defined in the common properties
 </thead>
 <tbody>
 <tr><td><code>druid.cache.type</code></td><td>Set this to <code>caffeine</code> or leave out parameter</td><td><code>caffeine</code></td></tr>
-<tr><td><code>druid.cache.sizeInBytes</code></td><td>The maximum size of the cache in bytes on heap. It can be configured as described in <a href="/docs/latest/configuration/human-readable-byte.html">here</a>.</td><td>min(1GiB, Runtime.maxMemory / 10)</td></tr>
+<tr><td><code>druid.cache.sizeInBytes</code></td><td>The maximum size of the cache in bytes on heap. It can be configured as described in <a href="/docs/0.22.1/configuration/human-readable-byte.html">here</a>.</td><td>min(1GiB, Runtime.maxMemory / 10)</td></tr>
 <tr><td><code>druid.cache.expireAfter</code></td><td>The time (in ms) after an access for which a cache entry may be expired</td><td>None (no time limit)</td></tr>
 <tr><td><code>druid.cache.cacheExecutorFactory</code></td><td>The executor factory to use for Caffeine maintenance. One of <code>COMMON_FJP</code>, <code>SINGLE_THREAD</code>, or <code>SAME_THREAD</code></td><td>ForkJoinPool common pool (<code>COMMON_FJP</code>)</td></tr>
 <tr><td><code>druid.cache.evictOnClose</code></td><td>If a close of a namespace (ex: removing a segment from a process) should cause an eager eviction of associated cache values</td><td><code>false</code></td></tr>
@@ -2090,7 +2090,7 @@ If there is an L1 miss and L2 hit, it will also populate L1.</p>
 <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="overriding-default-query-context-values"></a><a href="#overriding-default-query-context-values" 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>Any <a href="/docs/latest/querying/query-context.html#general-parameters">Query Context General Parameter</a> default value can be
+<p>Any <a href="/docs/0.22.1/querying/query-context.html#general-parameters">Query Context General Parameter</a> default value can be
 overridden by setting runtime property in the format of <code>druid.query.default.context.{query_context_key}</code>.
 <code>druid.query.default.context.{query_context_key}</code> runtime property prefix applies to all current and future
 query context keys, the same as how query context parameter passed with the query works. Note that the runtime property
@@ -2118,7 +2118,7 @@ context). If query does have <code>maxQueuedBytes</code> in the context, then th
 <tr><th>Property</th><th>Description</th><th>Default</th></tr>
 </thead>
 <tbody>
-<tr><td><code>druid.query.topN.minTopNThreshold</code></td><td>See <a href="/docs/latest/querying/topnquery.html#aliasing">TopN Aliasing</a> for details.</td><td>1000</td></tr>
+<tr><td><code>druid.query.topN.minTopNThreshold</code></td><td>See <a href="/docs/0.22.1/querying/topnquery.html#aliasing">TopN Aliasing</a> for details.</td><td>1000</td></tr>
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="search-query-config"></a><a href="#search-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.2 [...]
@@ -2142,7 +2142,7 @@ context). If query does have <code>maxQueuedBytes</code> in the context, then th
 </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.22.1/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>
@@ -2247,7 +2247,7 @@ context). If query does have <code>maxQueuedBytes</code> in the context, then th
 <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.22.1/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>
@@ -2262,9 +2262,9 @@ context). If query does have <code>maxQueuedBytes</code> in the context, then th
 <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.sql.enable</code></td><td>Enable routing of SQL queries. Possible values are <code>true</code> and <code>false</code>. When set to <code>true</code>, the Router uses the provided strategies to determine the broker service for a given SQL query.</td><td><code>false</code></td></tr>
-<tr><td><code>druid.router.strategies</code></td><td>Please see <a href="/docs/latest/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="/docs/latest/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="/docs/latest/design/router.html#router-as-management-proxy">management proxy</a> functionality.</td><td>false</td></tr>
+<tr><td><code>druid.router.strategies</code></td><td>Please see <a href="/docs/0.22.1/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="/docs/0.22.1/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="/docs/0.22.1/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>
@@ -2272,7 +2272,7 @@ context). If query does have <code>maxQueuedBytes</code> in the context, then th
 <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.22.1/development/geo.html"><span class="arrow-prev">← </span><span>Spatial filters</span></a><a class="docs-next button" href="/docs/0.22.1/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;
@@ -2289,6 +2289,6 @@ context). If query does have <code>maxQueuedBytes</code> in the context, then th
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.22.1/configuration/indexing-service.html b/docs/0.22.1/configuration/indexing-service.html
new file mode 100644
index 0000000..4189126
--- /dev/null
+++ b/docs/0.22.1/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.22.1/configuration/logging.html
similarity index 71%
copy from docs/latest/configuration/logging.html
copy to docs/0.22.1/configuration/logging.html
index a549364..fc0d5b8 100644
--- a/docs/latest/configuration/logging.html
+++ b/docs/0.22.1/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.22.0" /><meta prop [...]
+<!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.22.1/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.22.1" /><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++) {
@@ -77,7 +77,7 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<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="/docs/latest/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="/docs/0.22.1/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/druid-console.html"><span>Web console</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 are r [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions.html"><span class="arrow-prev">← </span><span>Extensions</span></a><a class="docs-next button" href="/docs/0.22.1/operations/druid-console.html"><span>Web console</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 are r [...]
                 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.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.22.1/configuration/production-cluster.html b/docs/0.22.1/configuration/production-cluster.html
new file mode 100644
index 0000000..d3b1d39
--- /dev/null
+++ b/docs/0.22.1/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.22.1/configuration/realtime.html b/docs/0.22.1/configuration/realtime.html
new file mode 100644
index 0000000..2f57fca
--- /dev/null
+++ b/docs/0.22.1/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.22.1/configuration/simple-cluster.html b/docs/0.22.1/configuration/simple-cluster.html
new file mode 100644
index 0000000..d3b1d39
--- /dev/null
+++ b/docs/0.22.1/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.22.1/configuration/zookeeper.html b/docs/0.22.1/configuration/zookeeper.html
new file mode 100644
index 0000000..24b4630
--- /dev/null
+++ b/docs/0.22.1/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.22.1/dependencies/cassandra-deep-storage.html b/docs/0.22.1/dependencies/cassandra-deep-storage.html
new file mode 100644
index 0000000..c3328a4
--- /dev/null
+++ b/docs/0.22.1/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/latest/dependencies/deep-storage.html b/docs/0.22.1/dependencies/deep-storage.html
similarity index 69%
copy from docs/latest/dependencies/deep-storage.html
copy to docs/0.22.1/dependencies/deep-storage.html
index a51f7c7..600f4ea 100644
--- a/docs/latest/dependencies/deep-storage.html
+++ b/docs/0.22.1/dependencies/deep-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>Deep storage · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/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.22.0" />< [...]
+<!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.22.1/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.22.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++) {
@@ -93,12 +93,12 @@
 <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/latest/development/extensions-core/s3.html">druid-s3-extensions extension documentation</a>.</p>
+<p>See <a href="/docs/0.22.1/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/latest/development/extensions-core/hdfs.html">druid-hdfs-storage extension documentation</a>.</p>
+<p>See <a href="/docs/0.22.1/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/latest/development/extensions.html">extensions list</a>.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/design/processes.html"><span class="arrow-prev">← </span><span>Processes and servers</span></a><a class="docs-next button" href="/docs/latest/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 [...]
+<p>For additional deep stores, please see our <a href="/docs/0.22.1/development/extensions.html">extensions list</a>.</p>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/design/processes.html"><span class="arrow-prev">← </span><span>Processes and servers</span></a><a class="docs-next button" href="/docs/0.22.1/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;
@@ -115,6 +115,6 @@
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/dependencies/metadata-storage.html b/docs/0.22.1/dependencies/metadata-storage.html
similarity index 74%
copy from docs/latest/dependencies/metadata-storage.html
copy to docs/0.22.1/dependencies/metadata-storage.html
index d06841e..f78ef6c 100644
--- a/docs/latest/dependencies/metadata-storage.html
+++ b/docs/0.22.1/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.2 [...]
+<!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.22.1/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.2 [...]
               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++) {
@@ -81,7 +81,7 @@
 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.22.1/development/extensions-core/mysql.html">MySQL</a> and <a href="/docs/0.22.1/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.22.1/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.22.1/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>
@@ -109,7 +109,7 @@ because there is no way to restore if you lose any metadata.</p>
 <p>This is dictated by the <code>druid.metadata.storage.tables.segments</code> property.</p>
 <p>This table stores metadata about the segments that should be available in the system. (This set of segments is called
 &quot;used segments&quot; elsewhere in the documentation and throughout the project.) The table is polled by the
-<a href="/docs/latest/design/coordinator.html">Coordinator</a> to determine the set of segments that should be available for querying in the
+<a href="/docs/0.22.1/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>
 <p>Value 1 in the <code>used</code> column means that the segment should be &quot;used&quot; by the cluster (i.e., it should be loaded and
 available for requests). Value 0 means that the segment should not be loaded into the cluster. We do this as a means of
@@ -136,7 +136,7 @@ that is ever 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.22.1/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
@@ -144,10 +144,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.22.1/design/overlord.html">Overlord</a> and <a href="/docs/0.22.1/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.22.1/design/coordinator.html">Coordinator</a> and other
 config changes.</p>
 <h2><a class="anchor" aria-hidden="true" id="accessed-by"></a><a href="#accessed-by" 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 Metadata Storage is accessed only by:</p>
@@ -157,7 +157,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.22.1/dependencies/deep-storage.html"><span class="arrow-prev">← </span><span>Deep storage</span></a><a class="docs-next button" href="/docs/0.22.1/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;
@@ -174,6 +174,6 @@ config changes.</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/dependencies/zookeeper.html b/docs/0.22.1/dependencies/zookeeper.html
similarity index 69%
copy from docs/latest/dependencies/zookeeper.html
copy to docs/0.22.1/dependencies/zookeeper.html
index a9ae60c..27e23fc 100644
--- a/docs/latest/dependencies/zookeeper.html
+++ b/docs/0.22.1/dependencies/zookeeper.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>ZooKeeper · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/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.22.0" /><meta p [...]
+<!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.22.1/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.22.1" /><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>< [...]
+            </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++) {
@@ -86,11 +86,11 @@
 <h2><a class="anchor" aria-hidden="true" id="zookeeper-operations"></a><a href="#zookeeper-operations" 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 operations that happen over ZK are</p>
 <ol>
-<li><a href="/docs/latest/design/coordinator.html">Coordinator</a> leader election</li>
-<li>Segment &quot;publishing&quot; protocol from <a href="/docs/latest/design/historical.html">Historical</a></li>
-<li>Segment load/drop protocol between <a href="/docs/latest/design/coordinator.html">Coordinator</a> and <a href="/docs/latest/design/historical.html">Historical</a></li>
-<li><a href="/docs/latest/design/overlord.html">Overlord</a> leader election</li>
-<li><a href="/docs/latest/design/overlord.html">Overlord</a> and <a href="/docs/latest/design/middlemanager.html">MiddleManager</a> task management</li>
+<li><a href="/docs/0.22.1/design/coordinator.html">Coordinator</a> leader election</li>
+<li>Segment &quot;publishing&quot; protocol from <a href="/docs/0.22.1/design/historical.html">Historical</a></li>
+<li>Segment load/drop protocol between <a href="/docs/0.22.1/design/coordinator.html">Coordinator</a> and <a href="/docs/0.22.1/design/historical.html">Historical</a></li>
+<li><a href="/docs/0.22.1/design/overlord.html">Overlord</a> leader election</li>
+<li><a href="/docs/0.22.1/design/overlord.html">Overlord</a> and <a href="/docs/0.22.1/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>
@@ -98,7 +98,7 @@
 </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/latest/design/historical.html">Historical</a> processes publish themselves on the <code>announcementsPath</code>, specifically, they will create an ephemeral znode at</p>
+<p>All <a href="/docs/0.22.1/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"><span class="hljs-variable">${druid.zk.paths.announcementsPath}</span>/<span class="hljs-variable">${druid.host}</span>
 </code></pre>
 <p>Which signifies that they exist. They will also subsequently create a permanent znode at</p>
@@ -107,14 +107,14 @@
 <p>And as they load up segments, they will attach ephemeral znodes that look like</p>
 <pre><code class="hljs"><span class="hljs-variable">${druid.zk.paths.servedSegmentsPath}</span><span class="hljs-regexp">/${druid.host}/</span>_segment_identifier_
 </code></pre>
-<p>Processes like the <a href="/docs/latest/design/coordinator.html">Coordinator</a> and <a href="/docs/latest/design/broker.html">Broker</a> can then watch these paths to see which processes are currently serving which segments.</p>
+<p>Processes like the <a href="/docs/0.22.1/design/coordinator.html">Coordinator</a> and <a href="/docs/0.22.1/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-loaddrop-protocol-between-coordinator-and-historical"></a><a href="#segment-loaddrop-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-.98 [...]
 <p>The <code>loadQueuePath</code> is used for this.</p>
-<p>When the <a href="/docs/latest/design/coordinator.html">Coordinator</a> decides that a <a href="/docs/latest/design/historical.html">Historical</a> process should load or drop a segment, it writes an ephemeral znode to</p>
+<p>When the <a href="/docs/0.22.1/design/coordinator.html">Coordinator</a> decides that a <a href="/docs/0.22.1/design/historical.html">Historical</a> process should load or drop a segment, it writes an ephemeral znode to</p>
 <pre><code class="hljs"><span class="hljs-variable">${druid.zk.paths.loadQueuePath}</span><span class="hljs-regexp">/_host_of_historical_process/</span>_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/latest/dependencies/metadata-storage.html"><span class="arrow-prev">← </span><span>Metadata storage</span></a><a class="docs-next button" href="/docs/latest/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="#minimum-zookeeper-versions">Minimum ZooKeeper versions</a></li><li><a href="# [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/dependencies/metadata-storage.html"><span class="arrow-prev">← </span><span>Metadata storage</span></a><a class="docs-next button" href="/docs/0.22.1/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="#minimum-zookeeper-versions">Minimum ZooKeeper versions</a></li><li><a href="# [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -131,6 +131,6 @@
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/design/architecture.html b/docs/0.22.1/design/architecture.html
similarity index 79%
copy from docs/latest/design/architecture.html
copy to docs/0.22.1/design/architecture.html
index bfcdf4d..4f742a7 100644
--- a/docs/latest/design/architecture.html
+++ b/docs/0.22.1/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.22.0" /><meta propert [...]
+<!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.22.1/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.22.1" /><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++) {
@@ -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; they 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 ingest data.</li>
+<li><a href="/docs/0.22.1/design/coordinator.html"><strong>Coordinator</strong></a> processes manage data availability on the cluster.</li>
+<li><a href="/docs/0.22.1/design/overlord.html"><strong>Overlord</strong></a> processes control the assignment of data ingestion workloads.</li>
+<li><a href="/docs/0.22.1/design/broker.html"><strong>Broker</strong></a> processes handle queries from external clients.</li>
+<li><a href="/docs/0.22.1/design/router.html"><strong>Router</strong></a> processes are optional; they route requests to Brokers, Coordinators, and Overlords.</li>
+<li><a href="/docs/0.22.1/design/historical.html"><strong>Historical</strong></a> processes store queryable data.</li>
+<li><a href="/docs/0.22.1/design/middlemanager.html"><strong>MiddleManager</strong></a> processes ingest 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.22.1/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 servers for the data you plan to load.</p>
 <p>Deep storage is an important part of Druid's elastic, fault-tolerant design. Druid bootstraps 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.22.1/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 usage information and task information. In a
 clustered deployment, this is typically a traditional RDBMS like PostgreSQL or MySQL. In a single-server
 deployment, it is typically 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.22.1/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.22.1/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 a locally-stored Apache Derby database.</p>
 <p>Druid data is stored in <em>datasources</em>, 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 <em>chunk</em> (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"><em>segments</em></a>. Each segment is a single file, typically comprising up to a few million rows of data. Since segments are
+<a href="/docs/0.22.1/design/segments.html"><em>segments</em></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
@@ -151,8 +151,8 @@ become immutable, and move from MiddleManagers to the Historical processes. An e
 to the <a href="#metadata-storage">metadata store</a>. This entry is a self-describing bit of metadata about the segment, including
 things like the schema of the segment, its size, and its location on deep storage. These entries tell the
 Coordinator what data is available on the cluster.</p>
-<p>For details on the segment file format, please see <a href="/docs/latest/design/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 the segment file format, please see <a href="/docs/0.22.1/design/segments.html">segment files</a>.</p>
+<p>For details on modeling your data in Druid, see <a href="/docs/0.22.1/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. On the indexing side:</p>
@@ -211,7 +211,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.22.1/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
@@ -222,7 +222,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.22.1/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 store 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
@@ -237,33 +237,33 @@ automatically set to false.</li>
 <p>Druid has an architectural separation between ingestion and querying, as described above in
 <a href="#indexing-and-handoff">Indexing and handoff</a>. This means that when understanding Druid's availability and
 consistency properties, we must look at each function separately.</p>
-<p>On the <strong>ingestion side</strong>, Druid's primary <a href="/docs/latest/ingestion/index.html#ingestion-methods">ingestion methods</a> are all
+<p>On the <strong>ingestion side</strong>, Druid's primary <a href="/docs/0.22.1/ingestion/index.html#ingestion-methods">ingestion methods</a> are all
 pull-based and offer transactional guarantees. This means that you are guaranteed that ingestion using these
 methods will publish in an all-or-nothing manner:</p>
 <ul>
-<li>Supervised &quot;seekable-stream&quot; ingestion methods like <a href="/docs/latest/development/extensions-core/kafka-ingestion.html">Kafka</a> and
-<a href="/docs/latest/development/extensions-core/kinesis-ingestion.html">Kinesis</a>. With these methods, Druid commits stream offsets to its
+<li>Supervised &quot;seekable-stream&quot; ingestion methods like <a href="/docs/0.22.1/development/extensions-core/kafka-ingestion.html">Kafka</a> and
+<a href="/docs/0.22.1/development/extensions-core/kinesis-ingestion.html">Kinesis</a>. With these methods, Druid commits stream offsets to its
 <a href="#metadata-storage">metadata store</a> alongside segment metadata, in the same transaction. Note that ingestion of data
 that has not yet been published can be rolled back if ingestion tasks fail. In this case, partially-ingested data is
 discarded, and Druid will resume ingestion from the last committed set of stream offsets. This ensures exactly-once
 publishing behavior.</li>
-<li><a href="/docs/latest/ingestion/hadoop.html">Hadoop-based batch ingestion</a>. Each task publishes all segment metadata in a single
+<li><a href="/docs/0.22.1/ingestion/hadoop.html">Hadoop-based batch ingestion</a>. Each task publishes all segment metadata in a single
 transaction.</li>
-<li><a href="/docs/latest/ingestion/native-batch.html">Native batch ingestion</a>. In parallel mode, the supervisor task publishes all segment
+<li><a href="/docs/0.22.1/ingestion/native-batch.html">Native batch ingestion</a>. In parallel mode, the supervisor task publishes all segment
 metadata in a single transaction after the subtasks are finished. In simple (single-task) mode, the single task
 publishes all segment metadata in a single transaction after it is complete.</li>
 </ul>
 <p>Additionally, some ingestion methods offer an <em>idempotency</em> guarantee. This means that repeated executions of the same
 ingestion will not cause duplicate data to be ingested:</p>
 <ul>
-<li>Supervised &quot;seekable-stream&quot; ingestion methods like <a href="/docs/latest/development/extensions-core/kafka-ingestion.html">Kafka</a> and
-<a href="/docs/latest/development/extensions-core/kinesis-ingestion.html">Kinesis</a> are idempotent due to the fact that stream offsets and
+<li>Supervised &quot;seekable-stream&quot; ingestion methods like <a href="/docs/0.22.1/development/extensions-core/kafka-ingestion.html">Kafka</a> and
+<a href="/docs/0.22.1/development/extensions-core/kinesis-ingestion.html">Kinesis</a> are idempotent due to the fact that stream offsets and
 segment metadata are stored together and updated in lock-step.</li>
-<li><a href="/docs/latest/ingestion/hadoop.html">Hadoop-based batch ingestion</a> is idempotent unless one of your input sources
+<li><a href="/docs/0.22.1/ingestion/hadoop.html">Hadoop-based batch ingestion</a> is idempotent unless one of your input sources
 is the same Druid datasource that you are ingesting into. In this case, running the same task twice is non-idempotent,
 because you are adding to existing data instead of overwriting it.</li>
-<li><a href="/docs/latest/ingestion/native-batch.html">Native batch ingestion</a> is idempotent unless
-<a href="/docs/latest/ingestion/native-batch.html"><code>appendToExisting</code></a> is true, or one of your input sources is the same Druid datasource
+<li><a href="/docs/0.22.1/ingestion/native-batch.html">Native batch ingestion</a> is idempotent unless
+<a href="/docs/0.22.1/ingestion/native-batch.html"><code>appendToExisting</code></a> is true, or one of your input sources is the same Druid datasource
 that you are ingesting into. In either of these two cases, running the same task twice is non-idempotent, because you
 are adding to existing data instead of overwriting it.</li>
 </ul>
@@ -282,7 +282,7 @@ must <em>all</em> be available before the Broker will use them instead of the ol
 per version per time chunk. Druid will also only use a single version at a time per time chunk. Together, these
 properties provide Druid's atomic replacement guarantees.</p>
 <p>Druid also supports an experimental <em>segment locking</em> mode that is activated by setting
-<a href="/docs/latest/ingestion/tasks.html#context"><code>forceTimeChunkLock</code></a> to false in the context of an ingestion task. In this case, Druid
+<a href="/docs/0.22.1/ingestion/tasks.html#context"><code>forceTimeChunkLock</code></a> to false in the context of an ingestion task. In this case, Druid
 creates an <em>atomic update group</em> using the existing version for the time chunk, instead of creating a new core set
 with a new version number. There can be multiple atomic update groups with the same version number per time chunk. Each
 one replaces a specific set of earlier segments in the same time chunk and with the same version number. Druid will
@@ -295,10 +295,10 @@ reload these unavailable segments on other Historicals as quickly as possible, a
 queries again.</p>
 <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 are distributed across the Druid cluster, and managed by a Broker.
-Queries first enter the <a href="/docs/latest/design/broker.html">Broker</a>, which identifies the segments with data that may pertain to that query.
+Queries first enter the <a href="/docs/0.22.1/design/broker.html">Broker</a>, which identifies the segments with 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 distributes a rewritten subquery to each of those processes.
+datasource is partitioned. The Broker will then identify which <a href="/docs/0.22.1/design/historical.html">Historicals</a> and
+<a href="/docs/0.22.1/design/middlemanager.html">MiddleManagers</a> are serving those segments and distributes a rewritten subquery to each of those processes.
 The Historical/MiddleManager processes execute each subquery and return results to the Broker. The Broker merges the partial results
 to get the final answer, which it returns to the original caller.</p>
 <p>Time and attribute pruning is an important way that Druid limits the amount of data that must be scanned for each query, but it is
@@ -313,9 +313,9 @@ query.</p>
 <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>
-<p>For more details about how Druid executes queries, refer to the <a href="/docs/latest/querying/query-execution.html">Query execution</a>
+<p>For more details about how Druid executes queries, refer to the <a href="/docs/0.22.1/querying/query-execution.html">Query execution</a>
 documentation.</p>
-</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.22.1/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.22.1/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;
@@ -332,6 +332,6 @@ documentation.</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/design/auth.html b/docs/0.22.1/design/auth.html
similarity index 79%
copy from docs/latest/design/auth.html
copy to docs/0.22.1/design/auth.html
index 8acbe2e..f0ac92e 100644
--- a/docs/latest/design/auth.html
+++ b/docs/0.22.1/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.22. [...]
+<!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.22.1/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.22. [...]
               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++) {
@@ -196,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-authenticationauthorizationloadinglookuptest">Enabling  [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/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.22.1/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-authenticationauthorizationloadinglookuptest">Enabling  [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -213,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.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/design/broker.html b/docs/0.22.1/design/broker.html
similarity index 70%
copy from docs/latest/design/broker.html
copy to docs/0.22.1/design/broker.html
index f07ddbc..bd56233 100644
--- a/docs/latest/design/broker.html
+++ b/docs/0.22.1/design/broker.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>Broker · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/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.22.0" /><meta property="og: [...]
+<!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.22.1/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.22.1" /><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>< [...]
+            </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++) {
@@ -78,9 +78,9 @@
   ~ 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="/docs/latest/configuration/index.html#broker">Broker Configuration</a>.</p>
+<p>For Apache Druid Broker Process Configuration, see <a href="/docs/0.22.1/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="/docs/latest/operations/api-reference.html#broker">Broker API</a>.</p>
+<p>For a list of API endpoints supported by the Broker, see <a href="/docs/0.22.1/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>
@@ -88,12 +88,12 @@ On start up, Historical processes announce themselves and the segments they are
 <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/latest/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/latest/design/historical.html">Historical</a> and streaming ingestion <a href="/docs/latest/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  [...]
+<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.22.1/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.22.1/design/historical.html">Historical</a> and streaming ingestion <a href="/docs/0.22.1/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/latest/design/auth.html"><span class="arrow-prev">← </span><span>Authentication and Authorization</span></a><a class="docs-next button" href="/docs/latest/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 [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/design/auth.html"><span class="arrow-prev">← </span><span>Authentication and Authorization</span></a><a class="docs-next button" href="/docs/0.22.1/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;
@@ -110,6 +110,6 @@ Historical processes. Once the Historical processes return their results, the Br
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.22.1/design/concepts-and-terminology.html b/docs/0.22.1/design/concepts-and-terminology.html
new file mode 100644
index 0000000..eed33a4
--- /dev/null
+++ b/docs/0.22.1/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.22.1/design/coordinator.html
similarity index 76%
copy from docs/latest/design/coordinator.html
copy to docs/0.22.1/design/coordinator.html
index 627eade..f049a64 100644
--- a/docs/latest/design/coordinator.html
+++ b/docs/0.22.1/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.22.0" />< [...]
+<!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.22.1/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.22.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++) {
@@ -78,9 +78,9 @@
   ~ 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 Coordinator Process Configuration, see <a href="/docs/latest/configuration/index.html#coordinator">Coordinator Configuration</a>.</p>
+<p>For Apache Druid Coordinator Process Configuration, see <a href="/docs/0.22.1/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="/docs/latest/operations/api-reference.html#coordinator">Coordinator API</a>.</p>
+<p>For a list of API endpoints supported by the Coordinator, see <a href="/docs/0.22.1/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  [...]
 <p>The Druid Coordinator process is primarily responsible for segment management and distribution. More specifically, the
 Druid Coordinator process communicates to Historical processes to load or drop segments based on configurations. The
@@ -102,7 +102,7 @@ the historical process will load the segment and begin servicing it.</p>
 <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.22.1/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>On each run, the Druid Coordinator compares the set of used segments in the database with the segments served by some
 Historical nodes in the cluster. Coordinator sends requests to Historical nodes to unload unused segments or segments
@@ -115,17 +115,17 @@ marked as unused. During the next Coordinator's run, they will be unloaded from
 <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 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/latest/operations/segment-optimization.html">Segment Size Optimization</a> for details.</p>
+in terms of segment size which may degrade query performance. See <a href="/docs/0.22.1/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/latest/ingestion/tasks.html#compact">compaction task</a> to compact those segments.
+Once some segments are found, it issues a <a href="/docs/0.22.1/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.
-See <a href="/docs/latest/operations/api-reference.html#compaction-configuration">Compaction Configuration API</a> and <a href="/docs/latest/configuration/index.html#compaction-dynamic-configuration">Compaction Configuration</a> to enable the compaction.</p>
+See <a href="/docs/0.22.1/operations/api-reference.html#compaction-configuration">Compaction Configuration API</a> and <a href="/docs/0.22.1/configuration/index.html#compaction-dynamic-configuration">Compaction Configuration</a> to enable the compaction.</p>
 <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 <a href="/docs/latest/ingestion/tasks.html#locking">time chunk lock</a> 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="/docs/0.22.1/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 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 [...]
@@ -157,17 +157,17 @@ A set of segments need compaction if all conditions below are satisfied.</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="/docs/latest/configuration/index.html#compaction-dynamic-configuration">skipOffsetFromLatest</a>.
+<p>The search start point can be changed by setting <a href="/docs/0.22.1/configuration/index.html#compaction-dynamic-configuration">skipOffsetFromLatest</a>.
 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.22.1/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 [...]
-<p>The Druid Coordinator exposes a web GUI for displaying cluster information and rule configuration. For more details, please see <a href="/docs/latest/operations/management-uis.html#coordinator-consoles">coordinator console</a>.</p>
+<p>The Druid Coordinator exposes a web GUI for displaying cluster information and rule configuration. For more details, please see <a href="/docs/0.22.1/operations/management-uis.html#coordinator-consoles">coordinator console</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="faq"></a><a href="#faq" 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.2 [...]
 <ol>
 <li><p><strong>Do clients ever contact the Coordinator process?</strong></p>
@@ -178,7 +178,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.22.1/design/broker.html"><span class="arrow-prev">← </span><span>Broker</span></a><a class="docs-next button" href="/docs/0.22.1/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;
@@ -195,6 +195,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.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.22.1/design/design.html b/docs/0.22.1/design/design.html
new file mode 100644
index 0000000..eed33a4
--- /dev/null
+++ b/docs/0.22.1/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/latest/design/extensions-contrib/dropwizard.html b/docs/0.22.1/design/extensions-contrib/dropwizard.html
similarity index 99%
copy from docs/latest/design/extensions-contrib/dropwizard.html
copy to docs/0.22.1/design/extensions-contrib/dropwizard.html
index a66df89..89e12c3 100644
--- a/docs/latest/design/extensions-contrib/dropwizard.html
+++ b/docs/0.22.1/design/extensions-contrib/dropwizard.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>Dropwizard metrics emitter · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/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 [...]
+<!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.22.1/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>< [...]
+            </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
@@ -22,7 +22,7 @@
   ~ 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/latest/development/extensions.html#loading-extensions">include</a> <code>dropwizard-emitter</code> in the extensions load list.</p>
+<p>To use this extension, make sure to <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>dropwizard-emitter</code> in the extensions load list.</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.
@@ -612,7 +612,7 @@ druid.emitter.dropwizard.reporters=[{<span class="hljs-string">"type"</span>:<sp
   }
 }
 </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></ [...]
+</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;
@@ -629,6 +629,6 @@ druid.emitter.dropwizard.reporters=[{<span class="hljs-string">"type"</span>:<sp
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/design/historical.html b/docs/0.22.1/design/historical.html
similarity index 70%
copy from docs/latest/design/historical.html
copy to docs/0.22.1/design/historical.html
index 735c202..e4d2116 100644
--- a/docs/latest/design/historical.html
+++ b/docs/0.22.1/design/historical.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>Historical Process · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/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.22.0" /><me [...]
+<!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.22.1/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.22.1" /><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>< [...]
+            </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++) {
@@ -78,23 +78,23 @@
   ~ 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="/docs/latest/configuration/index.html#historical">Historical Configuration</a>.</p>
+<p>For Apache Druid Historical Process Configuration, see <a href="/docs/0.22.1/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="/docs/latest/operations/api-reference.html#historical">API reference</a>.</p>
+<p>For a list of API endpoints supported by the Historical, please see the <a href="/docs/0.22.1/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/latest/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/latest/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 [...]
+<p>The <a href="/docs/0.22.1/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.22.1/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/latest/querying/querying.html">Querying</a> for more information on querying Historical processes.</p>
+<p>Please see <a href="/docs/0.22.1/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/latest/design/coordinator.html"><span class="arrow-prev">← </span><span>Coordinator Process</span></a><a class="docs-next button" href="/docs/latest/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 [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/design/coordinator.html"><span class="arrow-prev">← </span><span>Coordinator Process</span></a><a class="docs-next button" href="/docs/0.22.1/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;
@@ -111,6 +111,6 @@
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/design/index.html b/docs/0.22.1/design/index.html
similarity index 71%
copy from docs/latest/design/index.html
copy to docs/0.22.1/design/index.html
index 28b984b..4921f8b 100644
--- a/docs/latest/design/index.html
+++ b/docs/0.22.1/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.22.0"  [...]
+<!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.22.1/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.22.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++) {
@@ -104,7 +104,7 @@ remove servers to scale down. The Druid cluster re-balances itself automatically
 Druid server fails, the system automatically routes data around the damage until the server can be replaced. Druid
 is designed to run continuously without planned downtime for any reason. This is true for configuration changes and software
 updates.</li>
-<li><strong>Cloud-native, fault-tolerant architecture that won't lose data.</strong> After ingestion, Druid safely stores a copy of your data in <a href="/docs/latest/design/architecture.html#deep-storage">deep storage</a>. Deep storage is typically cloud storage, HDFS, or a shared filesystem. You can recover your data from deep storage even in the unlikely case that all Druid servers fail. For a limited failure that affects only a few Druid servers, replication ensures that queries are  [...]
+<li><strong>Cloud-native, fault-tolerant architecture that won't lose data.</strong> After ingestion, Druid safely stores a copy of your data in <a href="/docs/0.22.1/design/architecture.html#deep-storage">deep storage</a>. Deep storage is typically cloud storage, HDFS, or a shared filesystem. You can recover your data from deep storage even in the unlikely case that all Druid servers fail. For a limited failure that affects only a few Druid servers, replication ensures that queries are  [...]
 <li><strong>Indexes for quick filtering.</strong> Druid uses <a href="https://roaringbitmap.org/">Roaring</a> or
 <a href="https://arxiv.org/pdf/1004.0403">CONCISE</a> compressed bitmap indexes to create indexes to enable fast filtering and searching across multiple columns.</li>
 <li><strong>Time-based partitioning.</strong> Druid first partitions data by time. You can optionally implement additional partitioning based upon other fields.
@@ -141,11 +141,11 @@ taking a long time to complete.</li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="learn-more"></a><a href="#learn-more" 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 [...]
 <ul>
-<li>Try the Druid <a href="/docs/latest/design/index.html">Quickstart</a>.</li>
-<li>Learn more about Druid components in <a href="/docs/latest/design/architecture.html">Design</a>.</li>
+<li>Try the Druid <a href="/docs/0.22.1/design/index.html">Quickstart</a>.</li>
+<li>Learn more about Druid components in <a href="/docs/0.22.1/design/architecture.html">Design</a>.</li>
 <li>Read about new features and other details of <a href="https://github.com/apache/druid/releases">Druid Releases</a>.</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="#key-features-of-druid">Key features of Druid</a></li><li><a href="#when-to-use-druid">When to use Druid</a></li><li><a href="#learn-more">Learn more</a></li></ul></nav></div><footer class="nav-footer druid-footer" id="footer"> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-next button" href="/docs/0.22.1/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="#key-features-of-druid">Key features of Druid</a></li><li><a href="#when-to-use-druid">When to use Druid</a></li><li><a href="#learn-more">Learn more</a></li></ul></nav></div><footer class="nav-footer druid-footer" id="footer"> [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -162,6 +162,6 @@ taking a long time to complete.</li>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/design/indexer.html b/docs/0.22.1/design/indexer.html
similarity index 72%
copy from docs/latest/design/indexer.html
copy to docs/0.22.1/design/indexer.html
index a771b8c..c2300a2 100644
--- a/docs/latest/design/indexer.html
+++ b/docs/0.22.1/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.22.0" /><meta pro [...]
+<!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.22.1/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.22.1" /><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++) {
@@ -78,15 +78,15 @@
   ~ under the License.
   -->
 <blockquote>
-<p>The Indexer is an optional and <a href="/docs/latest/development/experimental.html">experimental</a> feature.
+<p>The Indexer is an optional and <a href="/docs/0.22.1/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 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 Indexer Process Configuration, see <a href="/docs/latest/configuration/index.html#indexer">Indexer Configuration</a>.</p>
+<p>For Apache Druid Indexer Process Configuration, see <a href="/docs/0.22.1/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="/docs/latest/operations/api-reference.html#middlemanager">MiddleManager</a>.</p>
+<p>The Indexer process shares the same HTTP endpoints as the <a href="/docs/0.22.1/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- [...]
 <pre><code class="hljs">org.apache.druid.cli.Main<span class="hljs-built_in"> server </span>indexer
 </code></pre>
@@ -94,7 +94,7 @@ Its memory management system is still under development and will be significantl
 <p>The following resources are shared across all tasks running inside an Indexer process.</p>
 <h4><a class="anchor" aria-hidden="true" id="query-resources"></a><a href="#query-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 12H9c-.98 0-2-1.22-2-2.5  [...]
 <p>The query processing threads and buffers are shared across all tasks. The Indexer will serve queries from a single endpoint shared by all tasks.</p>
-<p>If <a href="/docs/latest/configuration/index.html#indexer-caching">query caching</a> is enabled, the query cache is also shared across all tasks.</p>
+<p>If <a href="/docs/0.22.1/configuration/index.html#indexer-caching">query caching</a> is enabled, the query cache is also shared across all tasks.</p>
 <h4><a class="anchor" aria-hidden="true" id="server-http-threads"></a><a href="#server-http-threads" 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 Indexer maintains two equally sized pools of HTTP threads.</p>
 <p>One pool is exclusively used for task control messages between the Overlord and the Indexer (&quot;chat handler threads&quot;). The other pool is used for handling all other HTTP requests.</p>
@@ -114,9 +114,9 @@ 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>The Indexer does not work properly with <a href="/docs/latest/ingestion/tasks.html#index_realtime"><code>index_realtime</code></a> task types. Therefore, it is not compatible with <a href="/docs/latest/ingestion/tranquility.html">Tranquility</a>. If you are using Tranquility, consider migrating to Druid's builtin <a href="/docs/latest/development/extensions-core/kafka-ingestion.html">Apache Kafka</a> or <a href="/docs/latest/development/extensions-core/kinesis-ingestion.html">Amazon K [...]
+<p>The Indexer does not work properly with <a href="/docs/0.22.1/ingestion/tasks.html#index_realtime"><code>index_realtime</code></a> task types. Therefore, it is not compatible with <a href="/docs/0.22.1/ingestion/tranquility.html">Tranquility</a>. If you are using Tranquility, consider migrating to Druid's builtin <a href="/docs/0.22.1/development/extensions-core/kafka-ingestion.html">Apache Kafka</a> or <a href="/docs/0.22.1/development/extensions-core/kinesis-ingestion.html">Amazon K [...]
 <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/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" [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/design/historical.html"><span class="arrow-prev">← </span><span>Historical Process</span></a><a class="docs-next button" href="/docs/0.22.1/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;
@@ -133,6 +133,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.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/design/indexing-service.html b/docs/0.22.1/design/indexing-service.html
similarity index 67%
copy from docs/latest/design/indexing-service.html
copy to docs/0.22.1/design/indexing-service.html
index 6fb09d1..bbd642e 100644
--- a/docs/latest/design/indexing-service.html
+++ b/docs/0.22.1/design/indexing-service.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>Indexing Service · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/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.22.0" / [...]
+<!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.22.1/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.22.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++) {
@@ -78,20 +78,20 @@
   ~ 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/latest/ingestion/tasks.html">tasks</a> create (and sometimes destroy) Druid <a href="/docs/latest/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/latest/design/peons.html">Peon</a> component that can run a single task, a <a href="/docs/latest/design/middlemanager.html">Middle Manager</a> component that manages Peons, and an <a href="/docs/latest/design/overlord.html">Overlord</a> component that manages task distribution to MiddleManagers.
+<p>Indexing <a href="/docs/0.22.1/ingestion/tasks.html">tasks</a> create (and sometimes destroy) Druid <a href="/docs/0.22.1/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.22.1/design/peons.html">Peon</a> component that can run a single task, a <a href="/docs/0.22.1/design/middlemanager.html">Middle Manager</a> component that manages Peons, and an <a href="/docs/0.22.1/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="/docs/latest/operations/api-reference.html#tasks">Overlord Task API</a> for more information.</p>
+<p>Tasks are managed using API endpoints on the Overlord service. Please see <a href="/docs/0.22.1/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/latest/design/overlord.html">Overlord</a>.</p>
+<p>See <a href="/docs/0.22.1/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/latest/design/middlemanager.html">Middle Manager</a>.</p>
+<p>See <a href="/docs/0.22.1/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/latest/design/peons.html">Peon</a>.</p>
+<p>See <a href="/docs/0.22.1/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/latest/ingestion/tasks.html">Tasks</a>.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/design/indexer.html"><span class="arrow-prev">← </span><span>Indexer Process</span></a><a class="docs-next button" href="/docs/latest/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 [...]
+<p>See <a href="/docs/0.22.1/ingestion/tasks.html">Tasks</a>.</p>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/design/indexer.html"><span class="arrow-prev">← </span><span>Indexer Process</span></a><a class="docs-next button" href="/docs/0.22.1/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;
@@ -108,6 +108,6 @@ Overlords and MiddleManagers may run on the same process or across multiple proc
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/design/middlemanager.html b/docs/0.22.1/design/middlemanager.html
similarity index 67%
copy from docs/latest/design/middlemanager.html
copy to docs/0.22.1/design/middlemanager.html
index 150e6c8..1c2ced3 100644
--- a/docs/latest/design/middlemanager.html
+++ b/docs/0.22.1/design/middlemanager.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>MiddleManager Process · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/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.22.0" [...]
+<!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.22.1/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.22.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++) {
@@ -78,16 +78,16 @@
   ~ 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="/docs/latest/configuration/index.html#middlemanager-and-peons">Indexing Service Configuration</a>.</p>
+<p>For Apache Druid MiddleManager Process Configuration, see <a href="/docs/0.22.1/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="/docs/latest/operations/api-reference.html#middlemanager">API reference</a>.</p>
+<p>For a list of API endpoints supported by the MiddleManager, please see the <a href="/docs/0.22.1/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/latest/design/peons.html">Peon</a> is capable of running only one task at a time, however, a MiddleManager may have multiple Peons.</p>
+The reason we have separate JVMs for tasks is for resource and log isolation. Each <a href="/docs/0.22.1/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/latest/design/indexing-service.html"><span class="arrow-prev">← </span><span>Indexing Service</span></a><a class="docs-next button" href="/docs/latest/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> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/design/indexing-service.html"><span class="arrow-prev">← </span><span>Indexing Service</span></a><a class="docs-next button" href="/docs/0.22.1/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;
@@ -104,6 +104,6 @@ The reason we have separate JVMs for tasks is for resource and log isolation. Ea
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/design/overlord.html b/docs/0.22.1/design/overlord.html
similarity index 70%
copy from docs/latest/design/overlord.html
copy to docs/0.22.1/design/overlord.html
index f874e5e..3c95197 100644
--- a/docs/latest/design/overlord.html
+++ b/docs/0.22.1/design/overlord.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>Overlord Process · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/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.22.0" /><meta p [...]
+<!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.22.1/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.22.1" /><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>< [...]
+            </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++) {
@@ -78,16 +78,16 @@
   ~ 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="/docs/latest/configuration/index.html#overlord">Overlord Configuration</a>.</p>
+<p>For Apache Druid Overlord Process Configuration, see <a href="/docs/0.22.1/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="/docs/latest/operations/api-reference.html#overlord">API reference</a>.</p>
+<p>For a list of API endpoints supported by the Overlord, please see the <a href="/docs/0.22.1/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="/docs/latest/operations/management-uis.html#overlord-console">overlord console</a>.</p>
+<p>The Overlord provides a UI for managing tasks and workers. For more details, please see <a href="/docs/0.22.1/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>
@@ -99,7 +99,7 @@ This mode is recommended if you intend to use the indexing service as the single
 <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/latest/design/middlemanager.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">MiddleManager Process</span></a><a class="docs-next button" href="/docs/latest/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" [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/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.22.1/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;
@@ -116,6 +116,6 @@ This mode is recommended if you intend to use the indexing service as the single
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/design/peons.html b/docs/0.22.1/design/peons.html
similarity index 67%
copy from docs/latest/design/peons.html
copy to docs/0.22.1/design/peons.html
index d09e8a6..bae2522 100644
--- a/docs/latest/design/peons.html
+++ b/docs/0.22.1/design/peons.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>Peons · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/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.22.0" /><meta property="og:ti [...]
+<!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.22.1/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.22.1" /><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>< [...]
+            </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++) {
@@ -78,9 +78,9 @@
   ~ 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="/docs/latest/configuration/index.html#peon-query-configuration">Peon Query Configuration</a> and <a href="/docs/latest/configuration/index.html#additional-peon-configuration">Additional Peon Configuration</a>.</p>
+<p>For Apache Druid Peon Configuration, see <a href="/docs/0.22.1/configuration/index.html#peon-query-configuration">Peon Query Configuration</a> and <a href="/docs/0.22.1/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="/docs/latest/operations/api-reference.html#peon">Peon API reference</a>.</p>
+<p>For a list of API endpoints supported by the Peon, please see the <a href="/docs/0.22.1/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- [...]
@@ -89,7 +89,7 @@ Peons should rarely (if ever for testing purposes) be run on their own.</p>
 </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/latest/design/router.html"><span class="arrow-prev">← </span><span>Router Process</span></a><a class="docs-next button" href="/docs/latest/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= [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/design/router.html"><span class="arrow-prev">← </span><span>Router Process</span></a><a class="docs-next button" href="/docs/0.22.1/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;
@@ -106,6 +106,6 @@ The status file indicates where the task status will be output.</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.22.1/design/plumber.html b/docs/0.22.1/design/plumber.html
new file mode 100644
index 0000000..2f57fca
--- /dev/null
+++ b/docs/0.22.1/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.22.1/design/processes.html
similarity index 75%
copy from docs/latest/design/processes.html
copy to docs/0.22.1/design/processes.html
index 46731df..b24516c 100644
--- a/docs/latest/design/processes.html
+++ b/docs/0.22.1/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.22.0" />< [...]
+<!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.22.1/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.22.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++) {
@@ -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.22.1/design/coordinator.html">Coordinator</a></li>
+<li><a href="/docs/0.22.1/design/overlord.html">Overlord</a></li>
+<li><a href="/docs/0.22.1/design/broker.html">Broker</a></li>
+<li><a href="/docs/0.22.1/design/historical.html">Historical</a></li>
+<li><a href="/docs/0.22.1/design/middlemanager.html">MiddleManager</a> and <a href="/docs/0.22.1/design/peons.html">Peons</a></li>
+<li><a href="/docs/0.22.1/design/indexer.html">Indexer (Optional)</a></li>
+<li><a href="/docs/0.22.1/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,38 +101,38 @@
 <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.22.1/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.22.1/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.22.1/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.22.1/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="/docs/latest/operations/druid-console.html">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>
+<p>The Router also runs the <a href="/docs/0.22.1/operations/druid-console.html">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="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>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.22.1/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.22.1/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.22.1/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.22.1/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.22.1/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 [...]
@@ -147,11 +147,11 @@ such that they run on individual servers to avoid resource contention.</p>
 <p>In clusters with very high segment counts, it can make sense to separate the Coordinator and Overlord processes to provide more resources for the Coordinator's segment balancing workload.</p>
 <h4><a class="anchor" aria-hidden="true" id="unified-process"></a><a href="#unified-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  [...]
 <p>The Coordinator and Overlord processes can be run as a single combined process by setting the <code>druid.coordinator.asOverlord.enabled</code> property.</p>
-<p>Please see <a href="/docs/latest/configuration/index.html#coordinator-operation">Coordinator Configuration: Operation</a> for details.</p>
+<p>Please see <a href="/docs/0.22.1/configuration/index.html#coordinator-operation">Coordinator Configuration: Operation</a> for details.</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.22.1/design/segments.html"><span class="arrow-prev">← </span><span>Segments</span></a><a class="docs-next button" href="/docs/0.22.1/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.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.22.1/design/realtime.html b/docs/0.22.1/design/realtime.html
new file mode 100644
index 0000000..2f57fca
--- /dev/null
+++ b/docs/0.22.1/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.22.1/design/router.html
similarity index 78%
copy from docs/latest/design/router.html
copy to docs/0.22.1/design/router.html
index 99a2044..a7a90e0 100644
--- a/docs/latest/design/router.html
+++ b/docs/0.22.1/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.22.0" /><meta prope [...]
+<!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.22.1/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.22.1" /><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++) {
@@ -78,16 +78,16 @@
   ~ 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.
-However, it has been battle-tested in production, and it hosts the powerful <a href="/docs/latest/operations/druid-console.html">Druid Console</a>, so you should feel safe deploying it.</p>
+<p>The Router is an optional and <a href="/docs/0.22.1/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="/docs/0.22.1/operations/druid-console.html">Druid Console</a>, so you should feel safe deploying it.</p>
 </blockquote>
-<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/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 provides query isola [...]
+<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.22.1/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="/docs/latest/operations/druid-console.html">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>
+<p>In addition to query routing, the Router also runs the <a href="/docs/0.22.1/operations/druid-console.html">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 Router Process Configuration, see <a href="/docs/latest/configuration/index.html#router">Router Configuration</a>.</p>
+<p>For Apache Druid Router Process Configuration, see <a href="/docs/0.22.1/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="/docs/latest/operations/api-reference.html#router">Router API</a>.</p>
+<p>For a list of API endpoints supported by the Router, see <a href="/docs/0.22.1/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- [...]
 <pre><code class="hljs">org.apache.druid.cli.Main<span class="hljs-built_in"> server </span>router
 </code></pre>
@@ -156,7 +156,7 @@ This strategy can route both Native and SQL queries (when enabled).</p>
 }
 </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.22.1/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="routing-of-sql-queries"></a><a href="#routing-of-sql-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 [...]
 <p>To enable routing of SQL queries, set <code>druid.router.sql.enable</code> to <code>true</code> (<code>false</code> by default). The broker service for a
@@ -221,7 +221,7 @@ explained in the next section.</p>
 
 <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.22.1/design/overlord.html"><span class="arrow-prev">← </span><span>Overlord Process</span></a><a class="docs-next button" href="/docs/0.22.1/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;
@@ -238,6 +238,6 @@ explained in the next section.</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/design/segments.html b/docs/0.22.1/design/segments.html
similarity index 80%
copy from docs/latest/design/segments.html
copy to docs/0.22.1/design/segments.html
index 01c0a88..73431d4 100644
--- a/docs/latest/design/segments.html
+++ b/docs/0.22.1/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.22.0" /><meta property= [...]
+<!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.22.1/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.22.1" /><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++) {
@@ -81,7 +81,7 @@
 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/ingestion-spec.html#granularityspec"><code>granularitySpec</code></a>.  For Druid to
+<a href="/docs/0.22.1/ingestion/ingestion-spec.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
 segment files are larger than this range, then consider either
@@ -89,7 +89,7 @@ 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.22.1/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
@@ -209,7 +209,7 @@ datasource_intervalStart_intervalEnd_version_partitionNum</p>
 </ol>
 <p>A ColumnDescriptor is essentially an object that allows us to use Jackson's polymorphic deserialization to add new and interesting methods of serialization with minimal impact to the code. It consists of some metadata about the column (what type is it, is it multi-value, etc.) and then a list of serialization/deserialization logic that can deserialize the rest of the binary.</p>
 <h3><a class="anchor" aria-hidden="true" id="compression"></a><a href="#compression" 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>Druid compresses blocks of values for string, long, float, and double columns, using <a href="https://github.com/lz4/lz4-java">LZ4</a> by default, and bitmaps for string columns and numeric null values are compressed using <a href="https://github.com/RoaringBitmap/RoaringBitmap">Roaring</a>. We recommend sticking with these defaults unless experimental verification with your own data and query patterns suggest that non-default options will perform better in your specific case. For exa [...]
+<p>Druid compresses blocks of values for string, long, float, and double columns, using <a href="https://github.com/lz4/lz4-java">LZ4</a> by default, and bitmaps for string columns and numeric null values are compressed using <a href="https://github.com/RoaringBitmap/RoaringBitmap">Roaring</a>. We recommend sticking with these defaults unless experimental verification with your own data and query patterns suggest that non-default options will perform better in your specific case. For exa [...]
 <h2><a class="anchor" aria-hidden="true" id="sharding-data-to-create-segments"></a><a href="#sharding-data-to-create-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. [...]
 <h3><a class="anchor" aria-hidden="true" id="sharding"></a><a href="#sharding" 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>Multiple segments may exist for the same interval of time for the same datasource. These segments form a <code>block</code> for an interval.
@@ -259,7 +259,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="#sql-compatible-null-handling">SQL Compatible Null Handling</a></li><li><a href="#nam [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/design/architecture.html"><span class="arrow-prev">← </span><span>Design</span></a><a class="docs-next button" href="/docs/0.22.1/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;
@@ -276,6 +276,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.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.22.1/development/approximate-histograms.html b/docs/0.22.1/development/approximate-histograms.html
new file mode 100644
index 0000000..8df4839
--- /dev/null
+++ b/docs/0.22.1/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/latest/development/build.html b/docs/0.22.1/development/build.html
similarity index 70%
copy from docs/latest/development/build.html
copy to docs/0.22.1/development/build.html
index 6467374..ce67c26 100644
--- a/docs/latest/development/build.html
+++ b/docs/0.22.1/development/build.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>Build from source · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/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.22.0" /><met [...]
+<!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.22.1/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.22.1" /><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>< [...]
+            </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++) {
@@ -124,7 +124,7 @@ like <a href="https://aws.amazon.com/corretto/">Amazon Corretto</a> or <a href="
 <p>On some systems, ensure you use the Python 3.x version of <code>pip</code>:</p>
 <pre><code class="hljs css language-bash">pip3 install pyyaml
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/javascript.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">JavaScript functionality</span></a><a class="docs-next button" href="/docs/latest/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=" [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/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.22.1/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;
@@ -141,6 +141,6 @@ like <a href="https://aws.amazon.com/corretto/">Amazon Corretto</a> or <a href="
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.22.1/development/community-extensions/azure.html b/docs/0.22.1/development/community-extensions/azure.html
new file mode 100644
index 0000000..8c8a06e
--- /dev/null
+++ b/docs/0.22.1/development/community-extensions/azure.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../extensions-core/azure.html">
+<meta http-equiv="refresh" content="0; url=../extensions-core/azure.html">
+<h1>Redirecting...</h1>
+<a href="../extensions-core/azure.html">Click here if you are not redirected.</a>
+<script>location="../extensions-core/azure.html"</script>
diff --git a/docs/0.22.1/development/community-extensions/cassandra.html b/docs/0.22.1/development/community-extensions/cassandra.html
new file mode 100644
index 0000000..7026a6a
--- /dev/null
+++ b/docs/0.22.1/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.22.1/development/community-extensions/cloudfiles.html b/docs/0.22.1/development/community-extensions/cloudfiles.html
new file mode 100644
index 0000000..0c9b8c5
--- /dev/null
+++ b/docs/0.22.1/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.22.1/development/community-extensions/graphite.html b/docs/0.22.1/development/community-extensions/graphite.html
new file mode 100644
index 0000000..dc31894
--- /dev/null
+++ b/docs/0.22.1/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.22.1/development/community-extensions/kafka-simple.html b/docs/0.22.1/development/community-extensions/kafka-simple.html
new file mode 100644
index 0000000..179d16a
--- /dev/null
+++ b/docs/0.22.1/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.22.1/development/community-extensions/rabbitmq.html b/docs/0.22.1/development/community-extensions/rabbitmq.html
new file mode 100644
index 0000000..179d16a
--- /dev/null
+++ b/docs/0.22.1/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.22.1/development/datasketches-aggregators.html b/docs/0.22.1/development/datasketches-aggregators.html
new file mode 100644
index 0000000..9ef81f4
--- /dev/null
+++ b/docs/0.22.1/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/latest/development/experimental.html b/docs/0.22.1/development/experimental.html
similarity index 64%
copy from docs/latest/development/experimental.html
copy to docs/0.22.1/development/experimental.html
index 16e264f..c2d1f2d 100644
--- a/docs/latest/development/experimental.html
+++ b/docs/0.22.1/development/experimental.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>Experimental features · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/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.2 [...]
+<!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.22.1/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.2 [...]
               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++) {
@@ -88,7 +88,7 @@ This can mean any of the following things:</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/latest/development/versioning.html"><span class="arrow-prev">← </span><span>Versioning</span></a><a class="docs-next button" href="/docs/latest/misc/papers-and-talks.html"><span>Papers</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="/t [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/versioning.html"><span class="arrow-prev">← </span><span>Versioning</span></a><a class="docs-next button" href="/docs/0.22.1/misc/papers-and-talks.html"><span>Papers</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="/t [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -105,6 +105,6 @@ feature for full details.</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-contrib/aliyun-oss.html b/docs/0.22.1/development/extensions-contrib/aliyun-oss.html
similarity index 77%
copy from docs/latest/development/extensions-contrib/aliyun-oss.html
copy to docs/0.22.1/development/extensions-contrib/aliyun-oss.html
index 78d535a..1549153 100644
--- a/docs/latest/development/extensions-contrib/aliyun-oss.html
+++ b/docs/0.22.1/development/extensions-contrib/aliyun-oss.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>Aliyun OSS · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-contrib/aliyun-oss.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" conten [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Aliyun OSS · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-contrib/aliyun-oss.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" conten [...]
               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++) {
@@ -80,7 +80,7 @@
 <p><a href="https://www.aliyun.com">Alibaba Cloud</a> is the 3rd largest cloud infrastructure provider in the world. It provides its own storage solution known as OSS, <a href="https://www.aliyun.com/product/oss">Object Storage Service</a>.
 This document describes how to use OSS as Druid deep storage.</p>
 <h2><a class="anchor" aria-hidden="true" id="installation"></a><a href="#installation" 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>Use the <a href="/docs/latest/operations/pull-deps.html">pull-deps</a> tool shipped with Druid to install the <code>aliyun-oss-extensions</code> extension, as described <a href="/docs/latest/development/extensions.html#community-extensions">here</a> on middle manager and historical nodes.</p>
+<p>Use the <a href="/docs/0.22.1/operations/pull-deps.html">pull-deps</a> tool shipped with Druid to install the <code>aliyun-oss-extensions</code> extension, as described <a href="/docs/0.22.1/development/extensions.html#community-extensions">here</a> on middle manager and historical nodes.</p>
 <pre><code class="hljs css language-bash">java -classpath <span class="hljs-string">"{YOUR_DRUID_DIR}/lib/*"</span> org.apache.druid.cli.Main tools pull-deps -c org.apache.druid.extensions.contrib:aliyun-oss-extensions:{YOUR_DRUID_VERSION}
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="enabling"></a><a href="#enabling" 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  [...]
@@ -152,8 +152,8 @@ To do this, add following configurations:</p>
 <tr><th>Property</th><th>Description</th><th>Default</th><th>Required</th></tr>
 </thead>
 <tbody>
-<tr><td>accessKey</td><td>The <a href="/docs/latest/operations/password-provider.html">Password Provider</a> or plain text string of this OSS InputSource's access key</td><td>None</td><td>yes</td></tr>
-<tr><td>secretKey</td><td>The <a href="/docs/latest/operations/password-provider.html">Password Provider</a> or plain text string of this OSS InputSource's secret key</td><td>None</td><td>yes</td></tr>
+<tr><td>accessKey</td><td>The <a href="/docs/0.22.1/operations/password-provider.html">Password Provider</a> or plain text string of this OSS InputSource's access key</td><td>None</td><td>yes</td></tr>
+<tr><td>secretKey</td><td>The <a href="/docs/0.22.1/operations/password-provider.html">Password Provider</a> or plain text string of this OSS InputSource's secret key</td><td>None</td><td>yes</td></tr>
 <tr><td>endpoint</td><td>The endpoint of this OSS InputSource</td><td>None</td><td>no</td></tr>
 </tbody>
 </table>
@@ -274,7 +274,7 @@ In this case, the <code>uris</code> property of the OSS's input source can be us
 <h2><a class="anchor" aria-hidden="true" id="troubleshooting"></a><a href="#troubleshooting" 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>When using OSS as deep storage or reading from OSS, the most problems that users will encounter are related to OSS permission.
 Please refer to the official <a href="https://www.alibabacloud.com/help/doc-detail/42777.htm">OSS permission troubleshooting document</a> to find a solution.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-contrib/gce-extensions.html"><span class="arrow-prev">← </span><span>GCE Extensions</span></a><a class="docs-next button" href="/docs/latest/development/extensions-contrib/prometheus.html"><span>Prometheus Emitter</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#installation">Installation</ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-contrib/gce-extensions.html"><span class="arrow-prev">← </span><span>GCE Extensions</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-contrib/prometheus.html"><span>Prometheus Emitter</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#installation">Installation</ [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -291,6 +291,6 @@ Please refer to the official <a href="https://www.alibabacloud.com/help/doc-deta
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-contrib/ambari-metrics-emitter.html b/docs/0.22.1/development/extensions-contrib/ambari-metrics-emitter.html
similarity index 71%
copy from docs/latest/development/extensions-contrib/ambari-metrics-emitter.html
copy to docs/0.22.1/development/extensions-contrib/ambari-metrics-emitter.html
index f46c19b..c8d90bf 100644
--- a/docs/latest/development/extensions-contrib/ambari-metrics-emitter.html
+++ b/docs/0.22.1/development/extensions-contrib/ambari-metrics-emitter.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>Ambari Metrics Emitter · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-contrib/ambari-metrics-emitter.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="d [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Ambari Metrics Emitter · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-contrib/ambari-metrics-emitter.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="d [...]
               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++) {
@@ -77,7 +77,7 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>ambari-metrics-emitter</code> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>ambari-metrics-emitter</code> in the extensions load list.</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 emits Druid metrics to an ambari-metrics carbon server. Events are sent after been pickled (i.e., batched). The size of the batch is configurable.</p>
 <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 [...]
@@ -137,7 +137,7 @@ druid.emitter.ambari-metrics.eventConverter={"type":"whiteList", "namespacePrefi
 
 </code></pre>
 <p><strong>Druid emits a huge number of metrics we highly recommend to use the <code>whiteList</code> converter</strong></p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/kubernetes.html"><span class="arrow-prev">← </span><span>Kubernetes</span></a><a class="docs-next button" href="/docs/latest/development/extensions-contrib/cassandra.html"><span>Apache Cassandra</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#introduction">Introduction</a></li><li><a  [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/kubernetes.html"><span class="arrow-prev">← </span><span>Kubernetes</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-contrib/cassandra.html"><span>Apache Cassandra</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#introduction">Introduction</a></li><li><a  [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -154,6 +154,6 @@ druid.emitter.ambari-metrics.eventConverter={"type":"whiteList", "namespacePrefi
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-contrib/cassandra.html b/docs/0.22.1/development/extensions-contrib/cassandra.html
similarity index 65%
copy from docs/latest/development/extensions-contrib/cassandra.html
copy to docs/0.22.1/development/extensions-contrib/cassandra.html
index 8427bf2..50811e9 100644
--- a/docs/latest/development/extensions-contrib/cassandra.html
+++ b/docs/0.22.1/development/extensions-contrib/cassandra.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 Cassandra · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-contrib/cassandra.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" c [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Cassandra · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-contrib/cassandra.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" c [...]
               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++) {
@@ -77,11 +77,11 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>druid-cassandra-storage</code> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>druid-cassandra-storage</code> in the extensions load list.</p>
 <p><a href="http://www.datastax.com/what-we-offer/products-services/datastax-enterprise/apache-cassandra">Apache Cassandra</a> can also
 be leveraged for deep storage.  This requires some additional Druid configuration as well as setting up the necessary
 schema within a Cassandra keystore.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-contrib/ambari-metrics-emitter.html"><span class="arrow-prev">← </span><span>Ambari Metrics Emitter</span></a><a class="docs-next button" href="/docs/latest/development/extensions-contrib/cloudfiles.html"><span>Rackspace Cloud Files</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-foot [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-contrib/ambari-metrics-emitter.html"><span class="arrow-prev">← </span><span>Ambari Metrics Emitter</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-contrib/cloudfiles.html"><span>Rackspace Cloud Files</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-foot [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -98,6 +98,6 @@ schema within a Cassandra keystore.</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-contrib/cloudfiles.html b/docs/0.22.1/development/extensions-contrib/cloudfiles.html
similarity index 70%
copy from docs/latest/development/extensions-contrib/cloudfiles.html
copy to docs/0.22.1/development/extensions-contrib/cloudfiles.html
index 7a06b0a..816c3f5 100644
--- a/docs/latest/development/extensions-contrib/cloudfiles.html
+++ b/docs/0.22.1/development/extensions-contrib/cloudfiles.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>Rackspace Cloud Files · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-contrib/cloudfiles.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:vers [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Rackspace Cloud Files · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-contrib/cloudfiles.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>< [...]
+            </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++) {
@@ -77,7 +77,7 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>druid-cloudfiles-extensions</code> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>druid-cloudfiles-extensions</code> in the extensions load list.</p>
 <h2><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><a href="http://www.rackspace.com/cloud/files/">Rackspace Cloud Files</a> is another option for deep storage. This requires some additional Druid configuration.</p>
 <table>
@@ -103,7 +103,7 @@
 <p>Data is newline delimited, with one JSON object per line and parsed as per the <code>InputRowParser</code> configuration.</p>
 <p>The storage account is shared with the one used for Rackspace's Cloud Files deep storage functionality, but blobs can be in a different region and container.</p>
 <p>As with the Azure blobstore, it is assumed to be gzipped if the extension ends in .gz</p>
-<p>This firehose is <em>splittable</em> and can be used by <a href="/docs/latest/ingestion/native-batch.html#parallel-task">native parallel index tasks</a>.
+<p>This firehose is <em>splittable</em> and can be used by <a href="/docs/0.22.1/ingestion/native-batch.html#parallel-task">native parallel index tasks</a>.
 Since each split represents an object in this firehose, each worker task of <code>index_parallel</code> will read an object.</p>
 <p>Sample spec:</p>
 <pre><code class="hljs css language-json">"firehose" : {
@@ -148,7 +148,7 @@ shardSpecs are not specified, and, in this case, caching can be useful. Prefetch
 <tr><td>path</td><td>The path where data is located.</td><td>N/A</td><td>yes</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-contrib/cassandra.html"><span class="arrow-prev">← </span><span>Apache Cassandra</span></a><a class="docs-next button" href="/docs/latest/development/extensions-contrib/distinctcount.html"><span class="function-name-prevnext">DistinctCount Aggregator</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li>< [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-contrib/cassandra.html"><span class="arrow-prev">← </span><span>Apache Cassandra</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-contrib/distinctcount.html"><span class="function-name-prevnext">DistinctCount Aggregator</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li>< [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -165,6 +165,6 @@ shardSpecs are not specified, and, in this case, caching can be useful. Prefetch
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-contrib/distinctcount.html b/docs/0.22.1/development/extensions-contrib/distinctcount.html
similarity index 69%
copy from docs/latest/development/extensions-contrib/distinctcount.html
copy to docs/0.22.1/development/extensions-contrib/distinctcount.html
index ba80815..c797e17 100644
--- a/docs/latest/development/extensions-contrib/distinctcount.html
+++ b/docs/0.22.1/development/extensions-contrib/distinctcount.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>DistinctCount Aggregator · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-contrib/distinctcount.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearc [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>DistinctCount Aggregator · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-contrib/distinctcount.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearc [...]
               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++) {
@@ -77,7 +77,7 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> the <code>druid-distinctcount</code> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> the <code>druid-distinctcount</code> in the extensions load list.</p>
 <p>Additionally, follow these steps:</p>
 <ol>
 <li>First, use a single dimension hash-based partition spec to partition data by a single dimension. For example visitor_id. This to make sure all rows with a particular value for that dimension will go into the same segment, or this might over count.</li>
@@ -140,7 +140,7 @@
   ]
 }
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-contrib/cloudfiles.html"><span class="arrow-prev">← </span><span>Rackspace Cloud Files</span></a><a class="docs-next button" href="/docs/latest/development/extensions-contrib/graphite.html"><span>Graphite Emitter</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#timeseries-query">Timeseries  [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-contrib/cloudfiles.html"><span class="arrow-prev">← </span><span>Rackspace Cloud Files</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-contrib/graphite.html"><span>Graphite Emitter</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#timeseries-query">Timeseries  [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -157,6 +157,6 @@
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-contrib/gce-extensions.html b/docs/0.22.1/development/extensions-contrib/gce-extensions.html
similarity index 69%
copy from docs/latest/development/extensions-contrib/gce-extensions.html
copy to docs/0.22.1/development/extensions-contrib/gce-extensions.html
index e88c9a4..3f5b440 100644
--- a/docs/latest/development/extensions-contrib/gce-extensions.html
+++ b/docs/0.22.1/development/extensions-contrib/gce-extensions.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>GCE Extensions · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-contrib/gce-extensions.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>GCE Extensions · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-contrib/gce-extensions.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version [...]
               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++) {
@@ -77,7 +77,7 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>gce-extensions</code> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>gce-extensions</code> in the extensions load list.</p>
 <p>At the moment, this extension enables only Druid to autoscale instances in GCE.</p>
 <p>The extension manages the instances to be scaled up and down through the use of the <a href="https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances#resize_managed_group">Managed Instance Groups</a>
 of GCE (MIG from now on). This choice has been made to ease the configuration of the machines and simplify their
@@ -136,7 +136,7 @@ request to provision more workers.  This is safe to be left to <code>1</code></l
 <li>The <code>managedInstanceGroupName</code> used to specify the MIG containing the instances created or
 removed</li>
 </ul>
-<p>Please refer to the Overlord Dynamic Configuration section in the main <a href="/docs/latest/configuration/index.html">documentation</a>
+<p>Please refer to the Overlord Dynamic Configuration section in the main <a href="/docs/0.22.1/configuration/index.html">documentation</a>
 for parameters other than the ones specified here, such as <code>selectStrategy</code> etc.</p>
 <h2><a class="anchor" aria-hidden="true" id="known-limitations"></a><a href="#known-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.22-2- [...]
 <ul>
@@ -146,7 +146,7 @@ call from the API and, while the documentation of the API states that the call c
 that the extension can operate safely with a maximum of 500 MiddleManagers instances at any time (the maximum number
 of instances to be returned for each call).</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-contrib/time-min-max.html"><span class="arrow-prev">← </span><span>Timestamp Min/Max aggregators</span></a><a class="docs-next button" href="/docs/latest/development/extensions-contrib/aliyun-oss.html"><span>Aliyun OSS</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#overlord-dynamic-config [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-contrib/time-min-max.html"><span class="arrow-prev">← </span><span>Timestamp Min/Max aggregators</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-contrib/aliyun-oss.html"><span>Aliyun OSS</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#overlord-dynamic-config [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -163,6 +163,6 @@ of instances to be returned for each call).</li>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.22.1/development/extensions-contrib/google.html b/docs/0.22.1/development/extensions-contrib/google.html
new file mode 100644
index 0000000..cca1c23
--- /dev/null
+++ b/docs/0.22.1/development/extensions-contrib/google.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../extensions-core/google.html">
+<meta http-equiv="refresh" content="0; url=../extensions-core/google.html">
+<h1>Redirecting...</h1>
+<a href="../extensions-core/google.html">Click here if you are not redirected.</a>
+<script>location="../extensions-core/google.html"</script>
diff --git a/docs/latest/development/extensions-contrib/graphite.html b/docs/0.22.1/development/extensions-contrib/graphite.html
similarity index 73%
copy from docs/latest/development/extensions-contrib/graphite.html
copy to docs/0.22.1/development/extensions-contrib/graphite.html
index 41b25fe..fb0749a 100644
--- a/docs/latest/development/extensions-contrib/graphite.html
+++ b/docs/0.22.1/development/extensions-contrib/graphite.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>Graphite Emitter · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-contrib/graphite.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" co [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Graphite Emitter · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-contrib/graphite.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" co [...]
               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++) {
@@ -77,7 +77,7 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>graphite-emitter</code> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>graphite-emitter</code> in the extensions load list.</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 emits druid metrics to a graphite carbon server.
 Metrics can be sent by using <a href="http://graphite.readthedocs.io/en/latest/feeding-carbon.html#the-plaintext-protocol">plaintext</a> or <a href="http://graphite.readthedocs.io/en/latest/feeding-carbon.html#the-pickle-protocol">pickle</a> protocol.
@@ -103,7 +103,7 @@ The pickle protocol is more efficient and supports sending batches of metrics (p
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="supported-event-types"></a><a href="#supported-event-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 [...]
-<p>The graphite emitter only emits service metric events to graphite (See <a href="/docs/latest/operations/metrics.html">Druid Metrics</a> for a list of metrics).</p>
+<p>The graphite emitter only emits service metric events to graphite (See <a href="/docs/0.22.1/operations/metrics.html">Druid Metrics</a> for a list of metrics).</p>
 <p>Alerts and request logs are not sent to graphite. These event types are not well represented in Graphite, which is more suited for timeseries views on numeric metrics, vs. storing non-numeric log events.</p>
 <p>Instead, alerts and request logs are optionally forwarded to other emitter implementations, specified by <code>druid.emitter.graphite.alertEmitters</code> and <code>druid.emitter.graphite.requestLogEmitters</code> respectively.</p>
 <h3><a class="anchor" aria-hidden="true" id="druid-to-graphite-event-converter"></a><a href="#druid-to-graphite-event-converter" 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.5S1 [...]
@@ -148,7 +148,7 @@ druid.emitter.graphite.eventConverter={"type":"whiteList", "namespacePrefix": "d
 
 </code></pre>
 <p><strong>Druid emits a huge number of metrics we highly recommend to use the <code>whiteList</code> converter</strong></p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-contrib/distinctcount.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">DistinctCount Aggregator</span></a><a class="docs-next button" href="/docs/latest/development/extensions-contrib/influx.html"><span class="function-name-prevnext">InfluxDB Line Protocol Parser</span><span class="arrow-next"> →</span></a></div></div></div><nav class=" [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-contrib/distinctcount.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">DistinctCount Aggregator</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-contrib/influx.html"><span class="function-name-prevnext">InfluxDB Line Protocol Parser</span><span class="arrow-next"> →</span></a></div></div></div><nav class=" [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -165,6 +165,6 @@ druid.emitter.graphite.eventConverter={"type":"whiteList", "namespacePrefix": "d
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-contrib/influx.html b/docs/0.22.1/development/extensions-contrib/influx.html
similarity index 67%
copy from docs/latest/development/extensions-contrib/influx.html
copy to docs/0.22.1/development/extensions-contrib/influx.html
index e403dcd..31fc15d 100644
--- a/docs/latest/development/extensions-contrib/influx.html
+++ b/docs/0.22.1/development/extensions-contrib/influx.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>InfluxDB Line Protocol Parser · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-contrib/influx.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch: [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>InfluxDB Line Protocol Parser · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-contrib/influx.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch: [...]
               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++) {
@@ -77,7 +77,7 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>druid-influx-extensions</code> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>druid-influx-extensions</code> in the extensions load list.</p>
 <p>This extension enables Druid to parse the <a href="https://docs.influxdata.com/influxdb/v1.5/write_protocols/line_protocol_tutorial/">InfluxDB Line Protocol</a>, a popular text-based timeseries metric serialization format.</p>
 <h2><a class="anchor" aria-hidden="true" id="line-protocol"></a><a href="#line-protocol" 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>A typical line looks like this:</p>
@@ -110,7 +110,7 @@
       }
 </code></pre>
 <p>The <code>whitelistMeasurements</code> field is an optional list of strings. If present, measurements that do not match one of the strings in the list will be ignored.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-contrib/graphite.html"><span class="arrow-prev">← </span><span>Graphite Emitter</span></a><a class="docs-next button" href="/docs/latest/development/extensions-contrib/influxdb-emitter.html"><span class="function-name-prevnext">InfluxDB Emitter</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-contrib/graphite.html"><span class="arrow-prev">← </span><span>Graphite Emitter</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-contrib/influxdb-emitter.html"><span class="function-name-prevnext">InfluxDB Emitter</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -127,6 +127,6 @@
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-contrib/influxdb-emitter.html b/docs/0.22.1/development/extensions-contrib/influxdb-emitter.html
similarity index 70%
copy from docs/latest/development/extensions-contrib/influxdb-emitter.html
copy to docs/0.22.1/development/extensions-contrib/influxdb-emitter.html
index 66efa33..98cf3f7 100644
--- a/docs/latest/development/extensions-contrib/influxdb-emitter.html
+++ b/docs/0.22.1/development/extensions-contrib/influxdb-emitter.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>InfluxDB Emitter · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-contrib/influxdb-emitter.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:ver [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>InfluxDB Emitter · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-contrib/influxdb-emitter.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>< [...]
+            </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++) {
@@ -77,9 +77,9 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>druid-influxdb-emitter</code> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>druid-influxdb-emitter</code> in the extensions load list.</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 emits druid metrics to <a href="https://www.influxdata.com/time-series-platform/influxdb/">InfluxDB</a> over HTTP. Currently this emitter only emits service metric events to InfluxDB (See <a href="/docs/latest/operations/metrics.html">Druid metrics</a> for a list of metrics).
+<p>This extension emits druid metrics to <a href="https://www.influxdata.com/time-series-platform/influxdb/">InfluxDB</a> over HTTP. Currently this emitter only emits service metric events to InfluxDB (See <a href="/docs/0.22.1/operations/metrics.html">Druid metrics</a> for a list of metrics).
 When a metric event is fired it is added to a queue of events. After a configurable amount of time, the events on the queue are transformed to InfluxDB's line protocol
 and POSTed to the InfluxDB HTTP API. The entire queue is flushed at this point. The queue is also flushed as the emitter is shutdown.</p>
 <p>Note that authentication and authorization must be <a href="https://docs.influxdata.com/influxdb/v1.7/administration/authentication_and_authorization/">enabled</a> on the InfluxDB server.</p>
@@ -121,7 +121,7 @@ and POSTed to the InfluxDB HTTP API. The entire queue is flushed at this point.
 <p>The InfluxDB emitter has a white list of dimensions
 which will be added as a tag to the line protocol string if the metric has a dimension from the white list.
 The value of the dimension is sanitized such that every occurrence of a dot or whitespace is replaced with a <code>_</code> .</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-contrib/influx.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">InfluxDB Line Protocol Parser</span></a><a class="docs-next button" href="/docs/latest/development/extensions-contrib/kafka-emitter.html"><span>Kafka Emitter</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-contrib/influx.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">InfluxDB Line Protocol Parser</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-contrib/kafka-emitter.html"><span>Kafka Emitter</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -138,6 +138,6 @@ The value of the dimension is sanitized such that every occurrence of a dot or w
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-contrib/kafka-emitter.html b/docs/0.22.1/development/extensions-contrib/kafka-emitter.html
similarity index 68%
copy from docs/latest/development/extensions-contrib/kafka-emitter.html
copy to docs/0.22.1/development/extensions-contrib/kafka-emitter.html
index 92708c1..b2c7e24 100644
--- a/docs/latest/development/extensions-contrib/kafka-emitter.html
+++ b/docs/0.22.1/development/extensions-contrib/kafka-emitter.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>Kafka Emitter · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-contrib/kafka-emitter.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version"  [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Kafka Emitter · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-contrib/kafka-emitter.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version"  [...]
               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++) {
@@ -77,7 +77,7 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>kafka-emitter</code> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>kafka-emitter</code> in the extensions load list.</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 emits Druid metrics to <a href="https://kafka.apache.org">Apache Kafka</a> directly with JSON format.<br>
 Currently, Kafka has not only their nice ecosystem but also consumer API readily available.
@@ -104,7 +104,7 @@ druid<span class="hljs-selector-class">.emitter</span><span class="hljs-selector
 druid<span class="hljs-selector-class">.emitter</span><span class="hljs-selector-class">.kafka</span><span class="hljs-selector-class">.alert</span>.topic=druid-alert
 druid<span class="hljs-selector-class">.emitter</span><span class="hljs-selector-class">.kafka</span><span class="hljs-selector-class">.producer</span>.config={<span class="hljs-string">"max.block.ms"</span>:<span class="hljs-number">10000</span>}
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-contrib/influxdb-emitter.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">InfluxDB Emitter</span></a><a class="docs-next button" href="/docs/latest/development/extensions-contrib/materialized-view.html"><span>Materialized View</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings">< [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-contrib/influxdb-emitter.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">InfluxDB Emitter</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-contrib/materialized-view.html"><span>Materialized View</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings">< [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -121,6 +121,6 @@ druid<span class="hljs-selector-class">.emitter</span><span class="hljs-selector
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.22.1/development/extensions-contrib/kafka-simple.html b/docs/0.22.1/development/extensions-contrib/kafka-simple.html
new file mode 100644
index 0000000..4d4bfd2
--- /dev/null
+++ b/docs/0.22.1/development/extensions-contrib/kafka-simple.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/development/extensions-contrib/materialized-view.html b/docs/0.22.1/development/extensions-contrib/materialized-view.html
similarity index 71%
copy from docs/latest/development/extensions-contrib/materialized-view.html
copy to docs/0.22.1/development/extensions-contrib/materialized-view.html
index 9b6d07e..6c8b275 100644
--- a/docs/latest/development/extensions-contrib/materialized-view.html
+++ b/docs/0.22.1/development/extensions-contrib/materialized-view.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>Materialized View · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-contrib/materialized-view.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:v [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Materialized View · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-contrib/materialized-view.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:v [...]
               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++) {
@@ -122,8 +122,8 @@ The <code>derivativeDataSource</code> supervisor is used to keep the timeline of
 <tr><td>Type</td><td>The supervisor type. This should always be <code>derivativeDataSource</code>.</td><td>yes</td></tr>
 <tr><td>baseDataSource</td><td>The name of base dataSource. This dataSource data should be already stored inside Druid, and the dataSource will be used as input data.</td><td>yes</td></tr>
 <tr><td>dimensionsSpec</td><td>Specifies the dimensions of the data. These dimensions must be the subset of baseDataSource's dimensions.</td><td>yes</td></tr>
-<tr><td>metricsSpec</td><td>A list of aggregators. These metrics must be the subset of baseDataSource's metrics. See <a href="/docs/latest/querying/aggregations.html">aggregations</a>.</td><td>yes</td></tr>
-<tr><td>tuningConfig</td><td>TuningConfig must be HadoopTuningConfig. See <a href="/docs/latest/ingestion/hadoop.html#tuningconfig">Hadoop tuning config</a>.</td><td>yes</td></tr>
+<tr><td>metricsSpec</td><td>A list of aggregators. These metrics must be the subset of baseDataSource's metrics. See <a href="/docs/0.22.1/querying/aggregations.html">aggregations</a>.</td><td>yes</td></tr>
+<tr><td>tuningConfig</td><td>TuningConfig must be HadoopTuningConfig. See <a href="/docs/0.22.1/ingestion/hadoop.html#tuningconfig">Hadoop tuning config</a>.</td><td>yes</td></tr>
 <tr><td>dataSource</td><td>The name of this derived dataSource.</td><td>no(default=baseDataSource-hashCode of supervisor)</td></tr>
 <tr><td>hadoopDependencyCoordinates</td><td>A JSON array of Hadoop dependency coordinates that Druid will use, this property will override the default Hadoop coordinates. Once specified, Druid will look for those Hadoop dependencies from the location specified by druid.extensions.hadoopDependenciesDir</td><td>no</td></tr>
 <tr><td>classpathPrefix</td><td>Classpath that will be prepended for the Peon process.</td><td>no</td></tr>
@@ -182,11 +182,11 @@ The <code>derivativeDataSource</code> supervisor is used to keep the timeline of
 </thead>
 <tbody>
 <tr><td>queryType</td><td>The query type. This should always be view</td><td>yes</td></tr>
-<tr><td>query</td><td>The real query of this <code>view</code> query. The real query must be <a href="/docs/latest/querying/groupbyquery.html">groupBy</a>, <a href="/docs/latest/querying/topnquery.html">topN</a>, or <a href="/docs/latest/querying/timeseriesquery.html">timeseries</a> type.</td><td>yes</td></tr>
+<tr><td>query</td><td>The real query of this <code>view</code> query. The real query must be <a href="/docs/0.22.1/querying/groupbyquery.html">groupBy</a>, <a href="/docs/0.22.1/querying/topnquery.html">topN</a>, or <a href="/docs/0.22.1/querying/timeseriesquery.html">timeseries</a> type.</td><td>yes</td></tr>
 </tbody>
 </table>
 <p><strong>Note that Materialized View is currently designated as experimental. Please make sure the time of all processes are the same and increase monotonically. Otherwise, some unexpected errors may happen on query results.</strong></p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-contrib/kafka-emitter.html"><span class="arrow-prev">← </span><span>Kafka Emitter</span></a><a class="docs-next button" href="/docs/latest/development/extensions-contrib/momentsketch-quantiles.html"><span>Moment Sketches for Approximate Quantiles module</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><l [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-contrib/kafka-emitter.html"><span class="arrow-prev">← </span><span>Kafka Emitter</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-contrib/momentsketch-quantiles.html"><span>Moment Sketches for Approximate Quantiles module</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><l [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -203,6 +203,6 @@ The <code>derivativeDataSource</code> supervisor is used to keep the timeline of
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-contrib/momentsketch-quantiles.html b/docs/0.22.1/development/extensions-contrib/momentsketch-quantiles.html
similarity index 70%
copy from docs/latest/development/extensions-contrib/momentsketch-quantiles.html
copy to docs/0.22.1/development/extensions-contrib/momentsketch-quantiles.html
index d5281ad..6fa12b1 100644
--- a/docs/latest/development/extensions-contrib/momentsketch-quantiles.html
+++ b/docs/0.22.1/development/extensions-contrib/momentsketch-quantiles.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>Moment Sketches for Approximate Quantiles module · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-contrib/momentsketch-quantiles.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" c [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Moment Sketches for Approximate Quantiles module · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-contrib/momentsketch-quantiles.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" c [...]
               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++) {
@@ -79,7 +79,7 @@
   -->
 <p>This module provides aggregators for approximate quantile queries using the <a href="https://github.com/stanford-futuredata/momentsketch">momentsketch</a> library.
 The momentsketch provides coarse quantile estimates with less space and aggregation time overheads than traditional sketches, approaching the performance of counts and sums by reconstructing distributions from computed statistics.</p>
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> in the extensions load list.</p>
 <h3><a class="anchor" aria-hidden="true" id="aggregator"></a><a href="#aggregator" 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 result of the aggregation is a momentsketch that is the union of all sketches either built from raw data or read from the segments.</p>
 <p>The <code>momentSketch</code> aggregator operates over raw data while the <code>momentSketchMerge</code> aggregator should be used when aggregating precomputed sketches.</p>
@@ -158,7 +158,7 @@ The momentsketch provides coarse quantile estimates with less space and aggregat
   }]
 }
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-contrib/materialized-view.html"><span class="arrow-prev">← </span><span>Materialized View</span></a><a class="docs-next button" href="/docs/latest/development/extensions-contrib/moving-average-query.html"><span>Moving Average Query</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-foote [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-contrib/materialized-view.html"><span class="arrow-prev">← </span><span>Materialized View</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-contrib/moving-average-query.html"><span>Moving Average Query</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-foote [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -175,6 +175,6 @@ The momentsketch provides coarse quantile estimates with less space and aggregat
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-contrib/moving-average-query.html b/docs/0.22.1/development/extensions-contrib/moving-average-query.html
similarity index 78%
copy from docs/latest/development/extensions-contrib/moving-average-query.html
copy to docs/0.22.1/development/extensions-contrib/moving-average-query.html
index d9093da..bcf5943 100644
--- a/docs/latest/development/extensions-contrib/moving-average-query.html
+++ b/docs/0.22.1/development/extensions-contrib/moving-average-query.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>Moving Average Query · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-contrib/moving-average-query.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docse [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Moving Average Query · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-contrib/moving-average-query.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docse [...]
               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++) {
@@ -81,10 +81,10 @@
 <p><strong>Moving Average Query</strong> is an extension which provides support for <a href="https://en.wikipedia.org/wiki/Moving_average">Moving Average</a> and other Aggregate <a href="https://en.wikibooks.org/wiki/Structured_Query_Language/Window_functions">Window Functions</a> in Druid queries.</p>
 <p>These Aggregate Window Functions consume standard Druid Aggregators and outputs additional windowed aggregates called <a href="#averagers">Averagers</a>.</p>
 <h4><a class="anchor" aria-hidden="true" id="high-level-algorithm"></a><a href="#high-level-algorithm" 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>Moving Average encapsulates the <a href="/docs/latest/querying/groupbyquery.html">groupBy query</a> (Or <a href="/docs/latest/querying/timeseriesquery.html">timeseries</a> in case of no dimensions) in order to rely on the maturity of these query types.</p>
+<p>Moving Average encapsulates the <a href="/docs/0.22.1/querying/groupbyquery.html">groupBy query</a> (Or <a href="/docs/0.22.1/querying/timeseriesquery.html">timeseries</a> in case of no dimensions) in order to rely on the maturity of these query types.</p>
 <p>It runs the query in two main phases:</p>
 <ol>
-<li>Runs an inner <a href="/docs/latest/querying/groupbyquery.html">groupBy</a> or <a href="/docs/latest/querying/timeseriesquery.html">timeseries</a> query to compute Aggregators (i.e. daily count of events).</li>
+<li>Runs an inner <a href="/docs/0.22.1/querying/groupbyquery.html">groupBy</a> or <a href="/docs/0.22.1/querying/timeseriesquery.html">timeseries</a> query to compute Aggregators (i.e. daily count of events).</li>
 <li>Passes over aggregated results in Broker, in order to compute Averagers (i.e. moving 7 day average of the daily count).</li>
 </ol>
 <h4><a class="anchor" aria-hidden="true" id="main-enhancements-provided-by-this-extension"></a><a href="#main-enhancements-provided-by-this-extension" 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-1v [...]
@@ -98,7 +98,7 @@
 <p><a href="https://cloud.google.com/bigquery/docs/reference/standard-sql/analytic-function-concepts">Analytic Functions</a></p>
 <h2><a class="anchor" aria-hidden="true" id="operations"></a><a href="#operations" 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 [...]
 <h3><a class="anchor" aria-hidden="true" id="installation"></a><a href="#installation" 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>Use <a href="/docs/latest/operations/pull-deps.html">pull-deps</a> tool shipped with Druid to install this <a href="/docs/latest/development/extensions.html#community-extensions">extension</a> on all Druid broker and router nodes.</p>
+<p>Use <a href="/docs/0.22.1/operations/pull-deps.html">pull-deps</a> tool shipped with Druid to install this <a href="/docs/0.22.1/development/extensions.html#community-extensions">extension</a> on all Druid broker and router nodes.</p>
 <pre><code class="hljs css language-bash">java -classpath <span class="hljs-string">"&lt;your_druid_dir&gt;/lib/*"</span> org.apache.druid.cli.Main tools pull-deps -c org.apache.druid.extensions.contrib:druid-moving-average-query:{VERSION}
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="enabling"></a><a href="#enabling" 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  [...]
@@ -116,7 +116,7 @@
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="query-spec"></a><a href="#query-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.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <ul>
-<li>Most properties in the query spec derived from  <a href="/docs/latest/querying/groupbyquery.html">groupBy query</a> / <a href="/docs/latest/querying/timeseriesquery.html">timeseries</a>, see documentation for these query types.</li>
+<li>Most properties in the query spec derived from  <a href="/docs/0.22.1/querying/groupbyquery.html">groupBy query</a> / <a href="/docs/0.22.1/querying/timeseriesquery.html">timeseries</a>, see documentation for these query types.</li>
 </ul>
 <table>
 <thead>
@@ -124,18 +124,18 @@
 </thead>
 <tbody>
 <tr><td>queryType</td><td>This String should always be &quot;movingAverage&quot;; this is the first thing Druid looks at to figure out how to interpret the query.</td><td>yes</td></tr>
-<tr><td>dataSource</td><td>A String or Object defining the data source to query, very similar to a table in a relational database. See <a href="/docs/latest/querying/datasource.html">DataSource</a> for more information.</td><td>yes</td></tr>
-<tr><td>dimensions</td><td>A JSON list of <a href="/docs/latest/querying/dimensionspecs.html">DimensionSpec</a> (Notice that property is optional)</td><td>no</td></tr>
-<tr><td>limitSpec</td><td>See <a href="/docs/latest/querying/limitspec.html">LimitSpec</a></td><td>no</td></tr>
-<tr><td>having</td><td>See <a href="/docs/latest/querying/having.html">Having</a></td><td>no</td></tr>
-<tr><td>granularity</td><td>A period granularity; See <a href="/docs/latest/querying/granularities.html#period-granularities">Period Granularities</a></td><td>yes</td></tr>
-<tr><td>filter</td><td>See <a href="/docs/latest/querying/filters.html">Filters</a></td><td>no</td></tr>
-<tr><td>aggregations</td><td>Aggregations forms the input to Averagers; See <a href="/docs/latest/querying/aggregations.html">Aggregations</a></td><td>yes</td></tr>
-<tr><td>postAggregations</td><td>Supports only aggregations as input; See <a href="/docs/latest/querying/post-aggregations.html">Post Aggregations</a></td><td>no</td></tr>
+<tr><td>dataSource</td><td>A String or Object defining the data source to query, very similar to a table in a relational database. See <a href="/docs/0.22.1/querying/datasource.html">DataSource</a> for more information.</td><td>yes</td></tr>
+<tr><td>dimensions</td><td>A JSON list of <a href="/docs/0.22.1/querying/dimensionspecs.html">DimensionSpec</a> (Notice that property is optional)</td><td>no</td></tr>
+<tr><td>limitSpec</td><td>See <a href="/docs/0.22.1/querying/limitspec.html">LimitSpec</a></td><td>no</td></tr>
+<tr><td>having</td><td>See <a href="/docs/0.22.1/querying/having.html">Having</a></td><td>no</td></tr>
+<tr><td>granularity</td><td>A period granularity; See <a href="/docs/0.22.1/querying/granularities.html#period-granularities">Period Granularities</a></td><td>yes</td></tr>
+<tr><td>filter</td><td>See <a href="/docs/0.22.1/querying/filters.html">Filters</a></td><td>no</td></tr>
+<tr><td>aggregations</td><td>Aggregations forms the input to Averagers; See <a href="/docs/0.22.1/querying/aggregations.html">Aggregations</a></td><td>yes</td></tr>
+<tr><td>postAggregations</td><td>Supports only aggregations as input; See <a href="/docs/0.22.1/querying/post-aggregations.html">Post Aggregations</a></td><td>no</td></tr>
 <tr><td>intervals</td><td>A JSON Object representing ISO-8601 Intervals. This defines the time ranges to run the query over.</td><td>yes</td></tr>
 <tr><td>context</td><td>An additional JSON Object which can be used to specify certain flags.</td><td>no</td></tr>
 <tr><td>averagers</td><td>Defines the moving average function; See <a href="#averagers">Averagers</a></td><td>yes</td></tr>
-<tr><td>postAveragers</td><td>Support input of both averagers and aggregations; Syntax is identical to postAggregations (See <a href="/docs/latest/querying/post-aggregations.html">Post Aggregations</a>)</td><td>no</td></tr>
+<tr><td>postAveragers</td><td>Support input of both averagers and aggregations; Syntax is identical to postAggregations (See <a href="/docs/0.22.1/querying/post-aggregations.html">Post Aggregations</a>)</td><td>no</td></tr>
 </tbody>
 </table>
 <h2><a class="anchor" aria-hidden="true" id="averagers"></a><a href="#averagers" 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 [...]
@@ -198,7 +198,7 @@ A prime example would be weekly buckets, resulting in a Day of Week calculation.
 <p>Within each output record, the averager will compute the result over the following buckets: current (#0), #7, #14, #21.
 Whereas without specifying cycleSize it would have computed over all 28 buckets.</p>
 <h2><a class="anchor" aria-hidden="true" id="examples"></a><a href="#examples" 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>All examples are based on the Wikipedia dataset provided in the Druid <a href="/docs/latest/tutorials/index.html">tutorials</a>.</p>
+<p>All examples are based on the Wikipedia dataset provided in the Druid <a href="/docs/0.22.1/tutorials/index.html">tutorials</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="basic-example"></a><a href="#basic-example" 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>Calculating a 7-buckets moving average for Wikipedia edit deltas.</p>
 <p>Query syntax:</p>
@@ -377,7 +377,7 @@ Whereas without specifying cycleSize it would have computed over all 28 buckets.
   ]
 }
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-contrib/momentsketch-quantiles.html"><span class="arrow-prev">← </span><span>Moment Sketches for Approximate Quantiles module</span></a><a class="docs-next button" href="/docs/latest/development/extensions-contrib/opentsdb-emitter.html"><span class="function-name-prevnext">OpenTSDB Emitter</span><span class="arrow-next"> →</span></a></div></div></div><nav class="o [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-contrib/momentsketch-quantiles.html"><span class="arrow-prev">← </span><span>Moment Sketches for Approximate Quantiles module</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-contrib/opentsdb-emitter.html"><span class="function-name-prevnext">OpenTSDB Emitter</span><span class="arrow-next"> →</span></a></div></div></div><nav class="o [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -394,6 +394,6 @@ Whereas without specifying cycleSize it would have computed over all 28 buckets.
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-contrib/opentsdb-emitter.html b/docs/0.22.1/development/extensions-contrib/opentsdb-emitter.html
similarity index 69%
copy from docs/latest/development/extensions-contrib/opentsdb-emitter.html
copy to docs/0.22.1/development/extensions-contrib/opentsdb-emitter.html
index c86240e..618fb4b 100644
--- a/docs/latest/development/extensions-contrib/opentsdb-emitter.html
+++ b/docs/0.22.1/development/extensions-contrib/opentsdb-emitter.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>OpenTSDB Emitter · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-contrib/opentsdb-emitter.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:ver [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>OpenTSDB Emitter · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-contrib/opentsdb-emitter.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>< [...]
+            </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++) {
@@ -77,9 +77,9 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>opentsdb-emitter</code> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>opentsdb-emitter</code> in the extensions load list.</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 emits druid metrics to <a href="https://github.com/OpenTSDB/opentsdb">OpenTSDB</a> over HTTP (Using <code>Jersey client</code>). And this emitter only emits service metric events to OpenTSDB (See <a href="/docs/latest/operations/metrics.html">Druid metrics</a> for a list of metrics).</p>
+<p>This extension emits druid metrics to <a href="https://github.com/OpenTSDB/opentsdb">OpenTSDB</a> over HTTP (Using <code>Jersey client</code>). And this emitter only emits service metric events to OpenTSDB (See <a href="/docs/0.22.1/operations/metrics.html">Druid metrics</a> for a list of metrics).</p>
 <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 the OpenTSDB emitter are under <code>druid.emitter.opentsdb</code>.</p>
 <table>
@@ -109,7 +109,7 @@ e.g.</p>
 ]
 </code></pre>
 <p>For most use-cases, the default configuration is sufficient.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-contrib/moving-average-query.html"><span class="arrow-prev">← </span><span>Moving Average Query</span></a><a class="docs-next button" href="/docs/latest/development/extensions-contrib/redis-cache.html"><span>Druid Redis Cache</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#introduction">In [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-contrib/moving-average-query.html"><span class="arrow-prev">← </span><span>Moving Average Query</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-contrib/redis-cache.html"><span>Druid Redis Cache</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#introduction">In [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -126,6 +126,6 @@ e.g.</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.22.1/development/extensions-contrib/orc.html b/docs/0.22.1/development/extensions-contrib/orc.html
new file mode 100644
index 0000000..f5c91cf
--- /dev/null
+++ b/docs/0.22.1/development/extensions-contrib/orc.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../extensions-core/orc.html">
+<meta http-equiv="refresh" content="0; url=../extensions-core/orc.html">
+<h1>Redirecting...</h1>
+<a href="../extensions-core/orc.html">Click here if you are not redirected.</a>
+<script>location="../extensions-core/orc.html"</script>
diff --git a/docs/0.22.1/development/extensions-contrib/parquet.html b/docs/0.22.1/development/extensions-contrib/parquet.html
new file mode 100644
index 0000000..edc7307
--- /dev/null
+++ b/docs/0.22.1/development/extensions-contrib/parquet.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../../development/extensions-core/parquet.html">
+<meta http-equiv="refresh" content="0; url=../../development/extensions-core/parquet.html">
+<h1>Redirecting...</h1>
+<a href="../../development/extensions-core/parquet.html">Click here if you are not redirected.</a>
+<script>location="../../development/extensions-core/parquet.html"</script>
diff --git a/docs/latest/development/extensions-contrib/prometheus.html b/docs/0.22.1/development/extensions-contrib/prometheus.html
similarity index 70%
copy from docs/latest/development/extensions-contrib/prometheus.html
copy to docs/0.22.1/development/extensions-contrib/prometheus.html
index f84bbc0..2b500e0 100644
--- a/docs/latest/development/extensions-contrib/prometheus.html
+++ b/docs/0.22.1/development/extensions-contrib/prometheus.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>Prometheus Emitter · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-contrib/prometheus.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Prometheus Emitter · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-contrib/prometheus.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version [...]
               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++) {
@@ -77,7 +77,7 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>prometheus-emitter</code> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>prometheus-emitter</code> in the extensions load list.</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 exposes <a href="https://druid.apache.org/docs/latest/operations/metrics.html">Druid metrics</a> for collection by a Prometheus server (<a href="https://prometheus.io/">https://prometheus.io/</a>).
 Emitter is enabled by setting <code>druid.emitter=prometheus</code> <a href="https://druid.apache.org/docs/latest/configuration/index.html#emitting-metrics">configs</a> or include <code>prometheus</code> in the composing emitter list.</p>
@@ -116,7 +116,7 @@ the service name.
 e.g.
 <code>&quot;coordinator-segment/count&quot; : { &quot;dimensions&quot; : [&quot;dataSource&quot;], &quot;type&quot; : &quot;gauge&quot; }, &quot;historical-segment/count&quot; : { &quot;dimensions&quot; : [&quot;dataSource&quot;, &quot;tier&quot;, &quot;priority&quot;], &quot;type&quot; : &quot;gauge&quot; }</code></p>
 <p>For most use-cases, the default mapping is sufficient.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-contrib/aliyun-oss.html"><span class="arrow-prev">← </span><span>Aliyun OSS</span></a><a class="docs-next button" href="/docs/latest/operations/kubernetes.html"><span>kubernetes</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#introduction">Introduction</a></li><li><a href="#configuration"> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-contrib/aliyun-oss.html"><span class="arrow-prev">← </span><span>Aliyun OSS</span></a><a class="docs-next button" href="/docs/0.22.1/operations/kubernetes.html"><span>kubernetes</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#introduction">Introduction</a></li><li><a href="#configuration"> [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -133,6 +133,6 @@ e.g.
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.22.1/development/extensions-contrib/rabbitmq.html b/docs/0.22.1/development/extensions-contrib/rabbitmq.html
new file mode 100644
index 0000000..4d4bfd2
--- /dev/null
+++ b/docs/0.22.1/development/extensions-contrib/rabbitmq.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/development/extensions-contrib/redis-cache.html b/docs/0.22.1/development/extensions-contrib/redis-cache.html
similarity index 71%
copy from docs/latest/development/extensions-contrib/redis-cache.html
copy to docs/0.22.1/development/extensions-contrib/redis-cache.html
index 1d5c194..b1bb14b 100644
--- a/docs/latest/development/extensions-contrib/redis-cache.html
+++ b/docs/0.22.1/development/extensions-contrib/redis-cache.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>Druid Redis Cache · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-contrib/redis-cache.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Druid Redis Cache · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-contrib/redis-cache.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version [...]
               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++) {
@@ -80,16 +80,16 @@
 <p>A cache implementation for Druid based on <a href="https://github.com/redis/redis">Redis</a>.</p>
 <p>Below are guidance and configuration options known to this module.</p>
 <h2><a class="anchor" aria-hidden="true" id="installation"></a><a href="#installation" 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>Use <a href="/docs/latest/operations/pull-deps.html">pull-deps</a> tool shipped with Druid to install this <a href="/docs/latest/development/extensions.html#community-extensions">extension</a> on broker, historical and middle manager nodes.</p>
+<p>Use <a href="/docs/0.22.1/operations/pull-deps.html">pull-deps</a> tool shipped with Druid to install this <a href="/docs/0.22.1/development/extensions.html#community-extensions">extension</a> on broker, historical and middle manager nodes.</p>
 <pre><code class="hljs css language-bash">java -classpath <span class="hljs-string">"druid_dir/lib/*"</span> org.apache.druid.cli.Main tools pull-deps -c org.apache.druid.extensions.contrib:druid-redis-cache:{VERSION}
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="enabling"></a><a href="#enabling" 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>To enable this extension after installation,</p>
 <ol>
-<li><a href="/docs/latest/development/extensions.html#loading-extensions">include</a> this <code>druid-redis-cache</code> extension</li>
-<li>to enable cache on broker nodes, follow <a href="/docs/latest/configuration/index.html#broker-caching">broker caching docs</a> to set related properties</li>
-<li>to enable cache on historical nodes, follow <a href="/docs/latest/configuration/index.html#historical-caching">historical caching docs</a> to set related properties</li>
-<li>to enable cache on middle manager nodes, follow <a href="/docs/latest/configuration/index.html#peon-caching">peon caching docs</a> to set related properties</li>
+<li><a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> this <code>druid-redis-cache</code> extension</li>
+<li>to enable cache on broker nodes, follow <a href="/docs/0.22.1/configuration/index.html#broker-caching">broker caching docs</a> to set related properties</li>
+<li>to enable cache on historical nodes, follow <a href="/docs/0.22.1/configuration/index.html#historical-caching">historical caching docs</a> to set related properties</li>
+<li>to enable cache on middle manager nodes, follow <a href="/docs/0.22.1/configuration/index.html#peon-caching">peon caching docs</a> to set related properties</li>
 <li>set <code>druid.cache.type</code> to <code>redis</code></li>
 <li>add the following properties</li>
 </ol>
@@ -157,7 +157,7 @@
 <tr><td><code>query/cache/redis/*/requests</code></td><td>Count of requests to redis cache</td><td>whatever request to redis will increase request count by 1</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-contrib/opentsdb-emitter.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">OpenTSDB Emitter</span></a><a class="docs-next button" href="/docs/latest/development/extensions-contrib/sqlserver.html"><span>Microsoft SQLServer</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a  [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-contrib/opentsdb-emitter.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">OpenTSDB Emitter</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-contrib/sqlserver.html"><span>Microsoft SQLServer</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a  [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -174,6 +174,6 @@
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.22.1/development/extensions-contrib/rocketmq.html b/docs/0.22.1/development/extensions-contrib/rocketmq.html
new file mode 100644
index 0000000..4d4bfd2
--- /dev/null
+++ b/docs/0.22.1/development/extensions-contrib/rocketmq.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.22.1/development/extensions-contrib/scan-query.html b/docs/0.22.1/development/extensions-contrib/scan-query.html
new file mode 100644
index 0000000..38ab2db
--- /dev/null
+++ b/docs/0.22.1/development/extensions-contrib/scan-query.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../../querying/scan-query.html">
+<meta http-equiv="refresh" content="0; url=../../querying/scan-query.html">
+<h1>Redirecting...</h1>
+<a href="../../querying/scan-query.html">Click here if you are not redirected.</a>
+<script>location="../../querying/scan-query.html"</script>
diff --git a/docs/latest/development/extensions-contrib/sqlserver.html b/docs/0.22.1/development/extensions-contrib/sqlserver.html
similarity index 67%
copy from docs/latest/development/extensions-contrib/sqlserver.html
copy to docs/0.22.1/development/extensions-contrib/sqlserver.html
index 5010c5f..c493a73 100644
--- a/docs/latest/development/extensions-contrib/sqlserver.html
+++ b/docs/0.22.1/development/extensions-contrib/sqlserver.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>Microsoft SQLServer · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-contrib/sqlserver.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Microsoft SQLServer · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-contrib/sqlserver.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version [...]
               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++) {
@@ -77,7 +77,7 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>sqlserver-metadata-storage</code> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>sqlserver-metadata-storage</code> in the extensions load list.</p>
 <h2><a class="anchor" aria-hidden="true" id="setting-up-sqlserver"></a><a href="#setting-up-sqlserver" 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 [...]
 <ol>
 <li><p>Install Microsoft SQLServer</p></li>
@@ -110,7 +110,7 @@ with the location (host name and port) of the database.</p>
 <span class="hljs-meta">druid.metadata.storage.connector.user</span>=<span class="hljs-string">druid</span>
 <span class="hljs-meta">druid.metadata.storage.connector.password</span>=<span class="hljs-string">diurd</span>
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-contrib/redis-cache.html"><span class="arrow-prev">← </span><span>Druid Redis Cache</span></a><a class="docs-next button" href="/docs/latest/development/extensions-contrib/statsd.html"><span class="function-name-prevnext">StatsD Emitter</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#setti [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-contrib/redis-cache.html"><span class="arrow-prev">← </span><span>Druid Redis Cache</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-contrib/statsd.html"><span class="function-name-prevnext">StatsD Emitter</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#setti [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -127,6 +127,6 @@ with the location (host name and port) of the database.</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-contrib/statsd.html b/docs/0.22.1/development/extensions-contrib/statsd.html
similarity index 70%
copy from docs/latest/development/extensions-contrib/statsd.html
copy to docs/0.22.1/development/extensions-contrib/statsd.html
index 0058547..53500a1 100644
--- a/docs/latest/development/extensions-contrib/statsd.html
+++ b/docs/0.22.1/development/extensions-contrib/statsd.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>StatsD Emitter · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-contrib/statsd.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" conten [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>StatsD Emitter · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-contrib/statsd.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" conten [...]
               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++) {
@@ -77,7 +77,7 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>statsd-emitter</code> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>statsd-emitter</code> in the extensions load list.</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 emits druid metrics to a StatsD server.
 (<a href="https://github.com/etsy/statsd">https://github.com/etsy/statsd</a>)
@@ -99,7 +99,7 @@
 <tr><td><code>druid.emitter.statsd.dogstatsd</code></td><td>Flag to enable <a href="https://docs.datadoghq.com/developers/dogstatsd/">DogStatsD</a> support. Causes dimensions to be included as tags, not as a part of the metric name. <code>convertRange</code> fields will be ignored.</td><td>no</td><td>false</td></tr>
 <tr><td><code>druid.emitter.statsd.dogstatsdConstantTags</code></td><td>If <code>druid.emitter.statsd.dogstatsd</code> is true, the tags in the JSON list of strings will be sent with every event.</td><td>no</td><td>[]</td></tr>
 <tr><td><code>druid.emitter.statsd.dogstatsdServiceAsTag</code></td><td>If <code>druid.emitter.statsd.dogstatsd</code> and <code>druid.emitter.statsd.dogstatsdServiceAsTag</code> are true, druid service (e.g. <code>druid/broker</code>, <code>druid/coordinator</code>, etc) is reported as a tag (e.g. <code>druid_service:druid/broker</code>) instead of being included in metric name (e.g. <code>druid.broker.query.time</code>) and <code>druid</code> is used as metric prefix (e.g. <code>druid. [...]
-<tr><td><code>druid.emitter.statsd.dogstatsdEvents</code></td><td>If <code>druid.emitter.statsd.dogstatsd</code> and <code>druid.emitter.statsd.dogstatsdEvents</code> are true, <a href="/docs/latest/operations/alerts.html">Alert events</a> are reported to DogStatsD.</td><td>no</td><td>false</td></tr>
+<tr><td><code>druid.emitter.statsd.dogstatsdEvents</code></td><td>If <code>druid.emitter.statsd.dogstatsd</code> and <code>druid.emitter.statsd.dogstatsdEvents</code> are true, <a href="/docs/0.22.1/operations/alerts.html">Alert events</a> are reported to DogStatsD.</td><td>no</td><td>false</td></tr>
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="druid-to-statsd-event-converter"></a><a href="#druid-to-statsd-event-converter" 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 [...]
@@ -118,7 +118,7 @@ the service name.
 e.g.
 <code>&quot;coordinator-segment/count&quot; : { &quot;dimensions&quot; : [&quot;dataSource&quot;], &quot;type&quot; : &quot;gauge&quot; }, &quot;historical-segment/count&quot; : { &quot;dimensions&quot; : [&quot;dataSource&quot;, &quot;tier&quot;, &quot;priority&quot;], &quot;type&quot; : &quot;gauge&quot; }</code></p>
 <p>For most use-cases, the default mapping is sufficient.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-contrib/sqlserver.html"><span class="arrow-prev">← </span><span>Microsoft SQLServer</span></a><a class="docs-next button" href="/docs/latest/development/extensions-contrib/tdigestsketch-quantiles.html"><span>T-Digest Quantiles Sketch module</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#i [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-contrib/sqlserver.html"><span class="arrow-prev">← </span><span>Microsoft SQLServer</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-contrib/tdigestsketch-quantiles.html"><span>T-Digest Quantiles Sketch module</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#i [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -135,6 +135,6 @@ e.g.
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-contrib/tdigestsketch-quantiles.html b/docs/0.22.1/development/extensions-contrib/tdigestsketch-quantiles.html
similarity index 71%
copy from docs/latest/development/extensions-contrib/tdigestsketch-quantiles.html
copy to docs/0.22.1/development/extensions-contrib/tdigestsketch-quantiles.html
index e9730fa..47ea47b 100644
--- a/docs/latest/development/extensions-contrib/tdigestsketch-quantiles.html
+++ b/docs/0.22.1/development/extensions-contrib/tdigestsketch-quantiles.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>T-Digest Quantiles Sketch module · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-contrib/tdigestsketch-quantiles.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><m [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>T-Digest Quantiles Sketch module · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-contrib/tdigestsketch-quantiles.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><m [...]
               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++) {
@@ -87,7 +87,7 @@ While one can generate sketches on the fly during the query time itself, it gene
 to generate sketches during ingestion time itself and then combining them during query time.
 The module also provides a postAggregator, quantilesFromTDigestSketch, that can be used to compute approximate
 quantiles from T-Digest sketches generated by the tDigestSketch aggregator.</p>
-<p>To use this aggregator, make sure you <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> the extension in your config file:</p>
+<p>To use this aggregator, make sure you <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> the extension in your config file:</p>
 <pre><code class="hljs"><span class="hljs-attr">druid.extensions.loadList</span>=[<span class="hljs-string">"druid-tdigestsketch"</span>]
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="aggregator"></a><a href="#aggregator" 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 [...]
@@ -190,7 +190,7 @@ combining pre-generated T-Digest sketches.</p>
 <tr><td>fraction</td><td>Decimal value between 0 and 1</td><td>yes</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-contrib/statsd.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">StatsD Emitter</span></a><a class="docs-next button" href="/docs/latest/development/extensions-contrib/thrift.html"><span>Thrift</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="foot [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-contrib/statsd.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">StatsD Emitter</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-contrib/thrift.html"><span>Thrift</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="foot [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -207,6 +207,6 @@ combining pre-generated T-Digest sketches.</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-contrib/thrift.html b/docs/0.22.1/development/extensions-contrib/thrift.html
similarity index 68%
copy from docs/latest/development/extensions-contrib/thrift.html
copy to docs/0.22.1/development/extensions-contrib/thrift.html
index 47f110c..dec45b8 100644
--- a/docs/latest/development/extensions-contrib/thrift.html
+++ b/docs/0.22.1/development/extensions-contrib/thrift.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>Thrift · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-contrib/thrift.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22. [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Thrift · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-contrib/thrift.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22. [...]
               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++) {
@@ -77,7 +77,7 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>druid-thrift-extensions</code> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>druid-thrift-extensions</code> in the extensions load list.</p>
 <p>This extension enables Druid to ingest thrift compact data online (<code>ByteBuffer</code>) and offline (SequenceFile of type <code>&lt;Writable, BytesWritable&gt;</code> or LzoThriftBlock File).</p>
 <p>You may want to use another version of thrift, change the dependency in pom and compile yourself.</p>
 <h2><a class="anchor" aria-hidden="true" id="lzo-support"></a><a href="#lzo-support" 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 [...]
@@ -135,7 +135,7 @@
   }
 }
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-contrib/tdigestsketch-quantiles.html"><span class="arrow-prev">← </span><span>T-Digest Quantiles Sketch module</span></a><a class="docs-next button" href="/docs/latest/development/extensions-contrib/time-min-max.html"><span>Timestamp Min/Max aggregators</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><l [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-contrib/tdigestsketch-quantiles.html"><span class="arrow-prev">← </span><span>T-Digest Quantiles Sketch module</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-contrib/time-min-max.html"><span>Timestamp Min/Max aggregators</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><l [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -152,6 +152,6 @@
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-contrib/time-min-max.html b/docs/0.22.1/development/extensions-contrib/time-min-max.html
similarity index 71%
copy from docs/latest/development/extensions-contrib/time-min-max.html
copy to docs/0.22.1/development/extensions-contrib/time-min-max.html
index d8f3318..5c4e06c 100644
--- a/docs/latest/development/extensions-contrib/time-min-max.html
+++ b/docs/0.22.1/development/extensions-contrib/time-min-max.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>Timestamp Min/Max aggregators · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-contrib/time-min-max.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docs [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Timestamp Min/Max aggregators · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-contrib/time-min-max.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docs [...]
               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++) {
@@ -77,7 +77,7 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>druid-time-min-max</code> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>druid-time-min-max</code> in the extensions load list.</p>
 <p>These aggregators enable more precise calculation of min and max time of given events than <code>__time</code> column whose granularity is sparse, the same as query granularity.
 To use this feature, a &quot;timeMin&quot; or &quot;timeMax&quot; aggregator must be included at indexing time.
 They can apply to any columns that can be converted to timestamp, which include Long, DateTime, Timestamp, and String types.</p>
@@ -140,7 +140,7 @@ They can apply to any columns that can be converted to timestamp, which include
 <span class="hljs-number">2015</span><span class="hljs-number">-07</span><span class="hljs-number">-29</span>T00:<span class="hljs-number">00</span>:<span class="hljs-number">00.000</span>Z A <span class="hljs-number">2</span> <span class="hljs-number">2015</span><span class="hljs-number">-07</span><span class="hljs-number">-29</span>T03:<span class="hljs-number">00</span>:<span class="hljs-number">00.000</span>Z <span class="hljs-number">2015</span><span class="hljs-number">-07</span><s [...]
 <span class="hljs-number">2015</span><span class="hljs-number">-07</span><span class="hljs-number">-29</span>T00:<span class="hljs-number">00</span>:<span class="hljs-number">00.000</span>Z C <span class="hljs-number">2</span> <span class="hljs-number">2015</span><span class="hljs-number">-07</span><span class="hljs-number">-29</span>T01:<span class="hljs-number">00</span>:<span class="hljs-number">00.000</span>Z <span class="hljs-number">2015</span><span class="hljs-number">-07</span><s [...]
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-contrib/thrift.html"><span class="arrow-prev">← </span><span>Thrift</span></a><a class="docs-next button" href="/docs/latest/development/extensions-contrib/gce-extensions.html"><span>GCE Extensions</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="contain [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-contrib/thrift.html"><span class="arrow-prev">← </span><span>Thrift</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-contrib/gce-extensions.html"><span>GCE Extensions</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="contain [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -157,6 +157,6 @@ They can apply to any columns that can be converted to timestamp, which include
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/approximate-histograms.html b/docs/0.22.1/development/extensions-core/approximate-histograms.html
similarity index 82%
copy from docs/latest/development/extensions-core/approximate-histograms.html
copy to docs/0.22.1/development/extensions-core/approximate-histograms.html
index 60acb43..43fbc89 100644
--- a/docs/latest/development/extensions-core/approximate-histograms.html
+++ b/docs/0.22.1/development/extensions-core/approximate-histograms.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>Approximate Histogram aggregators · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/approximate-histograms.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Approximate Histogram aggregators · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/approximate-histograms.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta [...]
               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++) {
@@ -77,12 +77,12 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>druid-histogram</code> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>druid-histogram</code> in the extensions load list.</p>
 <p>The <code>druid-histogram</code> extension provides an approximate histogram aggregator and a fixed buckets histogram aggregator.</p>
 <p><a name="approximate-histogram-aggregator"></a></p>
 <h2><a class="anchor" aria-hidden="true" id="approximate-histogram-aggregator-deprecated"></a><a href="#approximate-histogram-aggregator-deprecated" 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 [...]
 <blockquote>
-<p>The Approximate Histogram aggregator is deprecated. Please use <a href="/docs/latest/development/extensions-core/datasketches-quantiles.html">DataSketches Quantiles</a> instead which provides a superior distribution-independent algorithm with formal error guarantees.</p>
+<p>The Approximate Histogram aggregator is deprecated. Please use <a href="/docs/0.22.1/development/extensions-core/datasketches-quantiles.html">DataSketches Quantiles</a> instead which provides a superior distribution-independent algorithm with formal error guarantees.</p>
 </blockquote>
 <p>This aggregator is based on
 <a href="http://jmlr.org/papers/volume11/ben-haim10a/ben-haim10a.pdf">http://jmlr.org/papers/volume11/ben-haim10a/ben-haim10a.pdf</a>
@@ -154,7 +154,7 @@ query.</p>
 <p>This histogram supports the min/max/quantiles post-aggregators but does not support the bucketing post-aggregators.</p>
 <h3><a class="anchor" aria-hidden="true" id="when-to-use"></a><a href="#when-to-use" 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 accuracy/usefulness of the fixed buckets histogram is extremely data-dependent; it is provided to support special use cases where the user has a great deal of prior information about the data being aggregated and knows that a fixed buckets implementation is suitable.</p>
-<p>For general histogram and quantile use cases, the <a href="/docs/latest/development/extensions-core/datasketches-quantiles.html">DataSketches Quantiles Sketch</a> extension is recommended.</p>
+<p>For general histogram and quantile use cases, the <a href="/docs/0.22.1/development/extensions-core/datasketches-quantiles.html">DataSketches Quantiles Sketch</a> extension is recommended.</p>
 <h3><a class="anchor" aria-hidden="true" id="properties"></a><a href="#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 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <table>
 <thead>
@@ -303,7 +303,7 @@ Bucket intervals are based on the range of the underlying data. This aggregator
 <pre><code class="hljs css language-json">{ <span class="hljs-attr">"type"</span> : <span class="hljs-string">"quantiles"</span>, <span class="hljs-attr">"name"</span> : &lt;output_name&gt;, <span class="hljs-attr">"fieldName"</span> : &lt;aggregator_name&gt;,
   <span class="hljs-attr">"probabilities"</span> : [ &lt;quantile&gt;, &lt;quantile&gt;, ... ] }
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/design/peons.html"><span class="arrow-prev">← </span><span>Peons</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/avro.html"><span>Apache Avro</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#approximate-histogram-aggregator-deprecated">Approximate Histogram aggregator (Depreca [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/design/peons.html"><span class="arrow-prev">← </span><span>Peons</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/avro.html"><span>Apache Avro</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#approximate-histogram-aggregator-deprecated">Approximate Histogram aggregator (Depreca [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -320,6 +320,6 @@ Bucket intervals are based on the range of the underlying data. This aggregator
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/avro.html b/docs/0.22.1/development/extensions-core/avro.html
similarity index 70%
copy from docs/latest/development/extensions-core/avro.html
copy to docs/0.22.1/development/extensions-core/avro.html
index 65d0baf..792615c 100644
--- a/docs/latest/development/extensions-core/avro.html
+++ b/docs/0.22.1/development/extensions-core/avro.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 Avro · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/avro.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22. [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Avro · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/avro.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22. [...]
               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++) {
@@ -80,12 +80,12 @@
 <h2><a class="anchor" aria-hidden="true" id="avro-extension"></a><a href="#avro-extension" 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 Apache Druid extension enables Druid to ingest and understand the Apache Avro data format. This extension provides
 two Avro Parsers for stream ingestion and Hadoop batch ingestion.
-See <a href="/docs/latest/ingestion/data-formats.html#avro-hadoop-parser">Avro Hadoop Parser</a> and <a href="/docs/latest/ingestion/data-formats.html#avro-stream-parser">Avro Stream Parser</a>
+See <a href="/docs/0.22.1/ingestion/data-formats.html#avro-hadoop-parser">Avro Hadoop Parser</a> and <a href="/docs/0.22.1/ingestion/data-formats.html#avro-stream-parser">Avro Stream Parser</a>
 for more details about how to use these in an ingestion spec.</p>
 <p>Additionally, it provides an InputFormat for reading Avro OCF files when using
-<a href="/docs/latest/ingestion/native-batch.html">native batch indexing</a>, see <a href="/docs/latest/ingestion/data-formats.html#avro-ocf">Avro OCF</a>
+<a href="/docs/0.22.1/ingestion/native-batch.html">native batch indexing</a>, see <a href="/docs/0.22.1/ingestion/data-formats.html#avro-ocf">Avro OCF</a>
 for details on how to ingest OCF files.</p>
-<p>Make sure to <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>druid-avro-extensions</code> in the extensions load list.</p>
+<p>Make sure to <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>druid-avro-extensions</code> in the extensions load list.</p>
 <h3><a class="anchor" aria-hidden="true" id="avro-types"></a><a href="#avro-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.42-1 [...]
 <p>Druid supports most Avro types natively, there are however some exceptions which are detailed here.</p>
 <h4><a class="anchor" aria-hidden="true" id="unions"></a><a href="#unions" 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. [...]
@@ -99,17 +99,17 @@ for details on how to ingest OCF files.</p>
 </ul>
 <p>This is safe because an Avro union can only contain a single member of each unnamed type and duplicates of the same named type are not allowed.
 i.e only a single array is allowed, multiple records (or other named types) are allowed as long as each has a unique name.</p>
-<p>The members can then be accessed using a <a href="/docs/latest/ingestion/data-formats.html#flattenspec">flattenSpec</a> similar other nested types.</p>
+<p>The members can then be accessed using a <a href="/docs/0.22.1/ingestion/data-formats.html#flattenspec">flattenSpec</a> similar other nested types.</p>
 <h4><a class="anchor" aria-hidden="true" id="binary-types"></a><a href="#binary-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><code>bytes</code> and <code>fixed</code> Avro types will be returned by default as base64 encoded strings unless the <code>binaryAsString</code> option is enabled on the Avro parser.
 This setting will decode these types as UTF-8 strings.</p>
 <h4><a class="anchor" aria-hidden="true" id="enums"></a><a href="#enums" 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><code>enum</code> types will be returned as <code>string</code> of the enum symbol.</p>
 <h4><a class="anchor" aria-hidden="true" id="complex-types"></a><a href="#complex-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><code>record</code> and <code>map</code> types representing nested data can be ingested using <a href="/docs/latest/ingestion/data-formats.html#flattenspec">flattenSpec</a> on the parser.</p>
+<p><code>record</code> and <code>map</code> types representing nested data can be ingested using <a href="/docs/0.22.1/ingestion/data-formats.html#flattenspec">flattenSpec</a> on the parser.</p>
 <h4><a class="anchor" aria-hidden="true" id="logical-types"></a><a href="#logical-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 doesn't currently support Avro logical types, they will be ignored and fields will be handled according to the underlying primitive type.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/approximate-histograms.html"><span class="arrow-prev">← </span><span>Approximate Histogram aggregators</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/azure.html"><span>Microsoft Azure</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#avro-extension" [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/approximate-histograms.html"><span class="arrow-prev">← </span><span>Approximate Histogram aggregators</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/azure.html"><span>Microsoft Azure</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#avro-extension" [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -126,6 +126,6 @@ This setting will decode these types as UTF-8 strings.</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/azure.html b/docs/0.22.1/development/extensions-core/azure.html
similarity index 67%
copy from docs/latest/development/extensions-core/azure.html
copy to docs/0.22.1/development/extensions-core/azure.html
index 1e1c25d..ae02ba2 100644
--- a/docs/latest/development/extensions-core/azure.html
+++ b/docs/0.22.1/development/extensions-core/azure.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>Microsoft Azure · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/azure.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content=" [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Microsoft Azure · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/azure.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content=" [...]
               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++) {
@@ -77,7 +77,7 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>druid-azure-extensions</code> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>druid-azure-extensions</code> in the extensions load list.</p>
 <h2><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><a href="http://azure.microsoft.com/en-us/services/storage/">Microsoft Azure Storage</a> is another option for deep storage. This requires some additional Druid configuration.</p>
 <table>
@@ -96,7 +96,7 @@
 </tbody>
 </table>
 <p>See <a href="http://azure.microsoft.com/en-us/pricing/free-trial/">Azure Services</a> for more information.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/avro.html"><span class="arrow-prev">← </span><span>Apache Avro</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/bloom-filter.html"><span>Bloom Filter</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#deep-storage">Deep Storage</a></li></ul></nav></div [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/avro.html"><span class="arrow-prev">← </span><span>Apache Avro</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/bloom-filter.html"><span>Bloom Filter</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#deep-storage">Deep Storage</a></li></ul></nav></div [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -113,6 +113,6 @@
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/bloom-filter.html b/docs/0.22.1/development/extensions-core/bloom-filter.html
similarity index 75%
copy from docs/latest/development/extensions-core/bloom-filter.html
copy to docs/0.22.1/development/extensions-core/bloom-filter.html
index 77b5525..387d278 100644
--- a/docs/latest/development/extensions-core/bloom-filter.html
+++ b/docs/0.22.1/development/extensions-core/bloom-filter.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>Bloom Filter · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/bloom-filter.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" conte [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Bloom Filter · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/bloom-filter.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" conte [...]
               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++) {
@@ -77,7 +77,7 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>druid-bloom-filter</code> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>druid-bloom-filter</code> in the extensions load list.</p>
 <p>This extension adds the ability to both construct bloom filters from query results, and filter query results by testing
 against a bloom filter. A Bloom filter is a probabilistic data structure for performing a set membership check. A bloom
 filter is a good candidate to use with Druid for cases where an explicit filter is impossible, e.g. filtering a query
@@ -122,7 +122,7 @@ String base64Serialized = Base64.encodeBase64String(byteArrayOutputStream.toByte
 <tr><td><code>type</code></td><td>Filter Type. Should always be <code>bloom</code></td><td>yes</td></tr>
 <tr><td><code>dimension</code></td><td>The dimension to filter over.</td><td>yes</td></tr>
 <tr><td><code>bloomKFilter</code></td><td>Base64 encoded Binary representation of <code>org.apache.hive.common.util.BloomKFilter</code></td><td>yes</td></tr>
-<tr><td><code>extractionFn</code></td><td><a href="/docs/latest/querying/dimensionspecs.html#extraction-functions">Extraction function</a> to apply to the dimension values</td><td>no</td></tr>
+<tr><td><code>extractionFn</code></td><td><a href="/docs/0.22.1/querying/dimensionspecs.html#extraction-functions">Extraction function</a> to apply to the dimension values</td><td>no</td></tr>
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="serialized-format-for-bloomkfilter"></a><a href="#serialized-format-for-bloomkfilter" 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.5 [...]
@@ -138,7 +138,7 @@ String base64Serialized = Base64.encodeBase64String(byteArrayOutputStream.toByte
 <pre><code class="hljs css language-sql"><span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">COUNT</span>(*) <span class="hljs-keyword">FROM</span> druid.foo <span class="hljs-keyword">WHERE</span> bloom_filter_test(&lt;expr&gt;, <span class="hljs-string">'&lt;serialized_bytes_for_BloomKFilter&gt;'</span>)
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="expression-and-virtual-column-support"></a><a href="#expression-and-virtual-column-support" 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>The bloom filter extension also adds a bloom filter <a href="/docs/latest/misc/math-expr.html">Druid expression</a> which shares syntax
+<p>The bloom filter extension also adds a bloom filter <a href="/docs/0.22.1/misc/math-expr.html">Druid expression</a> which shares syntax
 with the SQL operator.</p>
 <pre><code class="hljs css language-sql">bloom_filter_test(&lt;expr&gt;, '&lt;serialized_bytes_for_BloomKFilter&gt;')
 </code></pre>
@@ -163,7 +163,7 @@ for the query.</p>
 <tbody>
 <tr><td><code>type</code></td><td>Aggregator Type. Should always be <code>bloom</code></td><td>yes</td></tr>
 <tr><td><code>name</code></td><td>Output field name</td><td>yes</td></tr>
-<tr><td><code>field</code></td><td><a href="/docs/latest/querying/dimensionspecs.html">DimensionSpec</a> to add to <code>org.apache.hive.common.util.BloomKFilter</code></td><td>yes</td></tr>
+<tr><td><code>field</code></td><td><a href="/docs/0.22.1/querying/dimensionspecs.html">DimensionSpec</a> to add to <code>org.apache.hive.common.util.BloomKFilter</code></td><td>yes</td></tr>
 <tr><td><code>maxNumEntries</code></td><td>Maximum number of distinct values supported by <code>org.apache.hive.common.util.BloomKFilter</code>, default <code>1500</code></td><td>no</td></tr>
 </tbody>
 </table>
@@ -200,7 +200,7 @@ added to the set. As such, ordering by an alternate aggregation is recommended i
 </code></pre>
 <p>but requires the setting <code>druid.sql.planner.serializeComplexValues</code> to be set to <code>true</code>. Bloom filter results in a SQL
 response are serialized into a base64 string, which can then be used in subsequent queries as a filter.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/azure.html"><span class="arrow-prev">← </span><span>Microsoft Azure</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/datasketches-extension.html"><span class="function-name-prevnext">DataSketches extension</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a hr [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/azure.html"><span class="arrow-prev">← </span><span>Microsoft Azure</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/datasketches-extension.html"><span class="function-name-prevnext">DataSketches extension</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a hr [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -217,6 +217,6 @@ response are serialized into a base64 string, which can then be used in subseque
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.22.1/development/extensions-core/caffeine-cache.html b/docs/0.22.1/development/extensions-core/caffeine-cache.html
new file mode 100644
index 0000000..1697981
--- /dev/null
+++ b/docs/0.22.1/development/extensions-core/caffeine-cache.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.22.1/development/extensions-core/datasketches-aggregators.html b/docs/0.22.1/development/extensions-core/datasketches-aggregators.html
new file mode 100644
index 0000000..ae4e884
--- /dev/null
+++ b/docs/0.22.1/development/extensions-core/datasketches-aggregators.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="datasketches-extension.html">
+<meta http-equiv="refresh" content="0; url=datasketches-extension.html">
+<h1>Redirecting...</h1>
+<a href="datasketches-extension.html">Click here if you are not redirected.</a>
+<script>location="datasketches-extension.html"</script>
diff --git a/docs/latest/development/extensions-core/datasketches-extension.html b/docs/0.22.1/development/extensions-core/datasketches-extension.html
similarity index 65%
copy from docs/latest/development/extensions-core/datasketches-extension.html
copy to docs/0.22.1/development/extensions-core/datasketches-extension.html
index ec5be01..057361a 100644
--- a/docs/latest/development/extensions-core/datasketches-extension.html
+++ b/docs/0.22.1/development/extensions-core/datasketches-extension.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>DataSketches extension · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/datasketches-extension.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docs [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>DataSketches extension · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/datasketches-extension.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docs [...]
               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++) {
@@ -78,17 +78,17 @@
   ~ under the License.
   -->
 <p>Apache Druid aggregators based on <a href="https://datasketches.apache.org/">Apache DataSketches</a> library. Sketches are data structures implementing approximate streaming mergeable algorithms. Sketches can be ingested from the outside of Druid or built from raw data at ingestion time. Sketches can be stored in Druid segments as additive metrics.</p>
-<p>To use the datasketches aggregators, make sure you <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> the extension in your config file:</p>
+<p>To use the datasketches aggregators, make sure you <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> the extension in your config file:</p>
 <pre><code class="hljs"><span class="hljs-attr">druid.extensions.loadList</span>=[<span class="hljs-string">"druid-datasketches"</span>]
 </code></pre>
 <p>The following modules are available:</p>
 <ul>
-<li><a href="/docs/latest/development/extensions-core/datasketches-theta.html">Theta sketch</a> - approximate distinct counting with set operations (union, intersection and set difference).</li>
-<li><a href="/docs/latest/development/extensions-core/datasketches-tuple.html">Tuple sketch</a> - extension of Theta sketch to support values associated with distinct keys (arrays of numeric values in this specialized implementation).</li>
-<li><a href="/docs/latest/development/extensions-core/datasketches-quantiles.html">Quantiles sketch</a> - approximate distribution of comparable values to obtain ranks, quantiles and histograms. This is a specialized implementation for numeric values.</li>
-<li><a href="/docs/latest/development/extensions-core/datasketches-hll.html">HLL sketch</a> - approximate distinct counting using very compact HLL sketch.</li>
+<li><a href="/docs/0.22.1/development/extensions-core/datasketches-theta.html">Theta sketch</a> - approximate distinct counting with set operations (union, intersection and set difference).</li>
+<li><a href="/docs/0.22.1/development/extensions-core/datasketches-tuple.html">Tuple sketch</a> - extension of Theta sketch to support values associated with distinct keys (arrays of numeric values in this specialized implementation).</li>
+<li><a href="/docs/0.22.1/development/extensions-core/datasketches-quantiles.html">Quantiles sketch</a> - approximate distribution of comparable values to obtain ranks, quantiles and histograms. This is a specialized implementation for numeric values.</li>
+<li><a href="/docs/0.22.1/development/extensions-core/datasketches-hll.html">HLL sketch</a> - approximate distinct counting using very compact HLL sketch.</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/bloom-filter.html"><span class="arrow-prev">← </span><span>Bloom Filter</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/datasketches-hll.html"><span class="function-name-prevnext">DataSketches HLL Sketch module</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="n [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/bloom-filter.html"><span class="arrow-prev">← </span><span>Bloom Filter</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/datasketches-hll.html"><span class="function-name-prevnext">DataSketches HLL Sketch module</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="n [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -105,6 +105,6 @@
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/datasketches-hll.html b/docs/0.22.1/development/extensions-core/datasketches-hll.html
similarity index 73%
copy from docs/latest/development/extensions-core/datasketches-hll.html
copy to docs/0.22.1/development/extensions-core/datasketches-hll.html
index 09ac473..1e39874 100644
--- a/docs/latest/development/extensions-core/datasketches-hll.html
+++ b/docs/0.22.1/development/extensions-core/datasketches-hll.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>DataSketches HLL Sketch module · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/datasketches-hll.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="do [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>DataSketches HLL Sketch module · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/datasketches-hll.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="do [...]
               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++) {
@@ -79,7 +79,7 @@
   -->
 <p>This module provides Apache Druid aggregators for distinct counting based on HLL sketch from <a href="https://datasketches.apache.org/">Apache DataSketches</a> library. At ingestion time, this aggregator creates the HLL sketch objects to be stored in Druid segments. At query time, sketches are read and merged together. In the end, by default, you receive the estimate of the number of distinct values presented to the sketch. Also, you can use post aggregator to produce a union of sketc [...]
 You can use the HLL sketch aggregator on columns of any identifiers. It will return estimated cardinality of the column.</p>
-<p>To use this aggregator, make sure you <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> the extension in your config file:</p>
+<p>To use this aggregator, make sure you <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> the extension in your config file:</p>
 <pre><code class="hljs"><span class="hljs-attr">druid.extensions.loadList</span>=[<span class="hljs-string">"druid-datasketches"</span>]
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="aggregators"></a><a href="#aggregators" 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 [...]
@@ -110,7 +110,7 @@ You can use the HLL sketch aggregator on columns of any identifiers. It will ret
  }
 </code></pre>
 <blockquote>
-<p>It is very common to use <code>HLLSketchBuild</code> in combination with <a href="/docs/latest/ingestion/rollup.html">rollup</a> to create a <a href="../../ingestion/ingestion-spec.html#metricsspec">metric</a> on high-cardinality columns.  In this example, a metric called <code>userid_hll</code> is included in the <code>metricsSpec</code>.  This will perform a HLL sketch on the <code>userid</code> field at ingestion time, allowing for highly-performant approximate <code>COUNT DISTINCT [...]
+<p>It is very common to use <code>HLLSketchBuild</code> in combination with <a href="/docs/0.22.1/ingestion/rollup.html">rollup</a> to create a <a href="../../ingestion/ingestion-spec.html#metricsspec">metric</a> on high-cardinality columns.  In this example, a metric called <code>userid_hll</code> is included in the <code>metricsSpec</code>.  This will perform a HLL sketch on the <code>userid</code> field at ingestion time, allowing for highly-performant approximate <code>COUNT DISTINCT [...]
 <pre><code class="hljs">:
 <span class="hljs-string">"metricsSpec"</span>: [
  {
@@ -173,7 +173,7 @@ This must be an integer value of 1, 2 or 3 corresponding to approximately 68.3%,
   <span class="hljs-attr">"field"</span>  : &lt;post aggregator that returns an HLL Sketch&gt;
 }
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/datasketches-extension.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">DataSketches extension</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/datasketches-quantiles.html"><span class="function-name-prevnext">DataSketches Quantiles Sketch module</span><span class="arrow-next"> →</span></a></div> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/datasketches-extension.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">DataSketches extension</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/datasketches-quantiles.html"><span class="function-name-prevnext">DataSketches Quantiles Sketch module</span><span class="arrow-next"> →</span></a></div> [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -190,6 +190,6 @@ This must be an integer value of 1, 2 or 3 corresponding to approximately 68.3%,
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/datasketches-quantiles.html b/docs/0.22.1/development/extensions-core/datasketches-quantiles.html
similarity index 73%
copy from docs/latest/development/extensions-core/datasketches-quantiles.html
copy to docs/0.22.1/development/extensions-core/datasketches-quantiles.html
index 6dc9277..64db206 100644
--- a/docs/latest/development/extensions-core/datasketches-quantiles.html
+++ b/docs/0.22.1/development/extensions-core/datasketches-quantiles.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>DataSketches Quantiles Sketch module · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/datasketches-quantiles.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><m [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>DataSketches Quantiles Sketch module · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/datasketches-quantiles.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><m [...]
               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++) {
@@ -84,7 +84,7 @@
 <li>Building sketches from raw data during ingestion</li>
 <li>Building sketches from raw data at query time</li>
 </ol>
-<p>To use this aggregator, make sure you <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> the extension in your config file:</p>
+<p>To use this aggregator, make sure you <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> the extension in your config file:</p>
 <pre><code class="hljs"><span class="hljs-attr">druid.extensions.loadList</span>=[<span class="hljs-string">"druid-datasketches"</span>]
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="aggregator"></a><a href="#aggregator" 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 [...]
@@ -163,7 +163,7 @@
   <span class="hljs-attr">"field"</span>  : &lt;post aggregator that refers to a DoublesSketch (fieldAccess or another post aggregator)&gt;
 }
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/datasketches-hll.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">DataSketches HLL Sketch module</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/datasketches-theta.html"><span class="function-name-prevnext">DataSketches Theta Sketch module</span><span class="arrow-next"> →</span></a></div></div> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/datasketches-hll.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">DataSketches HLL Sketch module</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/datasketches-theta.html"><span class="function-name-prevnext">DataSketches Theta Sketch module</span><span class="arrow-next"> →</span></a></div></div> [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -180,6 +180,6 @@
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/datasketches-theta.html b/docs/0.22.1/development/extensions-core/datasketches-theta.html
similarity index 77%
copy from docs/latest/development/extensions-core/datasketches-theta.html
copy to docs/0.22.1/development/extensions-core/datasketches-theta.html
index 143caaa..df512bd 100644
--- a/docs/latest/development/extensions-core/datasketches-theta.html
+++ b/docs/0.22.1/development/extensions-core/datasketches-theta.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>DataSketches Theta Sketch module · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/datasketches-theta.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>DataSketches Theta Sketch module · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/datasketches-theta.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name [...]
               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++) {
@@ -80,7 +80,7 @@
 <p>This module provides Apache Druid aggregators based on Theta sketch from <a href="https://datasketches.apache.org/">Apache DataSketches</a> library. Note that sketch algorithms are approximate; see details in the &quot;Accuracy&quot; section of the datasketches doc.
 At ingestion time, this aggregator creates the Theta sketch objects which get stored in Druid segments. Logically speaking, a Theta sketch object can be thought of as a Set data structure. At query time, sketches are read and aggregated (set unioned) together. In the end, by default, you receive the estimate of the number of unique entries in the sketch object. Also, you can use post aggregators to do union, intersection or difference on sketch columns in the same row.
 Note that you can use <code>thetaSketch</code> aggregator on columns which were not ingested using the same. It will return estimated cardinality of the column. It is recommended to use it at ingestion time as well to make querying faster.</p>
-<p>To use this aggregator, make sure you <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> the extension in your config file:</p>
+<p>To use this aggregator, make sure you <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> the extension in your config file:</p>
 <pre><code class="hljs"><span class="hljs-attr">druid.extensions.loadList</span>=[<span class="hljs-string">"druid-datasketches"</span>]
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="aggregators"></a><a href="#aggregators" 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 [...]
@@ -301,7 +301,7 @@ How many unique users visited both product A and product B?</p>
   <span class="hljs-attr">"intervals"</span>: [<span class="hljs-string">"2014-10-01T00:00:00.000Z/2014-10-14T00:00:00.000Z"</span>]
 }
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/datasketches-quantiles.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">DataSketches Quantiles Sketch module</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/datasketches-tuple.html"><span class="function-name-prevnext">DataSketches Tuple Sketch module</span><span class="arrow-next"> →</span></a> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/datasketches-quantiles.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">DataSketches Quantiles Sketch module</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/datasketches-tuple.html"><span class="function-name-prevnext">DataSketches Tuple Sketch module</span><span class="arrow-next"> →</span></a> [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -318,6 +318,6 @@ How many unique users visited both product A and product B?</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/datasketches-tuple.html b/docs/0.22.1/development/extensions-core/datasketches-tuple.html
similarity index 75%
copy from docs/latest/development/extensions-core/datasketches-tuple.html
copy to docs/0.22.1/development/extensions-core/datasketches-tuple.html
index 71a76a4..a86984b 100644
--- a/docs/latest/development/extensions-core/datasketches-tuple.html
+++ b/docs/0.22.1/development/extensions-core/datasketches-tuple.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>DataSketches Tuple Sketch module · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/datasketches-tuple.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>DataSketches Tuple Sketch module · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/datasketches-tuple.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name [...]
               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++) {
@@ -78,7 +78,7 @@
   ~ under the License.
   -->
 <p>This module provides Apache Druid aggregators based on Tuple sketch from <a href="https://datasketches.apache.org/">Apache DataSketches</a> library. ArrayOfDoublesSketch sketches extend the functionality of the count-distinct Theta sketches by adding arrays of double values associated with unique keys.</p>
-<p>To use this aggregator, make sure you <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> the extension in your config file:</p>
+<p>To use this aggregator, make sure you <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> the extension in your config file:</p>
 <pre><code class="hljs"><span class="hljs-attr">druid.extensions.loadList</span>=[<span class="hljs-string">"druid-datasketches"</span>]
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="aggregators"></a><a href="#aggregators" 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 [...]
@@ -147,7 +147,7 @@
 }
 </code></pre>
 <h4><a class="anchor" aria-hidden="true" id="quantiles-sketch-from-a-column"></a><a href="#quantiles-sketch-from-a-column" 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>Returns a quantiles DoublesSketch constructed from a given column of values from a given ArrayOfDoublesSketch using optional parameter k that determines the accuracy and size of the quantiles sketch. See <a href="/docs/latest/development/extensions-core/datasketches-quantiles.html">Quantiles Sketch Module</a></p>
+<p>Returns a quantiles DoublesSketch constructed from a given column of values from a given ArrayOfDoublesSketch using optional parameter k that determines the accuracy and size of the quantiles sketch. See <a href="/docs/0.22.1/development/extensions-core/datasketches-quantiles.html">Quantiles Sketch Module</a></p>
 <ul>
 <li>The column number is 1-based and is optional (the default is 1).</li>
 <li>The parameter k is optional (the default is defined in the sketch library).</li>
@@ -188,7 +188,7 @@
   <span class="hljs-attr">"field"</span>  : &lt;post aggregator that refers to an ArrayOfDoublesSketch (fieldAccess or another post aggregator)&gt;
 }
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/datasketches-theta.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">DataSketches Theta Sketch module</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/druid-basic-security.html"><span>Basic Security</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><f [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/datasketches-theta.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">DataSketches Theta Sketch module</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/druid-basic-security.html"><span>Basic Security</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><f [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -205,6 +205,6 @@
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/druid-aws-rds.html b/docs/0.22.1/development/extensions-core/druid-aws-rds.html
similarity index 66%
copy from docs/latest/development/extensions-core/druid-aws-rds.html
copy to docs/0.22.1/development/extensions-core/druid-aws-rds.html
index 72556ce..0718944 100644
--- a/docs/latest/development/extensions-core/druid-aws-rds.html
+++ b/docs/0.22.1/development/extensions-core/druid-aws-rds.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>Druid AWS RDS Module · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/druid-aws-rds.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:versi [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Druid AWS RDS Module · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/druid-aws-rds.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:versi [...]
               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++) {
@@ -77,15 +77,15 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p><a href="https://aws.amazon.com/rds/">AWS RDS</a> is a managed service to operate relation databases such as PostgreSQL, Mysql etc. These databases could be accessed using static db password mechanism or via <a href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html">AWS IAM</a> temporary tokens. This module provides AWS RDS token <a href="/docs/latest/operations/password-provider.html">password provider</a> implementation to be used with <a href="/doc [...]
+<p><a href="https://aws.amazon.com/rds/">AWS RDS</a> is a managed service to operate relation databases such as PostgreSQL, Mysql etc. These databases could be accessed using static db password mechanism or via <a href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html">AWS IAM</a> temporary tokens. This module provides AWS RDS token <a href="/docs/0.22.1/operations/password-provider.html">password provider</a> implementation to be used with <a href="/doc [...]
 <pre><code class="hljs css language-json">{ <span class="hljs-attr">"type"</span>: <span class="hljs-string">"aws-rds-token"</span>, <span class="hljs-attr">"user"</span>: <span class="hljs-string">"USER"</span>, <span class="hljs-attr">"host"</span>: <span class="hljs-string">"HOST"</span>, <span class="hljs-attr">"port"</span>: PORT, <span class="hljs-attr">"region"</span>: <span class="hljs-string">"AWS_REGION"</span> }
 </code></pre>
 <p>Before using this password provider, please make sure that you have connected all dots for db user to connect using token.
 See <a href="https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.IAMDBAuth.html">AWS Guide</a>.</p>
-<p>To use this extension, make sure you <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> it in your config file along with other extensions e.g.</p>
+<p>To use this extension, make sure you <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> it in your config file along with other extensions e.g.</p>
 <pre><code class="hljs"><span class="hljs-attr">druid.extensions.loadList</span>=[<span class="hljs-string">"druid-aws-rds-extensions"</span>, <span class="hljs-string">"postgresql-metadata-storage"</span>, ...]
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/test-stats.html"><span class="arrow-prev">← </span><span>Test Stats Aggregators</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/kubernetes.html"><span>Kubernetes</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 [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/test-stats.html"><span class="arrow-prev">← </span><span>Test Stats Aggregators</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/kubernetes.html"><span>Kubernetes</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;
@@ -102,6 +102,6 @@ See <a href="https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingW
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/druid-basic-security.html b/docs/0.22.1/development/extensions-core/druid-basic-security.html
similarity index 84%
copy from docs/latest/development/extensions-core/druid-basic-security.html
copy to docs/0.22.1/development/extensions-core/druid-basic-security.html
index aac4b90..1b36664 100644
--- a/docs/latest/development/extensions-core/druid-basic-security.html
+++ b/docs/0.22.1/development/extensions-core/druid-basic-security.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>Basic Security · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/druid-basic-security.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:vers [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Basic Security · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/druid-basic-security.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>< [...]
+            </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++) {
@@ -82,10 +82,10 @@
 <li>an Authenticator which supports <a href="https://en.wikipedia.org/wiki/Basic_access_authentication">HTTP Basic authentication</a> using the Druid metadata store or LDAP as its credentials store.</li>
 <li>an Authorizer which implements basic role-based access control for Druid metadata store or LDAP users and groups.</li>
 </ul>
-<p>To load the extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>druid-basic-security</code> in the <code>druid.extensions.loadList</code> in your <code>common.runtime.properties</code>. For example:</p>
+<p>To load the extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>druid-basic-security</code> in the <code>druid.extensions.loadList</code> in your <code>common.runtime.properties</code>. For example:</p>
 <pre><code class="hljs"><span class="hljs-attr">druid.extensions.loadList</span>=[<span class="hljs-string">"postgresql-metadata-storage"</span>, <span class="hljs-string">"druid-hdfs-storage"</span>, <span class="hljs-string">"druid-basic-security"</span>]
 </code></pre>
-<p>See <a href="/docs/latest/design/auth.html">Authentication and Authorization</a> for more information on the implemented extension interfaces.</p>
+<p>See <a href="/docs/0.22.1/design/auth.html">Authentication and Authorization</a> for more information on the implemented extension interfaces.</p>
 <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>The examples in the section use the following names for the Authenticators and Authorizers:</p>
 <ul>
@@ -130,8 +130,8 @@ The default credentials validator (<code>credentialsValidator</code>) is <code>m
 <tr><th>Property</th><th>Description</th><th>Default</th><th>required</th></tr>
 </thead>
 <tbody>
-<tr><td><code>druid.auth.authenticator.MyBasicMetadataAuthenticator.initialAdminPassword</code></td><td>Initial <a href="/docs/latest/operations/password-provider.html">Password Provider</a> for the automatically created default admin user. If no password is specified, the default admin user will not be created. If the default admin user already exists, setting this property will not affect its password.</td><td>null</td><td>No</td></tr>
-<tr><td><code>druid.auth.authenticator.MyBasicMetadataAuthenticator.initialInternalClientPassword</code></td><td>Initial <a href="/docs/latest/operations/password-provider.html">Password Provider</a> for the default internal system user, used for internal process communication. If no password is specified, the default internal system user will not be created. If the default internal system user already exists, setting this property will not affect its password.</td><td>null</td><td>No</td></tr>
+<tr><td><code>druid.auth.authenticator.MyBasicMetadataAuthenticator.initialAdminPassword</code></td><td>Initial <a href="/docs/0.22.1/operations/password-provider.html">Password Provider</a> for the automatically created default admin user. If no password is specified, the default admin user will not be created. If the default admin user already exists, setting this property will not affect its password.</td><td>null</td><td>No</td></tr>
+<tr><td><code>druid.auth.authenticator.MyBasicMetadataAuthenticator.initialInternalClientPassword</code></td><td>Initial <a href="/docs/0.22.1/operations/password-provider.html">Password Provider</a> for the default internal system user, used for internal process communication. If no password is specified, the default internal system user will not be created. If the default internal system user already exists, setting this property will not affect its password.</td><td>null</td><td>No</td></tr>
 <tr><td><code>druid.auth.authenticator.MyBasicMetadataAuthenticator.enableCacheNotifications</code></td><td>If true, the Coordinator will notify Druid processes whenever a configuration change to this Authenticator occurs, allowing them to immediately update their state without waiting for polling.</td><td>true</td><td>No</td></tr>
 <tr><td><code>druid.auth.authenticator.MyBasicMetadataAuthenticator.cacheNotificationTimeout</code></td><td>The timeout in milliseconds for the cache notifications.</td><td>5000</td><td>No</td></tr>
 <tr><td><code>druid.auth.authenticator.MyBasicMetadataAuthenticator.credentialIterations</code></td><td>Number of iterations to use for password hashing. See <a href="#credential-iterations-and-api-performance">Credential iterations and API performance</a></td><td>10000</td><td>No</td></tr>
@@ -155,15 +155,15 @@ The default credentials validator (<code>credentialsValidator</code>) is <code>m
 <tr><th>Property</th><th>Description</th><th>Default</th><th>required</th></tr>
 </thead>
 <tbody>
-<tr><td><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.initialAdminPassword</code></td><td>Initial <a href="/docs/latest/operations/password-provider.html">Password Provider</a> for the automatically created default admin user. If no password is specified, the default admin user will not be created. If the default admin user already exists, setting this property will not affect its password.</td><td>null</td><td>No</td></tr>
-<tr><td><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.initialInternalClientPassword</code></td><td>Initial <a href="/docs/latest/operations/password-provider.html">Password Provider</a> for the default internal system user, used for internal process communication. If no password is specified, the default internal system user will not be created. If the default internal system user already exists, setting this property will not affect its password.</td><td>null</td><td>No</td></tr>
+<tr><td><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.initialAdminPassword</code></td><td>Initial <a href="/docs/0.22.1/operations/password-provider.html">Password Provider</a> for the automatically created default admin user. If no password is specified, the default admin user will not be created. If the default admin user already exists, setting this property will not affect its password.</td><td>null</td><td>No</td></tr>
+<tr><td><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.initialInternalClientPassword</code></td><td>Initial <a href="/docs/0.22.1/operations/password-provider.html">Password Provider</a> for the default internal system user, used for internal process communication. If no password is specified, the default internal system user will not be created. If the default internal system user already exists, setting this property will not affect its password.</td><td>null</td><td>No</td></tr>
 <tr><td><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.enableCacheNotifications</code></td><td>If true, the Coordinator will notify Druid processes whenever a configuration change to this Authenticator occurs, allowing them to immediately update their state without waiting for polling.</td><td>true</td><td>No</td></tr>
 <tr><td><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.cacheNotificationTimeout</code></td><td>The timeout in milliseconds for the cache notifications.</td><td>5000</td><td>No</td></tr>
 <tr><td><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.credentialIterations</code></td><td>Number of iterations to use for password hashing.</td><td>10000</td><td>No</td></tr>
 <tr><td><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.credentialsValidator.type</code></td><td>The type of credentials store (ldap) to validate requests credentials.</td><td>metadata</td><td>No</td></tr>
 <tr><td><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.credentialsValidator.url</code></td><td>URL of the LDAP server.</td><td>null</td><td>Yes</td></tr>
 <tr><td><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.credentialsValidator.bindUser</code></td><td>LDAP bind user username.</td><td>null</td><td>Yes</td></tr>
-<tr><td><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.credentialsValidator.bindPassword</code></td><td><a href="/docs/latest/operations/password-provider.html">Password Provider</a> LDAP bind user password.</td><td>null</td><td>Yes</td></tr>
+<tr><td><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.credentialsValidator.bindPassword</code></td><td><a href="/docs/0.22.1/operations/password-provider.html">Password Provider</a> LDAP bind user password.</td><td>null</td><td>Yes</td></tr>
 <tr><td><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.credentialsValidator.baseDn</code></td><td>The point from where the LDAP server will search for users.</td><td>null</td><td>Yes</td></tr>
 <tr><td><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.credentialsValidator.userSearch</code></td><td>The filter/expression to use for the search. For example, (&amp;(sAMAccountName=%s)(objectClass=user))</td><td>null</td><td>Yes</td></tr>
 <tr><td><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.credentialsValidator.userAttribute</code></td><td>The attribute id identifying the attribute that will be returned as part of the search. For example, sAMAccountName.</td><td>null</td><td>Yes</td></tr>
@@ -188,7 +188,7 @@ The default credentials validator (<code>credentialsValidator</code>) is <code>m
 </thead>
 <tbody>
 <tr><td><code>druid.escalator.internalClientUsername</code></td><td>The escalator will use this username for requests made as the internal system user.</td><td>n/a</td><td>Yes</td></tr>
-<tr><td><code>druid.escalator.internalClientPassword</code></td><td>The escalator will use this <a href="/docs/latest/operations/password-provider.html">Password Provider</a> for requests made as the internal system user.</td><td>n/a</td><td>Yes</td></tr>
+<tr><td><code>druid.escalator.internalClientPassword</code></td><td>The escalator will use this <a href="/docs/0.22.1/operations/password-provider.html">Password Provider</a> for requests made as the internal system user.</td><td>n/a</td><td>Yes</td></tr>
 <tr><td><code>druid.escalator.authorizerName</code></td><td>Authorizer that requests should be directed to.</td><td>n/a</td><td>Yes</td></tr>
 </tbody>
 </table>
@@ -445,11 +445,11 @@ Set the permissions of {roleName}. This replaces the previous set of permissions
 ]
 </code></pre>
 <p>The &quot;name&quot; field for resources in the permission definitions are regexes used to match resource names during authorization checks.</p>
-<p>Please see <a href="/docs/latest/operations/security-user-auth.html#defining-permissions">Defining permissions</a> for more details.</p>
+<p>Please see <a href="/docs/0.22.1/operations/security-user-auth.html#defining-permissions">Defining permissions</a> for more details.</p>
 <h5><a class="anchor" aria-hidden="true" id="cache-load-status-1"></a><a href="#cache-load-status-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.2 [...]
 <p><code>GET(/druid-ext/basic-security/authorization/loadStatus)</code>
 Return the current load status of the local caches of the authorization Druid metadata store.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/datasketches-tuple.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">DataSketches Tuple Sketch module</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/druid-kerberos.html"><span>Kerberos</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings">< [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/datasketches-tuple.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">DataSketches Tuple Sketch module</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/druid-kerberos.html"><span>Kerberos</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings">< [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -466,6 +466,6 @@ Return the current load status of the local caches of the authorization Druid me
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/druid-kerberos.html b/docs/0.22.1/development/extensions-core/druid-kerberos.html
similarity index 76%
copy from docs/latest/development/extensions-core/druid-kerberos.html
copy to docs/0.22.1/development/extensions-core/druid-kerberos.html
index 2762578..a3d388a 100644
--- a/docs/latest/development/extensions-core/druid-kerberos.html
+++ b/docs/0.22.1/development/extensions-core/druid-kerberos.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>Kerberos · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/druid-kerberos.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Kerberos · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/druid-kerberos.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content [...]
               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++) {
@@ -79,7 +79,7 @@
   -->
 <p>Apache Druid Extension to enable Authentication for Druid Processes using Kerberos.
 This extension adds an Authenticator which is used to protect HTTP Endpoints using the simple and protected GSSAPI negotiation mechanism <a href="https://en.wikipedia.org/wiki/SPNEGO">SPNEGO</a>.
-Make sure to <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>druid-kerberos</code> in the extensions load list.</p>
+Make sure to <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>druid-kerberos</code> in the extensions load list.</p>
 <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 [...]
 <h3><a class="anchor" aria-hidden="true" id="creating-an-authenticator"></a><a href="#creating-an-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 12H9c [...]
 <pre><code class="hljs"><span class="hljs-attr">druid.auth.authenticatorChain</span>=[<span class="hljs-string">"MyKerberosAuthenticator"</span>]
@@ -107,7 +107,7 @@ Make sure to <a href="/docs/latest/development/extensions.html#loading-extension
 <p>As a note, it is required that the SPNego principal in use by the druid processes must start with HTTP (This specified by <a href="https://tools.ietf.org/html/rfc4559">RFC-4559</a>) and must be of the form &quot;HTTP/_HOST@REALM&quot;.
 The special string _HOST will be replaced automatically with the value of config <code>druid.host</code></p>
 <h3><a class="anchor" aria-hidden="true" id="druidauthauthenticatorkerberosexcludedpaths"></a><a href="#druidauthauthenticatorkerberosexcludedpaths" 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>In older releases, the Kerberos authenticator had an <code>excludedPaths</code> property that allowed the user to specify a list of paths where authentication checks should be skipped. This property has been removed from the Kerberos authenticator because the path exclusion functionality is now handled across all authenticators/authorizers by setting <code>druid.auth.unsecuredPaths</code>, as described in the <a href="/docs/latest/design/auth.html">main auth documentation</a>.</p>
+<p>In older releases, the Kerberos authenticator had an <code>excludedPaths</code> property that allowed the user to specify a list of paths where authentication checks should be skipped. This property has been removed from the Kerberos authenticator because the path exclusion functionality is now handled across all authenticators/authorizers by setting <code>druid.auth.unsecuredPaths</code>, as described in the <a href="/docs/0.22.1/design/auth.html">main auth documentation</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="auth-to-local-syntax"></a><a href="#auth-to-local-syntax" 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><code>druid.auth.authenticator.kerberos.authToLocal</code> allows you to set a general rules for mapping principal names to local user names.
 The syntax for mapping rules is <code>RULE:\[n:string](regexp)s/pattern/replacement/g</code>. The integer n indicates how many components the target principal should have. If this matches, then a string will be formed from string, substituting the realm of the principal for $0 and the nth component of the principal for $n. e.g. if the principal was druid/admin then <code>\[2:$2$1suffix]</code> would result in the string <code>admindruidsuffix</code>.
@@ -166,7 +166,7 @@ In such cases, max request header size that druid can handle can be increased by
 </ol>
 <h2><a class="anchor" aria-hidden="true" id="sending-queries-programmatically"></a><a href="#sending-queries-programmatically" 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>Many HTTP client libraries, such as Apache Commons <a href="https://hc.apache.org/">HttpComponents</a>, already have support for performing SPNEGO authentication. You can use any of the available HTTP client library to communicate with druid cluster.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/druid-basic-security.html"><span class="arrow-prev">← </span><span>Basic Security</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/druid-lookups.html"><span>Cached Lookup Module</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#configuration">Configur [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/druid-basic-security.html"><span class="arrow-prev">← </span><span>Basic Security</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/druid-lookups.html"><span>Cached Lookup Module</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#configuration">Configur [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -183,6 +183,6 @@ In such cases, max request header size that druid can handle can be increased by
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/druid-lookups.html b/docs/0.22.1/development/extensions-core/druid-lookups.html
similarity index 77%
copy from docs/latest/development/extensions-core/druid-lookups.html
copy to docs/0.22.1/development/extensions-core/druid-lookups.html
index b0ccd05..b32e523 100644
--- a/docs/latest/development/extensions-core/druid-lookups.html
+++ b/docs/0.22.1/development/extensions-core/druid-lookups.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>Cached Lookup Module · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/druid-lookups.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:versi [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Cached Lookup Module · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/druid-lookups.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:versi [...]
               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++) {
@@ -85,11 +85,11 @@
 The main goal of this cache is to speed up the access to a high latency lookup sources and to provide a caching isolation for every lookup source.
 Thus user can define various caching strategies or and implementation per lookup, even if the source is the same.
 This module can be used side to side with other lookup module like the global cached lookup module.</p>
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>druid-lookups-cached-single</code> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>druid-lookups-cached-single</code> in the extensions load list.</p>
 <blockquote>
 <p>If using JDBC, you will need to add your database's client JAR files to the extension's directory.
 For Postgres, the connector JAR is already included.
-See the MySQL extension documentation for instructions to obtain <a href="/docs/latest/development/extensions-core/mysql.html#installing-the-mysql-connector-library">MySQL</a> or <a href="/docs/latest/development/extensions-core/mysql.html#alternative-installing-the-mariadb-connector-library">MariaDB</a> connector libraries.
+See the MySQL extension documentation for instructions to obtain <a href="/docs/0.22.1/development/extensions-core/mysql.html#installing-the-mysql-connector-library">MySQL</a> or <a href="/docs/0.22.1/development/extensions-core/mysql.html#alternative-installing-the-mariadb-connector-library">MariaDB</a> connector libraries.
 Copy or symlink the downloaded file to <code>extensions/druid-lookups-cached-single</code> under the distribution root directory.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="architecture"></a><a href="#architecture" 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. [...]
@@ -201,14 +201,14 @@ Same for Loading cache, developer can implement a new type of loading cache by i
 <tr><th>Field</th><th>Type</th><th>Description</th><th>Required</th><th>default</th></tr>
 </thead>
 <tbody>
-<tr><td><code>connectorConfig</code></td><td>JSON object</td><td>Specifies the database connection details. You can set <code>connectURI</code>, <code>user</code> and <code>password</code>. You can selectively allow JDBC properties in <code>connectURI</code>. See <a href="/docs/latest/configuration/index.html#jdbc-connections-to-external-databases">JDBC connections security config</a> for more details.</td><td>yes</td><td></td></tr>
+<tr><td><code>connectorConfig</code></td><td>JSON object</td><td>Specifies the database connection details. You can set <code>connectURI</code>, <code>user</code> and <code>password</code>. You can selectively allow JDBC properties in <code>connectURI</code>. See <a href="/docs/0.22.1/configuration/index.html#jdbc-connections-to-external-databases">JDBC connections security config</a> for more details.</td><td>yes</td><td></td></tr>
 <tr><td><code>table</code></td><td>string</td><td>The table name to read from.</td><td>yes</td><td></td></tr>
 <tr><td><code>keyColumn</code></td><td>string</td><td>The column name that contains the lookup key.</td><td>yes</td><td></td></tr>
 <tr><td><code>valueColumn</code></td><td>string</td><td>The column name that contains the lookup value.</td><td>yes</td><td></td></tr>
 <tr><td><code>streamingFetchSize</code></td><td>int</td><td>Fetch size used in JDBC connections.</td><td>no</td><td>1000</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/druid-kerberos.html"><span class="arrow-prev">← </span><span>Kerberos</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/druid-ranger-security.html"><span>Apache Ranger Security</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#description">Description< [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/druid-kerberos.html"><span class="arrow-prev">← </span><span>Kerberos</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/druid-ranger-security.html"><span>Apache Ranger Security</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#description">Description< [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -225,6 +225,6 @@ Same for Loading cache, developer can implement a new type of loading cache by i
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/druid-pac4j.html b/docs/0.22.1/development/extensions-core/druid-pac4j.html
similarity index 68%
copy from docs/latest/development/extensions-core/druid-pac4j.html
copy to docs/0.22.1/development/extensions-core/druid-pac4j.html
index ec3113c..9391852 100644
--- a/docs/latest/development/extensions-core/druid-pac4j.html
+++ b/docs/0.22.1/development/extensions-core/druid-pac4j.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>Druid pac4j based Security extension · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/druid-pac4j.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="d [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Druid pac4j based Security extension · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/druid-pac4j.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="d [...]
               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++) {
@@ -79,7 +79,7 @@
   -->
 <p>Apache Druid Extension to enable <a href="https://openid.net/connect/">OpenID Connect</a> based Authentication for Druid Processes using <a href="https://github.com/pac4j/pac4j">pac4j</a> as the underlying client library.
 This can be used  with any authentication server that supports same e.g. <a href="https://developer.okta.com/">Okta</a>.
-This extension should only be used at the router node to enable a group of users in existing authentication server to interact with Druid cluster, using the <a href="/docs/latest/operations/druid-console.html">Web Console</a>. This extension does not support JDBC client authentication.</p>
+This extension should only be used at the router node to enable a group of users in existing authentication server to interact with Druid cluster, using the <a href="/docs/0.22.1/operations/druid-console.html">Web Console</a>. This extension does not support JDBC client authentication.</p>
 <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 [...]
 <h3><a class="anchor" aria-hidden="true" id="creating-an-authenticator"></a><a href="#creating-an-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 12H9c [...]
 <pre><code class="hljs"><span class="hljs-attr">druid.auth.authenticatorChain</span>=[<span class="hljs-string">"pac4j"</span>]
@@ -91,15 +91,15 @@ This extension should only be used at the router node to enable a group of users
 <tr><th>Property</th><th>Description</th><th>Default</th><th>required</th></tr>
 </thead>
 <tbody>
-<tr><td><code>druid.auth.pac4j.cookiePassphrase</code></td><td>passphrase for encrypting the cookies used to manage authentication session with browser. It can be provided as plaintext string or The <a href="/docs/latest/operations/password-provider.html">Password Provider</a>.</td><td>none</td><td>Yes</td></tr>
+<tr><td><code>druid.auth.pac4j.cookiePassphrase</code></td><td>passphrase for encrypting the cookies used to manage authentication session with browser. It can be provided as plaintext string or The <a href="/docs/0.22.1/operations/password-provider.html">Password Provider</a>.</td><td>none</td><td>Yes</td></tr>
 <tr><td><code>druid.auth.pac4j.readTimeout</code></td><td>Socket connect and read timeout duration used when communicating with authentication server</td><td>PT5S</td><td>No</td></tr>
-<tr><td><code>druid.auth.pac4j.enableCustomSslContext</code></td><td>Whether to use custom SSLContext setup via <a href="/docs/latest/development/extensions-core/simple-client-sslcontext.html">simple-client-sslcontext</a> extension which must be added to extensions list when this property is set to true.</td><td>false</td><td>No</td></tr>
+<tr><td><code>druid.auth.pac4j.enableCustomSslContext</code></td><td>Whether to use custom SSLContext setup via <a href="/docs/0.22.1/development/extensions-core/simple-client-sslcontext.html">simple-client-sslcontext</a> extension which must be added to extensions list when this property is set to true.</td><td>false</td><td>No</td></tr>
 <tr><td><code>druid.auth.pac4j.oidc.clientID</code></td><td>OAuth Client Application id.</td><td>none</td><td>Yes</td></tr>
-<tr><td><code>druid.auth.pac4j.oidc.clientSecret</code></td><td>OAuth Client Application secret. It can be provided as plaintext string or The <a href="/docs/latest/operations/password-provider.html">Password Provider</a>.</td><td>none</td><td>Yes</td></tr>
+<tr><td><code>druid.auth.pac4j.oidc.clientSecret</code></td><td>OAuth Client Application secret. It can be provided as plaintext string or The <a href="/docs/0.22.1/operations/password-provider.html">Password Provider</a>.</td><td>none</td><td>Yes</td></tr>
 <tr><td><code>druid.auth.pac4j.oidc.discoveryURI</code></td><td>discovery URI for fetching OP metadata <a href="http://openid.net/specs/openid-connect-discovery-1_0.html">see this</a>.</td><td>none</td><td>Yes</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/orc.html"><span class="arrow-prev">← </span><span>ORC Extension</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/parquet.html"><span>Apache Parquet Extension</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#configuration">Configuration</a><ul class=" [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/orc.html"><span class="arrow-prev">← </span><span>ORC Extension</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/parquet.html"><span>Apache Parquet Extension</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#configuration">Configuration</a><ul class=" [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -116,6 +116,6 @@ This extension should only be used at the router node to enable a group of users
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/druid-ranger-security.html b/docs/0.22.1/development/extensions-core/druid-ranger-security.html
similarity index 75%
copy from docs/latest/development/extensions-core/druid-ranger-security.html
copy to docs/0.22.1/development/extensions-core/druid-ranger-security.html
index 76511ad..1d8ef5b 100644
--- a/docs/latest/development/extensions-core/druid-ranger-security.html
+++ b/docs/0.22.1/development/extensions-core/druid-ranger-security.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 Ranger Security · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/druid-ranger-security.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docse [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Ranger Security · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/druid-ranger-security.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docse [...]
               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++) {
@@ -77,8 +77,8 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>This Apache Druid extension adds an Authorizer which implements access control for Druid, backed by <a href="https://ranger.apache.org/">Apache Ranger</a>. Please see <a href="/docs/latest/design/auth.html">Authentication and Authorization</a> for more information on the basic facilities this extension provides.</p>
-<p>Make sure to <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>druid-ranger-security</code> in the extensions load list.</p>
+<p>This Apache Druid extension adds an Authorizer which implements access control for Druid, backed by <a href="https://ranger.apache.org/">Apache Ranger</a>. Please see <a href="/docs/0.22.1/design/auth.html">Authentication and Authorization</a> for more information on the basic facilities this extension provides.</p>
+<p>Make sure to <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>druid-ranger-security</code> in the extensions load list.</p>
 <blockquote>
 <p>The latest release of Apache Ranger is at the time of writing version 2.0. This version has a dependency on <code>log4j 1.2.17</code> which has a vulnerability if you configure it to use a <code>SocketServer</code> (CVE-2019-17571). Next to that, it also includes Kafka 2.0.0 which has 2 known vulnerabilities (CVE-2019-12399, CVE-2018-17196). Kafka can be used by the audit component in Ranger, but is not required.</p>
 </blockquote>
@@ -141,12 +141,12 @@
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="usage"></a><a href="#usage" 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 [...]
 <h3><a class="anchor" aria-hidden="true" id="http-methods"></a><a href="#http-methods" 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>For information on what HTTP methods are supported for a particular request endpoint, please refer to the <a href="/docs/latest/operations/api-reference.html">API documentation</a>.</p>
+<p>For information on what HTTP methods are supported for a particular request endpoint, please refer to the <a href="/docs/0.22.1/operations/api-reference.html">API documentation</a>.</p>
 <p>GET requires READ permission, while POST and DELETE require WRITE permission.</p>
 <h3><a class="anchor" aria-hidden="true" id="sql-permissions"></a><a href="#sql-permissions" 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>Queries on Druid datasources require DATASOURCE READ permissions for the specified datasource.</p>
-<p>Queries on the <a href="/docs/latest/querying/sql.html#information-schema">INFORMATION_SCHEMA tables</a> will return information about datasources that the caller has DATASOURCE READ access to. Other datasources will be omitted.</p>
-<p>Queries on the <a href="/docs/latest/querying/sql.html#system-schema">system schema tables</a> require the following permissions:</p>
+<p>Queries on the <a href="/docs/0.22.1/querying/sql.html#information-schema">INFORMATION_SCHEMA tables</a> will return information about datasources that the caller has DATASOURCE READ access to. Other datasources will be omitted.</p>
+<p>Queries on the <a href="/docs/0.22.1/querying/sql.html#system-schema">system schema tables</a> require the following permissions:</p>
 <ul>
 <li><code>segments</code>: Segments will be filtered based on DATASOURCE READ permissions.</li>
 <li><code>servers</code>: The user requires STATE READ permissions.</li>
@@ -160,7 +160,7 @@
   <span class="hljs-tag">&lt;<span class="hljs-name">Appender-ref</span> <span class="hljs-attr">ref</span>=<span class="hljs-string">"Console"</span>/&gt;</span>
 <span class="hljs-tag">&lt;/<span class="hljs-name">Logger</span>&gt;</span>
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/druid-lookups.html"><span class="arrow-prev">← </span><span>Cached Lookup Module</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/google.html"><span>Google Cloud Storage</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#configuration">Configuration</a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/druid-lookups.html"><span class="arrow-prev">← </span><span>Cached Lookup Module</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/google.html"><span>Google Cloud Storage</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#configuration">Configuration</a [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -177,6 +177,6 @@
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/examples.html b/docs/0.22.1/development/extensions-core/examples.html
similarity index 95%
copy from docs/latest/development/extensions-core/examples.html
copy to docs/0.22.1/development/extensions-core/examples.html
index a9cd090..655058e 100644
--- a/docs/latest/development/extensions-core/examples.html
+++ b/docs/0.22.1/development/extensions-core/examples.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>Extension Examples · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/examples.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" con [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Extension Examples · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/examples.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" con [...]
               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>< [...]
   ~ 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
@@ -22,7 +22,7 @@
   ~ under the License.
   -->
 <p>This extension was removed in Apache Druid 0.16.0. In prior versions, the extension provided obsolete facilities to ingest data from the Twitter 'Spritzer' data stream as well as the Wikipedia changes IRC channel.</p>
-</span></div></article></div><div class="docs-prevnext"></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">Technology</a> · <a href="/use-cases">Use Cases</a> · <a href="/druid-powered">Powered by Druid</a> · <a href="/docs/latest/latest">Docs</a> · <a href="/community/">Community</a> · <a href="/downloads.html">Download</a> · <a href="/faq">FAQ</a></p></div><div [...]
+</span></div></article></div><div class="docs-prevnext"></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">Technology</a> · <a href="/use-cases">Use Cases</a> · <a href="/druid-powered">Powered by Druid</a> · <a href="/docs/0.22.1/latest">Docs</a> · <a href="/community/">Community</a> · <a href="/downloads.html">Download</a> · <a href="/faq">FAQ</a></p></div><div [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -39,6 +39,6 @@
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/google.html b/docs/0.22.1/development/extensions-core/google.html
similarity index 69%
copy from docs/latest/development/extensions-core/google.html
copy to docs/0.22.1/development/extensions-core/google.html
index c155242..38f31a1 100644
--- a/docs/latest/development/extensions-core/google.html
+++ b/docs/0.22.1/development/extensions-core/google.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>Google Cloud Storage · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/google.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" con [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Google Cloud Storage · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/google.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" con [...]
               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++) {
@@ -83,16 +83,16 @@
 <li><a href="#reading-data-from-google-cloud-storage">Ingest data</a> from files stored in Google Cloud Storage.</li>
 <li>Write segments to <a href="#deep-storage">deep storage</a> in GCS.</li>
 </ul>
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>druid-google-extensions</code> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>druid-google-extensions</code> in the extensions load list.</p>
 <h3><a class="anchor" aria-hidden="true" id="required-configuration"></a><a href="#required-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 [...]
 <p>To configure connectivity to google cloud, run druid processes with <code>GOOGLE_APPLICATION_CREDENTIALS=/path/to/service_account_keyfile</code> in the environment.</p>
 <h3><a class="anchor" aria-hidden="true" id="reading-data-from-google-cloud-storage"></a><a href="#reading-data-from-google-cloud-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. [...]
-<p>The <a href="/docs/latest/ingestion/native-batch.html#google-cloud-storage-input-source">Google Cloud Storage input source</a> is supported by the <a href="/docs/latest/ingestion/native-batch.html#parallel-task">Parallel task</a>
-to read objects directly from Google Cloud Storage. If you use the <a href="/docs/latest/ingestion/hadoop.html">Hadoop task</a>,
-you can read data from Google Cloud Storage by specifying the paths in your <a href="/docs/latest/ingestion/hadoop.html#inputspec"><code>inputSpec</code></a>.</p>
-<p>Objects can also be read directly from Google Cloud Storage via the <a href="/docs/latest/ingestion/native-batch.html#staticgoogleblobstorefirehose">StaticGoogleBlobStoreFirehose</a></p>
+<p>The <a href="/docs/0.22.1/ingestion/native-batch.html#google-cloud-storage-input-source">Google Cloud Storage input source</a> is supported by the <a href="/docs/0.22.1/ingestion/native-batch.html#parallel-task">Parallel task</a>
+to read objects directly from Google Cloud Storage. If you use the <a href="/docs/0.22.1/ingestion/hadoop.html">Hadoop task</a>,
+you can read data from Google Cloud Storage by specifying the paths in your <a href="/docs/0.22.1/ingestion/hadoop.html#inputspec"><code>inputSpec</code></a>.</p>
+<p>Objects can also be read directly from Google Cloud Storage via the <a href="/docs/0.22.1/ingestion/native-batch.html#staticgoogleblobstorefirehose">StaticGoogleBlobStoreFirehose</a></p>
 <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>Deep storage can be written to Google Cloud Storage either via this extension or the <a href="/docs/latest/development/extensions-core/hdfs.html">druid-hdfs-storage extension</a>.</p>
+<p>Deep storage can be written to Google Cloud Storage either via this extension or the <a href="/docs/0.22.1/development/extensions-core/hdfs.html">druid-hdfs-storage extension</a>.</p>
 <h4><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>To configure connectivity to google cloud, run druid processes with <code>GOOGLE_APPLICATION_CREDENTIALS=/path/to/service_account_keyfile</code> in the environment.</p>
 <table>
@@ -106,7 +106,7 @@ you can read data from Google Cloud Storage by specifying the paths in your <a h
 <tr><td><code>druid.google.maxListingLength</code></td><td>maximum number of input files matching a given prefix to retrieve at a time</td><td></td><td>1024</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/druid-ranger-security.html"><span class="arrow-prev">← </span><span>Apache Ranger Security</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/hdfs.html"><span>HDFS</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#google-cloud-storage-extension">Google  [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/druid-ranger-security.html"><span class="arrow-prev">← </span><span>Apache Ranger Security</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/hdfs.html"><span>HDFS</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#google-cloud-storage-extension">Google  [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -123,6 +123,6 @@ you can read data from Google Cloud Storage by specifying the paths in your <a h
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/hdfs.html b/docs/0.22.1/development/extensions-core/hdfs.html
similarity index 76%
copy from docs/latest/development/extensions-core/hdfs.html
copy to docs/0.22.1/development/extensions-core/hdfs.html
index 7ea54ee..b64f5ea 100644
--- a/docs/latest/development/extensions-core/hdfs.html
+++ b/docs/0.22.1/development/extensions-core/hdfs.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>HDFS · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/hdfs.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22.0" /><m [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>HDFS · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/hdfs.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22.1" /><m [...]
               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++) {
@@ -77,7 +77,7 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>druid-hdfs-storage</code> in the extensions load list and run druid processes with <code>GOOGLE_APPLICATION_CREDENTIALS=/path/to/service_account_keyfile</code> in the environment.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>druid-hdfs-storage</code> in the extensions load list and run druid processes with <code>GOOGLE_APPLICATION_CREDENTIALS=/path/to/service_account_keyfile</code> in the environment.</p>
 <h2><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. [...]
 <h3><a class="anchor" aria-hidden="true" id="configuration-for-hdfs"></a><a href="#configuration-for-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 [...]
 <table>
@@ -195,19 +195,19 @@ and <a href="https://github.com/GoogleCloudPlatform/bdutil/blob/master/conf/hado
 <p>Tested with Druid 0.17.0, Hadoop 2.8.5 and gcs-connector jar 2.0.0-hadoop2.</p>
 <h2><a class="anchor" aria-hidden="true" id="reading-data-from-hdfs-or-cloud-storage"></a><a href="#reading-data-from-hdfs-or-cloud-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  [...]
 <h3><a class="anchor" aria-hidden="true" id="native-batch-ingestion"></a><a href="#native-batch-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 [...]
-<p>The <a href="/docs/latest/ingestion/native-batch.html#hdfs-input-source">HDFS input source</a> is supported by the <a href="/docs/latest/ingestion/native-batch.html#parallel-task">Parallel task</a>
+<p>The <a href="/docs/0.22.1/ingestion/native-batch.html#hdfs-input-source">HDFS input source</a> is supported by the <a href="/docs/0.22.1/ingestion/native-batch.html#parallel-task">Parallel task</a>
 to read files directly from the HDFS Storage. You may be able to read objects from cloud storage
 with the HDFS input source, but we highly recommend to use a proper
-<a href="/docs/latest/ingestion/native-batch.html#input-sources">Input Source</a> instead if possible because
-it is simple to set up. For now, only the <a href="/docs/latest/ingestion/native-batch.html#s3-input-source">S3 input source</a>
-and the <a href="/docs/latest/ingestion/native-batch.html#google-cloud-storage-input-source">Google Cloud Storage input source</a>
+<a href="/docs/0.22.1/ingestion/native-batch.html#input-sources">Input Source</a> instead if possible because
+it is simple to set up. For now, only the <a href="/docs/0.22.1/ingestion/native-batch.html#s3-input-source">S3 input source</a>
+and the <a href="/docs/0.22.1/ingestion/native-batch.html#google-cloud-storage-input-source">Google Cloud Storage input source</a>
 are supported for cloud storage types, and so you may still want to use the HDFS input source
 to read from cloud storage other than those two.</p>
 <h3><a class="anchor" aria-hidden="true" id="hadoop-based-ingestion"></a><a href="#hadoop-based-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 [...]
-<p>If you use the <a href="/docs/latest/ingestion/hadoop.html">Hadoop ingestion</a>, you can read data from HDFS
-by specifying the paths in your <a href="/docs/latest/ingestion/hadoop.html#inputspec"><code>inputSpec</code></a>.
-See the <a href="/docs/latest/ingestion/hadoop.html#static">Static</a> inputSpec for details.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/google.html"><span class="arrow-prev">← </span><span>Google Cloud Storage</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/kafka-extraction-namespace.html"><span>Apache Kafka Lookups</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#deep-storage">Deep [...]
+<p>If you use the <a href="/docs/0.22.1/ingestion/hadoop.html">Hadoop ingestion</a>, you can read data from HDFS
+by specifying the paths in your <a href="/docs/0.22.1/ingestion/hadoop.html#inputspec"><code>inputSpec</code></a>.
+See the <a href="/docs/0.22.1/ingestion/hadoop.html#static">Static</a> inputSpec for details.</p>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/google.html"><span class="arrow-prev">← </span><span>Google Cloud Storage</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/kafka-extraction-namespace.html"><span>Apache Kafka Lookups</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#deep-storage">Deep [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -224,6 +224,6 @@ See the <a href="/docs/latest/ingestion/hadoop.html#static">Static</a> inputSpec
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.22.1/development/extensions-core/kafka-eight-firehose.html b/docs/0.22.1/development/extensions-core/kafka-eight-firehose.html
new file mode 100644
index 0000000..4d4bfd2
--- /dev/null
+++ b/docs/0.22.1/development/extensions-core/kafka-eight-firehose.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/development/extensions-core/kafka-extraction-namespace.html b/docs/0.22.1/development/extensions-core/kafka-extraction-namespace.html
similarity index 68%
copy from docs/latest/development/extensions-core/kafka-extraction-namespace.html
copy to docs/0.22.1/development/extensions-core/kafka-extraction-namespace.html
index f36514f..108594d 100644
--- a/docs/latest/development/extensions-core/kafka-extraction-namespace.html
+++ b/docs/0.22.1/development/extensions-core/kafka-extraction-namespace.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 Kafka Lookups · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/kafka-extraction-namespace.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="do [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Kafka Lookups · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/kafka-extraction-namespace.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="do [...]
               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++) {
@@ -78,9 +78,9 @@
   ~ under the License.
   -->
 <blockquote>
-<p>Lookups are an <a href="/docs/latest/development/experimental.html">experimental</a> feature.</p>
+<p>Lookups are an <a href="/docs/0.22.1/development/experimental.html">experimental</a> feature.</p>
 </blockquote>
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>druid-lookups-cached-global</code> and <code>druid-kafka-extraction-namespace</code> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>druid-lookups-cached-global</code> and <code>druid-kafka-extraction-namespace</code> in the extensions load list.</p>
 <p>If you need updates to populate as promptly as possible, it is possible to plug into a Kafka topic whose key is the old value and message is the desired new value (both in UTF-8) as a LookupExtractorFactory.</p>
 <pre><code class="hljs css language-json">{
   <span class="hljs-attr">"type"</span>:<span class="hljs-string">"kafka"</span>,
@@ -96,12 +96,12 @@
 <tr><td><code>kafkaTopic</code></td><td>The Kafka topic to read the data from</td><td>Yes</td><td></td></tr>
 <tr><td><code>kafkaProperties</code></td><td>Kafka consumer properties. At least&quot;zookeeper.connect&quot; must be specified. Only the zookeeper connector is supported</td><td>Yes</td><td></td></tr>
 <tr><td><code>connectTimeout</code></td><td>How long to wait for an initial connection</td><td>No</td><td><code>0</code> (do not wait)</td></tr>
-<tr><td><code>isOneToOne</code></td><td>The map is a one-to-one (see <a href="/docs/latest/querying/dimensionspecs.html">Lookup DimensionSpecs</a>)</td><td>No</td><td><code>false</code></td></tr>
+<tr><td><code>isOneToOne</code></td><td>The map is a one-to-one (see <a href="/docs/0.22.1/querying/dimensionspecs.html">Lookup DimensionSpecs</a>)</td><td>No</td><td><code>false</code></td></tr>
 </tbody>
 </table>
 <p>The extension <code>kafka-extraction-namespace</code> enables reading from a Kafka feed which has name/key pairs to allow renaming of dimension values. An example use case would be to rename an ID to a human readable format.</p>
 <p>The consumer properties <code>group.id</code> and <code>auto.offset.reset</code> CANNOT be set in <code>kafkaProperties</code> as they are set by the extension as <code>UUID.randomUUID().toString()</code> and <code>smallest</code> respectively.</p>
-<p>See <a href="/docs/latest/querying/lookups.html">lookups</a> for how to configure and use lookups.</p>
+<p>See <a href="/docs/0.22.1/querying/lookups.html">lookups</a> for how to configure and use lookups.</p>
 <h2><a class="anchor" aria-hidden="true" id="limitations"></a><a href="#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.22-2-2.5 0-.83.42 [...]
 <p>Currently the Kafka lookup extractor feeds the entire Kafka stream into a local cache. If you are using on-heap caching, this can easily clobber your java heap if the Kafka stream spews a lot of unique keys.
 off-heap caching should alleviate these concerns, but there is still a limit to the quantity of data that can be stored.
@@ -111,7 +111,7 @@ There is currently no eviction policy.</p>
 <pre><code class="hljs">./bin/kafka-console-producer.sh --<span class="hljs-keyword">property</span><span class="hljs-title"> </span>parse.<span class="hljs-attr">key=</span><span class="hljs-literal">true</span> --<span class="hljs-keyword">property</span><span class="hljs-title"> </span>key.<span class="hljs-attr">separator=</span><span class="hljs-string">"-&gt;"</span> --broker-list localhost:<span class="hljs-number">9092</span> --topic testTopic
 </code></pre>
 <p>Renames can then be published as <code>OLD_VAL-&gt;NEW_VAL</code> followed by newline (enter or return)</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/hdfs.html"><span class="arrow-prev">← </span><span>HDFS</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/lookups-cached-global.html"><span>Globally Cached Lookups</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#limitations">Limitations</a></li><li>< [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/hdfs.html"><span class="arrow-prev">← </span><span>HDFS</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/lookups-cached-global.html"><span>Globally Cached Lookups</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#limitations">Limitations</a></li><li>< [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -128,6 +128,6 @@ There is currently no eviction policy.</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/kafka-ingestion.html b/docs/0.22.1/development/extensions-core/kafka-ingestion.html
similarity index 86%
copy from docs/latest/development/extensions-core/kafka-ingestion.html
copy to docs/0.22.1/development/extensions-core/kafka-ingestion.html
index 80faefc..2db3dd3 100644
--- a/docs/latest/development/extensions-core/kafka-ingestion.html
+++ b/docs/0.22.1/development/extensions-core/kafka-ingestion.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 Kafka ingestion · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/kafka-ingestion.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:v [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Kafka ingestion · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/kafka-ingestion.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:v [...]
               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++) {
@@ -83,8 +83,8 @@
 <li>manage failures</li>
 <li>ensure that scalability and replication requirements are maintained.</li>
 </ul>
-<p>To use the Kafka indexing service, load the <code>druid-kafka-indexing-service</code> core Apache Druid extension. See <a href="/docs/latest/development/extensions.html#loading-extensions">Including Extensions</a>).</p>
-<p>This topic covers the ingestion spec for Kafka. For a general <code>ingestionSpec</code> reference, see <a href="/docs/latest/ingestion/ingestion-spec.html">Ingestion specs</a>. For a walk-through, check out the <a href="/docs/latest/tutorials/tutorial-kafka.html">Loading from Apache Kafka</a> tutorial.</p>
+<p>To use the Kafka indexing service, load the <code>druid-kafka-indexing-service</code> core Apache Druid extension. See <a href="/docs/0.22.1/development/extensions.html#loading-extensions">Including Extensions</a>).</p>
+<p>This topic covers the ingestion spec for Kafka. For a general <code>ingestionSpec</code> reference, see <a href="/docs/0.22.1/ingestion/ingestion-spec.html">Ingestion specs</a>. For a walk-through, check out the <a href="/docs/0.22.1/tutorials/tutorial-kafka.html">Loading from Apache Kafka</a> tutorial.</p>
 <h2><a class="anchor" aria-hidden="true" id="kafka-support"></a><a href="#kafka-support" 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>The Kafka indexing service supports transactional topics introduced in Kafka 0.11.x by default. The consumer for Kafka indexing service is incompatible with older Kafka brokers. If you are using an older version, refer to the <a href="https://kafka.apache.org/documentation/#upgrade">Kafka upgrade guide</a>.</p>
 <p>Additionally, you can set <code>isolation.level</code> to <code>read_uncommitted</code> in <code>consumerProperties</code> if either:</p>
@@ -278,12 +278,12 @@
 <p>This must contain a property <code>bootstrap.servers</code> with a list of Kafka brokers in the form: <code>&lt;BROKER_1&gt;:&lt;PORT_1&gt;,&lt;BROKER_2&gt;:&lt;PORT_2&gt;,...</code>.
 By default, <code>isolation.level</code> is set to <code>read_committed</code>. It should be set to <code>read_uncommitted</code> if you don't want Druid to consume only committed transactions or working with older versions of Kafka servers with no Transactions support.</p>
 <p>There are few cases that require fetching few/all of consumer properties at runtime e.g. when <code>bootstrap.servers</code> is not known upfront or not static, to enable SSL connections users might have to provide passwords for <code>keystore</code>, <code>truststore</code> and <code>key</code> secretly.
-For such consumer properties, user can implement a <a href="/docs/latest/operations/dynamic-config-provider.html">DynamicConfigProvider</a> to supply them at runtime, by adding
+For such consumer properties, user can implement a <a href="/docs/0.22.1/operations/dynamic-config-provider.html">DynamicConfigProvider</a> to supply them at runtime, by adding
 <code>druid.dynamic.config.provider</code>=<code>{&quot;type&quot;: &quot;&lt;registered_dynamic_config_provider_name&gt;&quot;, ...}</code>
 in consumerProperties map.</p>
-<p>Note: SSL connections may also be supplied using the deprecated <a href="/docs/latest/operations/password-provider.html">Password Provider</a> interface to define the <code>keystore</code>, <code>truststore</code>, and <code>key</code>. This functionality might be removed in a future release.</p>
+<p>Note: SSL connections may also be supplied using the deprecated <a href="/docs/0.22.1/operations/password-provider.html">Password Provider</a> interface to define the <code>keystore</code>, <code>truststore</code>, and <code>key</code>. This functionality might be removed in a future release.</p>
 <h4><a class="anchor" aria-hidden="true" id="specifying-data-format"></a><a href="#specifying-data-format" 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>Kafka indexing service supports both <a href="/docs/latest/ingestion/data-formats.html#input-format"><code>inputFormat</code></a> and <a href="/docs/latest/ingestion/data-formats.html#parser"><code>parser</code></a> to specify the data format.
+<p>Kafka indexing service supports both <a href="/docs/0.22.1/ingestion/data-formats.html#input-format"><code>inputFormat</code></a> and <a href="/docs/0.22.1/ingestion/data-formats.html#parser"><code>parser</code></a> to specify the data format.
 Use the <code>inputFormat</code> to specify the data format for Kafka indexing service unless you need a format only supported by the legacy <code>parser</code>.</p>
 <p>Supported <code>inputFormat</code>s include:</p>
 <ul>
@@ -293,7 +293,7 @@ Use the <code>inputFormat</code> to specify the data format for Kafka indexing s
 <li><code>avro_stream</code></li>
 <li><code>protobuf</code></li>
 </ul>
-<p>For more information, see <a href="/docs/latest/ingestion/data-formats.html">Data formats</a>. You can also read <a href="/docs/latest/development/extensions-contrib/thrift.html"><code>thrift</code></a> formats using <code>parser</code>.</p>
+<p>For more information, see <a href="/docs/0.22.1/ingestion/data-formats.html">Data formats</a>. You can also read <a href="/docs/0.22.1/development/extensions-contrib/thrift.html"><code>thrift</code></a> formats using <code>parser</code>.</p>
 <p><a name="tuningconfig"></a></p>
 <h3><a class="anchor" aria-hidden="true" id="kafkasupervisortuningconfig"></a><a href="#kafkasupervisortuningconfig" 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>The tuningConfig is optional and default parameters will be used if no tuningConfig is specified.</p>
@@ -313,7 +313,7 @@ Use the <code>inputFormat</code> to specify the data format for Kafka indexing s
 <tr><td><code>indexSpecForIntermediatePersists</code></td><td></td><td>Defines segment storage format options to be used at indexing time for intermediate persisted temporary segments. This can be used to disable dimension/metric compression on intermediate segments to reduce memory required for final merging. However, disabling compression on intermediate segments might increase page cache use while they are used before getting merged into final segment published, see <a href="#indexspe [...]
 <tr><td><code>reportParseExceptions</code></td><td>Boolean</td><td><em>DEPRECATED</em>. If true, exceptions encountered during parsing will be thrown and will halt ingestion; if false, unparseable rows and fields will be skipped. Setting <code>reportParseExceptions</code> to true will override existing configurations for <code>maxParseExceptions</code> and <code>maxSavedParseExceptions</code>, setting <code>maxParseExceptions</code> to 0 and limiting <code>maxSavedParseExceptions</code>  [...]
 <tr><td><code>handoffConditionTimeout</code></td><td>Long</td><td>Milliseconds to wait for segment handoff. It must be &gt;= 0, where 0 means to wait forever.</td><td>no (default == 0)</td></tr>
-<tr><td><code>resetOffsetAutomatically</code></td><td>Boolean</td><td>Controls behavior when Druid needs to read Kafka messages that are no longer available (i.e. when OffsetOutOfRangeException is encountered).<br/><br/>If false, the exception will bubble up, which will cause your tasks to fail and ingestion to halt. If this occurs, manual intervention is required to correct the situation; potentially using the <a href="/docs/latest/operations/api-reference.html#supervisors">Reset Superv [...]
+<tr><td><code>resetOffsetAutomatically</code></td><td>Boolean</td><td>Controls behavior when Druid needs to read Kafka messages that are no longer available (i.e. when OffsetOutOfRangeException is encountered).<br/><br/>If false, the exception will bubble up, which will cause your tasks to fail and ingestion to halt. If this occurs, manual intervention is required to correct the situation; potentially using the <a href="/docs/0.22.1/operations/api-reference.html#supervisors">Reset Superv [...]
 <tr><td><code>workerThreads</code></td><td>Integer</td><td>The number of threads that the supervisor uses to handle requests/responses for worker tasks, along with any other internal asynchronous operation.</td><td>no (default == min(10, taskCount))</td></tr>
 <tr><td><code>chatThreads</code></td><td>Integer</td><td>The number of threads that will be used for communicating with indexing tasks.</td><td>no (default == min(10, taskCount * replicas))</td></tr>
 <tr><td><code>chatRetries</code></td><td>Integer</td><td>The number of times HTTP requests to indexing tasks will be retried before considering tasks unresponsive.</td><td>no (default == 8)</td></tr>
@@ -324,7 +324,7 @@ Use the <code>inputFormat</code> to specify the data format for Kafka indexing s
 <tr><td><code>intermediateHandoffPeriod</code></td><td>ISO8601 Period</td><td>How often the tasks should hand off segments. Handoff will happen either if <code>maxRowsPerSegment</code> or <code>maxTotalRows</code> is hit or every <code>intermediateHandoffPeriod</code>, whichever happens earlier.</td><td>no (default == P2147483647D)</td></tr>
 <tr><td><code>logParseExceptions</code></td><td>Boolean</td><td>If true, log an error message when a parsing exception occurs, containing information about the row where the error occurred.</td><td>no, default == false</td></tr>
 <tr><td><code>maxParseExceptions</code></td><td>Integer</td><td>The maximum number of parse exceptions that can occur before the task halts ingestion and fails. Overridden if <code>reportParseExceptions</code> is set.</td><td>no, unlimited default</td></tr>
-<tr><td><code>maxSavedParseExceptions</code></td><td>Integer</td><td>When a parse exception occurs, Druid can keep track of the most recent parse exceptions. &quot;maxSavedParseExceptions&quot; limits how many exception instances will be saved. These saved exceptions will be made available after the task finishes in the <a href="/docs/latest/ingestion/tasks.html#reports">task completion report</a>. Overridden if <code>reportParseExceptions</code> is set.</td><td>no, default == 0</td></tr>
+<tr><td><code>maxSavedParseExceptions</code></td><td>Integer</td><td>When a parse exception occurs, Druid can keep track of the most recent parse exceptions. &quot;maxSavedParseExceptions&quot; limits how many exception instances will be saved. These saved exceptions will be made available after the task finishes in the <a href="/docs/0.22.1/ingestion/tasks.html#reports">task completion report</a>. Overridden if <code>reportParseExceptions</code> is set.</td><td>no, default == 0</td></tr>
 </tbody>
 </table>
 <h4><a class="anchor" aria-hidden="true" id="indexspec"></a><a href="#indexspec" 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 [...]
@@ -365,12 +365,12 @@ Use the <code>inputFormat</code> to specify the data format for Kafka indexing s
 <tr><th>Field</th><th>Type</th><th>Description</th><th>Required</th></tr>
 </thead>
 <tbody>
-<tr><td><code>type</code></td><td>String</td><td>See <a href="/docs/latest/configuration/index.html#segmentwriteoutmediumfactory">Additional Peon Configuration: SegmentWriteOutMediumFactory</a> for explanation and available options.</td><td>yes</td></tr>
+<tr><td><code>type</code></td><td>String</td><td>See <a href="/docs/0.22.1/configuration/index.html#segmentwriteoutmediumfactory">Additional Peon Configuration: SegmentWriteOutMediumFactory</a> for explanation and available options.</td><td>yes</td></tr>
 </tbody>
 </table>
 <h2><a class="anchor" aria-hidden="true" id="operations"></a><a href="#operations" 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>This section gives descriptions of how some supervisor APIs work specifically in Kafka Indexing Service.
-For all supervisor APIs, please check <a href="/docs/latest/operations/api-reference.html#supervisors">Supervisor APIs</a>.</p>
+For all supervisor APIs, please check <a href="/docs/0.22.1/operations/api-reference.html#supervisors">Supervisor APIs</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="getting-supervisor-status-report"></a><a href="#getting-supervisor-status-report" 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><code>GET /druid/indexer/v1/supervisor/&lt;supervisorId&gt;/status</code> returns a snapshot report of the current state of the tasks managed by the given supervisor. This includes the latest
 offsets as reported by Kafka, the consumer lag per partition, as well as the aggregate lag of all partitions. The
@@ -422,7 +422,7 @@ that is, once it has completed a full execution without encountering any issues
 state until it is stopped, suspended, or hits a task failure threshold and transitions to an unhealthy state.</p>
 <h3><a class="anchor" aria-hidden="true" id="getting-supervisor-ingestion-stats-report"></a><a href="#getting-supervisor-ingestion-stats-report" 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  [...]
 <p><code>GET /druid/indexer/v1/supervisor/&lt;supervisorId&gt;/stats</code> returns a snapshot of the current ingestion row counters for each task being managed by the supervisor, along with moving averages for the row counters.</p>
-<p>See <a href="/docs/latest/ingestion/tasks.html#row-stats">Task Reports: Row Stats</a> for more information.</p>
+<p>See <a href="/docs/0.22.1/ingestion/tasks.html#row-stats">Task Reports: Row Stats</a> for more information.</p>
 <h3><a class="anchor" aria-hidden="true" id="supervisor-health-check"></a><a href="#supervisor-health-check" 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><code>GET /druid/indexer/v1/supervisor/&lt;supervisorId&gt;/health</code> returns <code>200 OK</code> if the supervisor is healthy and
 <code>503 Service Unavailable</code> if it is unhealthy. Healthiness is determined by the supervisor's <code>state</code> (as returned by the
@@ -521,10 +521,10 @@ In this way, configuration changes can be applied without requiring any pause in
 <li>The supervisor was started at 9:10
 After 4 hours at 13:10, Druid starts a new set of tasks. The events for the interval 13:00 - 14:00 may be split across existing tasks and the new set of tasks which could result in small segments. To merge them together into new segments of an ideal size (in the range of ~500-700 MB per segment), you can schedule re-indexing tasks, optionally with a different segment granularity.</li>
 </ul>
-<p>For more detail, see <a href="/docs/latest/operations/segment-optimization.html">Segment size optimization</a>.
+<p>For more detail, see <a href="/docs/0.22.1/operations/segment-optimization.html">Segment size optimization</a>.
 There is also ongoing work to support automatic segment compaction of sharded segments as well as compaction not requiring
 Hadoop (see <a href="https://github.com/apache/druid/pull/5102">here</a>).</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/ingestion/compaction.html"><span class="arrow-prev">← </span><span>Compaction</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/kinesis-ingestion.html"><span>Amazon Kinesis</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#kafka-support">Kafka support</a></li><li><a href="#submit [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/ingestion/compaction.html"><span class="arrow-prev">← </span><span>Compaction</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/kinesis-ingestion.html"><span>Amazon Kinesis</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#kafka-support">Kafka support</a></li><li><a href="#submit [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -541,6 +541,6 @@ Hadoop (see <a href="https://github.com/apache/druid/pull/5102">here</a>).</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/kinesis-ingestion.html b/docs/0.22.1/development/extensions-core/kinesis-ingestion.html
similarity index 87%
copy from docs/latest/development/extensions-core/kinesis-ingestion.html
copy to docs/0.22.1/development/extensions-core/kinesis-ingestion.html
index 5a1cb2a..54a5588 100644
--- a/docs/latest/development/extensions-core/kinesis-ingestion.html
+++ b/docs/0.22.1/development/extensions-core/kinesis-ingestion.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>Amazon Kinesis ingestion · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/kinesis-ingestion.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsear [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Amazon Kinesis ingestion · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/kinesis-ingestion.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsear [...]
               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++) {
@@ -84,7 +84,7 @@
 <li>ensure that scalability and replication requirements are maintained.</li>
 </ul>
 <p>To use the Kinesis indexing service, load the <code>druid-kinesis-indexing-service</code> core Apache Druid extension (see
-<a href="/docs/latest/development/extensions.html#loading-extensions">Including Extensions</a>).</p>
+<a href="/docs/0.22.1/development/extensions.html#loading-extensions">Including Extensions</a>).</p>
 <blockquote>
 <p>Before you deploy the Kinesis extension to production, read the <a href="#kinesis-known-issues">Kinesis known issues</a>.</p>
 </blockquote>
@@ -165,7 +165,7 @@
 <tbody>
 <tr><td><code>type</code></td><td>The supervisor type, this should always be <code>kinesis</code>.</td><td>yes</td></tr>
 <tr><td><code>spec</code></td><td>Container object for the supervisor configuration.</td><td>yes</td></tr>
-<tr><td><code>dataSchema</code></td><td>The schema that will be used by the Kinesis indexing task during ingestion. See <a href="/docs/latest/ingestion/ingestion-spec.html#dataschema"><code>dataSchema</code></a>.</td><td>yes</td></tr>
+<tr><td><code>dataSchema</code></td><td>The schema that will be used by the Kinesis indexing task during ingestion. See <a href="/docs/0.22.1/ingestion/ingestion-spec.html#dataschema"><code>dataSchema</code></a>.</td><td>yes</td></tr>
 <tr><td><code>ioConfig</code></td><td>A KinesisSupervisorIOConfig object for configuring Kafka connection and I/O-related settings for the supervisor and indexing task. See <a href="#kinesissupervisorioconfig">KinesisSupervisorIOConfig</a> below.</td><td>yes</td></tr>
 <tr><td><code>tuningConfig</code></td><td>A KinesisSupervisorTuningConfig object for configuring performance-related settings for the supervisor and indexing tasks. See <a href="#kinesissupervisortuningconfig">KinesisSupervisorTuningConfig</a> below.</td><td>no</td></tr>
 </tbody>
@@ -177,7 +177,7 @@
 </thead>
 <tbody>
 <tr><td><code>stream</code></td><td>String</td><td>The Kinesis stream to read.</td><td>yes</td></tr>
-<tr><td><code>inputFormat</code></td><td>Object</td><td><a href="/docs/latest/ingestion/data-formats.html#input-format"><code>inputFormat</code></a> to specify how to parse input data. See <a href="#specifying-data-format">the below section</a> for details about specifying the input format.</td><td>yes</td></tr>
+<tr><td><code>inputFormat</code></td><td>Object</td><td><a href="/docs/0.22.1/ingestion/data-formats.html#input-format"><code>inputFormat</code></a> to specify how to parse input data. See <a href="#specifying-data-format">the below section</a> for details about specifying the input format.</td><td>yes</td></tr>
 <tr><td><code>endpoint</code></td><td>String</td><td>The AWS Kinesis stream endpoint for a region. You can find a list of endpoints <a href="http://docs.aws.amazon.com/general/latest/gr/rande.html#ak_region">here</a>.</td><td>no (default == kinesis.us-east-1.amazonaws.com)</td></tr>
 <tr><td><code>replicas</code></td><td>Integer</td><td>The number of replica sets, where 1 means a single set of tasks (no replication). Replica tasks will always be assigned to different workers to provide resiliency against process failure.</td><td>no (default == 1)</td></tr>
 <tr><td><code>taskCount</code></td><td>Integer</td><td>The maximum number of <em>reading</em> tasks in a <em>replica set</em>. This means that the maximum number of reading tasks will be <code>taskCount * replicas</code> and the total number of tasks (<em>reading</em> + <em>publishing</em>) will be higher than this. See <a href="#capacity-planning">Capacity Planning</a> below for more details. The number of reading tasks will be less than <code>taskCount</code> if <code>taskCount &gt; {n [...]
@@ -310,13 +310,13 @@
 }
 </code></pre>
 <h4><a class="anchor" aria-hidden="true" id="specifying-data-format"></a><a href="#specifying-data-format" 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>Kinesis indexing service supports both <a href="/docs/latest/ingestion/data-formats.html#input-format"><code>inputFormat</code></a> and <a href="/docs/latest/ingestion/data-formats.html#parser"><code>parser</code></a> to specify the data format.
+<p>Kinesis indexing service supports both <a href="/docs/0.22.1/ingestion/data-formats.html#input-format"><code>inputFormat</code></a> and <a href="/docs/0.22.1/ingestion/data-formats.html#parser"><code>parser</code></a> to specify the data format.
 The <code>inputFormat</code> is a new and recommended way to specify the data format for Kinesis indexing service,
 but unfortunately, it doesn't support all data formats supported by the legacy <code>parser</code>.
 (They will be supported in the future.)</p>
-<p>The supported <code>inputFormat</code>s include <a href="/docs/latest/ingestion/data-formats.html#csv"><code>csv</code></a>,
-<a href="/docs/latest/ingestion/data-formats.html#tsv-delimited"><code>delimited</code></a>, <a href="/docs/latest/ingestion/data-formats.html#json"><code>json</code></a>, <a href="/docs/latest/ingestion/data-formats.html#avro-stream"><code>avro_stream</code></a>, <a href="/docs/latest/ingestion/data-formats.html#protobuf"><code>protobuf</code></a>.
-You can also read <a href="/docs/latest/development/extensions-contrib/thrift.html"><code>thrift</code></a> formats using <code>parser</code>.</p>
+<p>The supported <code>inputFormat</code>s include <a href="/docs/0.22.1/ingestion/data-formats.html#csv"><code>csv</code></a>,
+<a href="/docs/0.22.1/ingestion/data-formats.html#tsv-delimited"><code>delimited</code></a>, <a href="/docs/0.22.1/ingestion/data-formats.html#json"><code>json</code></a>, <a href="/docs/0.22.1/ingestion/data-formats.html#avro-stream"><code>avro_stream</code></a>, <a href="/docs/0.22.1/ingestion/data-formats.html#protobuf"><code>protobuf</code></a>.
+You can also read <a href="/docs/0.22.1/development/extensions-contrib/thrift.html"><code>thrift</code></a> formats using <code>parser</code>.</p>
 <p><a name="tuningconfig"></a></p>
 <h3><a class="anchor" aria-hidden="true" id="kinesissupervisortuningconfig"></a><a href="#kinesissupervisortuningconfig" 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>The tuningConfig is optional and default parameters will be used if no tuningConfig is specified.</p>
@@ -336,7 +336,7 @@ You can also read <a href="/docs/latest/development/extensions-contrib/thrift.ht
 <tr><td><code>indexSpecForIntermediatePersists</code></td><td></td><td>Defines segment storage format options to be used at indexing time for intermediate persisted temporary segments. This can be used to disable dimension/metric compression on intermediate segments to reduce memory required for final merging. However, disabling compression on intermediate segments might increase page cache use while they are used before getting merged into final segment published, see <a href="#indexspe [...]
 <tr><td><code>reportParseExceptions</code></td><td>Boolean</td><td>If true, exceptions encountered during parsing will be thrown and will halt ingestion; if false, unparseable rows and fields will be skipped.</td><td>no (default == false)</td></tr>
 <tr><td><code>handoffConditionTimeout</code></td><td>Long</td><td>Milliseconds to wait for segment handoff. It must be &gt;= 0, where 0 means to wait forever.</td><td>no (default == 0)</td></tr>
-<tr><td><code>resetOffsetAutomatically</code></td><td>Boolean</td><td>Controls behavior when Druid needs to read Kinesis messages that are no longer available.<br/><br/>If false, the exception will bubble up, which will cause your tasks to fail and ingestion to halt. If this occurs, manual intervention is required to correct the situation; potentially using the <a href="/docs/latest/operations/api-reference.html#supervisors">Reset Supervisor API</a>. This mode is useful for production, s [...]
+<tr><td><code>resetOffsetAutomatically</code></td><td>Boolean</td><td>Controls behavior when Druid needs to read Kinesis messages that are no longer available.<br/><br/>If false, the exception will bubble up, which will cause your tasks to fail and ingestion to halt. If this occurs, manual intervention is required to correct the situation; potentially using the <a href="/docs/0.22.1/operations/api-reference.html#supervisors">Reset Supervisor API</a>. This mode is useful for production, s [...]
 <tr><td><code>skipSequenceNumberAvailabilityCheck</code></td><td>Boolean</td><td>Whether to enable checking if the current sequence number is still available in a particular Kinesis shard. If set to false, the indexing task will attempt to reset the current sequence number (or not), depending on the value of <code>resetOffsetAutomatically</code>.</td><td>no (default == false)</td></tr>
 <tr><td><code>workerThreads</code></td><td>Integer</td><td>The number of threads that the supervisor uses to handle requests/responses for worker tasks, along with any other internal asynchronous operation.</td><td>no (default == min(10, taskCount))</td></tr>
 <tr><td><code>chatThreads</code></td><td>Integer</td><td>The number of threads that will be used for communicating with indexing tasks.</td><td>no (default == min(10, taskCount * replicas))</td></tr>
@@ -352,7 +352,7 @@ You can also read <a href="/docs/latest/development/extensions-contrib/thrift.ht
 <tr><td><code>intermediateHandoffPeriod</code></td><td>ISO8601 Period</td><td>How often the tasks should hand off segments. Handoff will happen either if <code>maxRowsPerSegment</code> or <code>maxTotalRows</code> is hit or every <code>intermediateHandoffPeriod</code>, whichever happens earlier.</td><td>no (default == P2147483647D)</td></tr>
 <tr><td><code>logParseExceptions</code></td><td>Boolean</td><td>If true, log an error message when a parsing exception occurs, containing information about the row where the error occurred.</td><td>no, default == false</td></tr>
 <tr><td><code>maxParseExceptions</code></td><td>Integer</td><td>The maximum number of parse exceptions that can occur before the task halts ingestion and fails. Overridden if <code>reportParseExceptions</code> is set.</td><td>no, unlimited default</td></tr>
-<tr><td><code>maxSavedParseExceptions</code></td><td>Integer</td><td>When a parse exception occurs, Druid can keep track of the most recent parse exceptions. &quot;maxSavedParseExceptions&quot; limits how many exception instances will be saved. These saved exceptions will be made available after the task finishes in the <a href="/docs/latest/ingestion/tasks.html#reports">task completion report</a>. Overridden if <code>reportParseExceptions</code> is set.</td><td>no, default == 0</td></tr>
+<tr><td><code>maxSavedParseExceptions</code></td><td>Integer</td><td>When a parse exception occurs, Druid can keep track of the most recent parse exceptions. &quot;maxSavedParseExceptions&quot; limits how many exception instances will be saved. These saved exceptions will be made available after the task finishes in the <a href="/docs/0.22.1/ingestion/tasks.html#reports">task completion report</a>. Overridden if <code>reportParseExceptions</code> is set.</td><td>no, default == 0</td></tr>
 <tr><td><code>maxRecordsPerPoll</code></td><td>Integer</td><td>The maximum number of records/events to be fetched from buffer per poll. The actual maximum will be <code>Max(maxRecordsPerPoll, Max(bufferSize, 1))</code></td><td>no, default == 100</td></tr>
 <tr><td><code>repartitionTransitionDuration</code></td><td>ISO8601 Period</td><td>When shards are split or merged, the supervisor will recompute shard -&gt; task group mappings, and signal any running tasks created under the old mappings to stop early at (current time + <code>repartitionTransitionDuration</code>). Stopping the tasks early allows Druid to begin reading from the new shards more quickly. The repartition transition wait time controlled by this property gives the stream addit [...]
 <tr><td><code>offsetFetchPeriod</code></td><td>ISO8601 Period</td><td>How often the supervisor queries Kinesis and the indexing tasks to fetch current offsets and calculate lag. If the user-specified value is below the minimum value (<code>PT5S</code>), the supervisor ignores the value and uses the minimum value instead.</td><td>no (default == PT30S, min == PT5S)</td></tr>
@@ -396,12 +396,12 @@ You can also read <a href="/docs/latest/development/extensions-contrib/thrift.ht
 <tr><th>Field</th><th>Type</th><th>Description</th><th>Required</th></tr>
 </thead>
 <tbody>
-<tr><td><code>type</code></td><td>String</td><td>See <a href="/docs/latest/configuration/index.html#segmentwriteoutmediumfactory">Additional Peon Configuration: SegmentWriteOutMediumFactory</a> for explanation and available options.</td><td>yes</td></tr>
+<tr><td><code>type</code></td><td>String</td><td>See <a href="/docs/0.22.1/configuration/index.html#segmentwriteoutmediumfactory">Additional Peon Configuration: SegmentWriteOutMediumFactory</a> for explanation and available options.</td><td>yes</td></tr>
 </tbody>
 </table>
 <h2><a class="anchor" aria-hidden="true" id="operations"></a><a href="#operations" 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>This section gives descriptions of how some supervisor APIs work specifically in Kinesis Indexing Service.
-For all supervisor APIs, please check <a href="/docs/latest/operations/api-reference.html#supervisors">Supervisor APIs</a>.</p>
+For all supervisor APIs, please check <a href="/docs/0.22.1/operations/api-reference.html#supervisors">Supervisor APIs</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="aws-authentication"></a><a href="#aws-authentication" 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 authenticate with AWS, you must provide your AWS access key and AWS secret key via runtime.properties, for example:</p>
 <pre><code class="hljs">-<span class="hljs-module-access"><span class="hljs-module"><span class="hljs-identifier">Ddruid</span>.</span></span>kinesis.accessKey=<span class="hljs-number">123</span> -<span class="hljs-module-access"><span class="hljs-module"><span class="hljs-identifier">Ddruid</span>.</span></span>kinesis.secretKey=<span class="hljs-number">456</span>
@@ -555,7 +555,7 @@ without accumulating old segments locally on Middle Manager processes and it is
 is set to an HOUR and Supervisor was started at 9:10 then after 4 hours at 13:10, new set of tasks will be started and
 events for the interval 13:00 - 14:00 may be split across previous and new set of tasks. If you see it becoming a problem then
 one can schedule re-indexing tasks be run to merge segments together into new segments of an ideal size (in the range of ~500-700 MB per segment).
-Details on how to optimize the segment size can be found on <a href="/docs/latest/operations/segment-optimization.html">Segment size optimization</a>.
+Details on how to optimize the segment size can be found on <a href="/docs/0.22.1/operations/segment-optimization.html">Segment size optimization</a>.
 There is also ongoing work to support automatic segment compaction of sharded segments as well as compaction not requiring
 Hadoop (see <a href="https://github.com/apache/druid/pull/5102">here</a>).</p>
 <h3><a class="anchor" aria-hidden="true" id="determining-fetch-settings"></a><a href="#determining-fetch-settings" 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 [...]
@@ -611,7 +611,7 @@ with an assignment of closed shards that have been fully read and to ensure a ba
 <li>If ingestion tasks get stuck, the supervisor does not automatically recover. You should monitor ingestion tasks and investigate if your ingestion falls behind.</li>
 <li>A Kinesis supervisor can sometimes compare the checkpoint offset to retention window of the stream to see if it has fallen behind. These checks fetch the earliest sequence number for Kinesis which can result in <code>IteratorAgeMilliseconds</code> becoming very high in AWS CloudWatch.</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/kafka-ingestion.html"><span class="arrow-prev">← </span><span>Apache Kafka</span></a><a class="docs-next button" href="/docs/latest/ingestion/standalone-realtime.html"><span>Realtime Process</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#submitting-a-supervisor-spec">Submitting a Sup [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/kafka-ingestion.html"><span class="arrow-prev">← </span><span>Apache Kafka</span></a><a class="docs-next button" href="/docs/0.22.1/ingestion/standalone-realtime.html"><span>Realtime Process</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#submitting-a-supervisor-spec">Submitting a Sup [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -628,6 +628,6 @@ with an assignment of closed shards that have been fully read and to ensure a ba
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/kubernetes.html b/docs/0.22.1/development/extensions-core/kubernetes.html
similarity index 70%
copy from docs/latest/development/extensions-core/kubernetes.html
copy to docs/0.22.1/development/extensions-core/kubernetes.html
index 00c3250..f2dc111 100644
--- a/docs/latest/development/extensions-core/kubernetes.html
+++ b/docs/0.22.1/development/extensions-core/kubernetes.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>Kubernetes · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/kubernetes.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content=" [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Kubernetes · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/kubernetes.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content=" [...]
               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++) {
@@ -77,10 +77,10 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>Consider this an <a href="/docs/latest/development/experimental.html">EXPERIMENTAL</a> feature mostly because it has not been tested yet on a wide variety of long running Druid clusters.</p>
+<p>Consider this an <a href="/docs/0.22.1/development/experimental.html">EXPERIMENTAL</a> feature mostly because it has not been tested yet on a wide variety of long running Druid clusters.</p>
 <p>Apache Druid Extension to enable using Kubernetes API Server for node discovery and leader election. This extension allows Druid cluster deployment on Kubernetes without Zookeeper. It allows running multiple Druid clusters within same Kubernetes Cluster, See <code>clusterIdentifier</code> config below.</p>
 <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>To use this extension please make sure to  <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>druid-kubernetes-extensions</code> in the extensions load list.</p>
+<p>To use this extension please make sure to  <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>druid-kubernetes-extensions</code> in the extensions load list.</p>
 <p>This extension works together with HTTP based segment and task management in Druid. Consequently, following configurations must be set on all Druid nodes.</p>
 <p><code>druid.zk.service.enabled=false</code>
 <code>druid.serverview.type=http</code>
@@ -134,7 +134,7 @@
   <span class="hljs-attr">name:</span> <span class="hljs-string">druid-cluster</span>
   <span class="hljs-attr">apiGroup:</span> <span class="hljs-string">rbac.authorization.k8s.io</span>
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/druid-aws-rds.html"><span class="arrow-prev">← </span><span>Druid AWS RDS Module</span></a><a class="docs-next button" href="/docs/latest/development/extensions-contrib/ambari-metrics-emitter.html"><span>Ambari Metrics Emitter</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#configurat [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/druid-aws-rds.html"><span class="arrow-prev">← </span><span>Druid AWS RDS Module</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-contrib/ambari-metrics-emitter.html"><span>Ambari Metrics Emitter</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#configurat [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -151,6 +151,6 @@
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/lookups-cached-global.html b/docs/0.22.1/development/extensions-core/lookups-cached-global.html
similarity index 80%
copy from docs/latest/development/extensions-core/lookups-cached-global.html
copy to docs/0.22.1/development/extensions-core/lookups-cached-global.html
index f527975..b29fe0c 100644
--- a/docs/latest/development/extensions-core/lookups-cached-global.html
+++ b/docs/0.22.1/development/extensions-core/lookups-cached-global.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>Globally Cached Lookups · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/lookups-cached-global.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docs [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Globally Cached Lookups · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/lookups-cached-global.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docs [...]
               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++) {
@@ -78,19 +78,19 @@
   ~ under the License.
   -->
 <blockquote>
-<p>Lookups are an <a href="/docs/latest/development/experimental.html">experimental</a> feature.</p>
+<p>Lookups are an <a href="/docs/0.22.1/development/experimental.html">experimental</a> feature.</p>
 </blockquote>
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>druid-lookups-cached-global</code> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>druid-lookups-cached-global</code> in the extensions load list.</p>
 <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 [...]
 <blockquote>
 <p>Static configuration is no longer supported. Lookups can be configured through
-<a href="/docs/latest/querying/lookups.html#configuration">dynamic configuration</a>.</p>
+<a href="/docs/0.22.1/querying/lookups.html#configuration">dynamic configuration</a>.</p>
 </blockquote>
 <p>Globally cached lookups are appropriate for lookups which are not possible to pass at query time due to their size,
 or are not desired to be passed at query time because the data is to reside in and be handled by the Druid servers,
 and are small enough to reasonably populate in-memory. This usually means tens to tens of thousands of entries per lookup.</p>
 <p>Globally cached lookups all draw from the same cache pool, allowing each process to have a fixed cache pool that can be used by cached lookups.</p>
-<p>Globally cached lookups can be specified as part of the <a href="/docs/latest/querying/lookups.html">cluster wide config for lookups</a> as a type of <code>cachedNamespace</code></p>
+<p>Globally cached lookups can be specified as part of the <a href="/docs/0.22.1/querying/lookups.html">cluster wide config for lookups</a> as a type of <code>cachedNamespace</code></p>
 <pre><code class="hljs css language-json">{
    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"cachedNamespace"</span>,
    <span class="hljs-attr">"extractionNamespace"</span>: {
@@ -135,14 +135,14 @@ and are small enough to reasonably populate in-memory. This usually means tens t
 <tbody>
 <tr><td><code>extractionNamespace</code></td><td>Specifies how to populate the local cache. See below</td><td>Yes</td><td>-</td></tr>
 <tr><td><code>firstCacheTimeout</code></td><td>How long to wait (in ms) for the first run of the cache to populate. 0 indicates to not wait</td><td>No</td><td><code>0</code> (do not wait)</td></tr>
-<tr><td><code>injective</code></td><td>If the underlying map is <a href="/docs/latest/querying/lookups.html#query-execution">injective</a> (keys and values are unique) then optimizations can occur internally by setting this to <code>true</code></td><td>No</td><td><code>false</code></td></tr>
+<tr><td><code>injective</code></td><td>If the underlying map is <a href="/docs/0.22.1/querying/lookups.html#query-execution">injective</a> (keys and values are unique) then optimizations can occur internally by setting this to <code>true</code></td><td>No</td><td><code>false</code></td></tr>
 </tbody>
 </table>
 <p>If <code>firstCacheTimeout</code> is set to a non-zero value, it should be less than <code>druid.manager.lookups.hostUpdateTimeout</code>. If <code>firstCacheTimeout</code> is NOT set, then management is essentially asynchronous and does not know if a lookup succeeded or failed in starting. In such a case logs from the processes using lookups should be monitored for repeated failures.</p>
 <p>Proper functionality of globally cached lookups requires the following extension to be loaded on the Broker, Peon, and Historical processes:
 <code>druid-lookups-cached-global</code></p>
 <h2><a class="anchor" aria-hidden="true" id="example-configuration"></a><a href="#example-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>In a simple case where only one <a href="/docs/latest/querying/lookups.html#dynamic-configuration">tier</a> exists (<code>realtime_customer2</code>) with one <code>cachedNamespace</code> lookup called <code>country_code</code>, the resulting configuration JSON looks similar to the following:</p>
+<p>In a simple case where only one <a href="/docs/0.22.1/querying/lookups.html#dynamic-configuration">tier</a> exists (<code>realtime_customer2</code>) with one <code>cachedNamespace</code> lookup called <code>country_code</code>, the resulting configuration JSON looks similar to the following:</p>
 <pre><code class="hljs css language-json">{
   <span class="hljs-attr">"realtime_customer2"</span>: {
     <span class="hljs-attr">"country_code"</span>: {
@@ -212,7 +212,7 @@ a <code>pollPeriod</code> at the end of which time they poll the remote resource
 So if total number of entries in the <code>cachedNamespace</code> is in excess of the buffer's configured capacity, the extra will be kept in memory as page cache, and paged in and out by general OS tunings.
 It's highly recommended that <code>druid.lookup.namespace.numBufferedEntries</code> is set when using <code>offHeap</code>, the value should be chosen from the range between 10% and 50% of the number of entries in the lookup.</p>
 <h2><a class="anchor" aria-hidden="true" id="supported-lookups"></a><a href="#supported-lookups" 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>For additional lookups, please see our <a href="/docs/latest/development/extensions.html">extensions list</a>.</p>
+<p>For additional lookups, please see our <a href="/docs/0.22.1/development/extensions.html">extensions list</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="uri-lookup"></a><a href="#uri-lookup" 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 remapping values for each globally cached lookup can be specified by a JSON object as per the following examples:</p>
 <pre><code class="hljs css language-json">{
@@ -362,7 +362,7 @@ will not be included in the lookup.</p>
 <tr><th>Parameter</th><th>Description</th><th>Required</th><th>Default</th></tr>
 </thead>
 <tbody>
-<tr><td><code>connectorConfig</code></td><td>The connector config to use. You can set <code>connectURI</code>, <code>user</code> and <code>password</code>. You can selectively allow JDBC properties in <code>connectURI</code>. See <a href="/docs/latest/configuration/index.html#jdbc-connections-to-external-databases">JDBC connections security config</a> for more details.</td><td>Yes</td><td></td></tr>
+<tr><td><code>connectorConfig</code></td><td>The connector config to use. You can set <code>connectURI</code>, <code>user</code> and <code>password</code>. You can selectively allow JDBC properties in <code>connectURI</code>. See <a href="/docs/0.22.1/configuration/index.html#jdbc-connections-to-external-databases">JDBC connections security config</a> for more details.</td><td>Yes</td><td></td></tr>
 <tr><td><code>table</code></td><td>The table which contains the key value pairs</td><td>Yes</td><td></td></tr>
 <tr><td><code>keyColumn</code></td><td>The column in <code>table</code> which contains the keys</td><td>Yes</td><td></td></tr>
 <tr><td><code>valueColumn</code></td><td>The column in <code>table</code> which contains the values</td><td>Yes</td><td></td></tr>
@@ -388,13 +388,13 @@ will not be included in the lookup.</p>
 <blockquote>
 <p>If using JDBC, you will need to add your database's client JAR files to the extension's directory.
 For Postgres, the connector JAR is already included.
-See the MySQL extension documentation for instructions to obtain <a href="/docs/latest/development/extensions-core/mysql.html#installing-the-mysql-connector-library">MySQL</a> or <a href="/docs/latest/development/extensions-core/mysql.html#alternative-installing-the-mariadb-connector-library">MariaDB</a> connector libraries.
+See the MySQL extension documentation for instructions to obtain <a href="/docs/0.22.1/development/extensions-core/mysql.html#installing-the-mysql-connector-library">MySQL</a> or <a href="/docs/0.22.1/development/extensions-core/mysql.html#alternative-installing-the-mariadb-connector-library">MariaDB</a> connector libraries.
 The connector JAR should reside in the classpath of Druid's main class loader.
 To add the connector JAR to the classpath, you can copy the downloaded file to <code>lib/</code> under the distribution root directory. Alternatively, create a symbolic link to the connector in the <code>lib</code> directory.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="introspection"></a><a href="#introspection" 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>Globally cached lookups have introspection points at <code>/keys</code> and <code>/values</code> which return a complete set of the keys and values (respectively) in the lookup. Introspection to <code>/</code> returns the entire map. Introspection to <code>/version</code> returns the version indicator for the lookup.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/kafka-extraction-namespace.html"><span class="arrow-prev">← </span><span>Apache Kafka Lookups</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/mysql.html"><span class="function-name-prevnext">MySQL Metadata Store</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><l [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/kafka-extraction-namespace.html"><span class="arrow-prev">← </span><span>Apache Kafka Lookups</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/mysql.html"><span class="function-name-prevnext">MySQL Metadata Store</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><l [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -411,6 +411,6 @@ To add the connector JAR to the classpath, you can copy the downloaded file to <
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/mysql.html b/docs/0.22.1/development/extensions-core/mysql.html
similarity index 75%
copy from docs/latest/development/extensions-core/mysql.html
copy to docs/0.22.1/development/extensions-core/mysql.html
index cfb57b4..f03848b 100644
--- a/docs/latest/development/extensions-core/mysql.html
+++ b/docs/0.22.1/development/extensions-core/mysql.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>MySQL Metadata Store · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/mysql.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>MySQL Metadata Store · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/mysql.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++) {
@@ -77,7 +77,7 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>mysql-metadata-storage</code> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>mysql-metadata-storage</code> in the extensions load list.</p>
 <blockquote>
 <p>The MySQL extension requires the MySQL Connector/J library or MariaDB Connector/J library, neither of which are included in the Druid distribution.
 Refer to the following section for instructions on how to install this library.</p>
@@ -154,17 +154,17 @@ with the location (host name and port) of the database.</p>
 <tr><td><code>druid.metadata.mysql.ssl.useSSL</code></td><td>Enable SSL</td><td><code>false</code></td><td>no</td></tr>
 <tr><td><code>druid.metadata.mysql.ssl.clientCertificateKeyStoreUrl</code></td><td>The file path URL to the client certificate key store.</td><td>none</td><td>no</td></tr>
 <tr><td><code>druid.metadata.mysql.ssl.clientCertificateKeyStoreType</code></td><td>The type of the key store where the client certificate is stored.</td><td>none</td><td>no</td></tr>
-<tr><td><code>druid.metadata.mysql.ssl.clientCertificateKeyStorePassword</code></td><td>The <a href="/docs/latest/operations/password-provider.html">Password Provider</a> or String password for the client key store.</td><td>none</td><td>no</td></tr>
+<tr><td><code>druid.metadata.mysql.ssl.clientCertificateKeyStorePassword</code></td><td>The <a href="/docs/0.22.1/operations/password-provider.html">Password Provider</a> or String password for the client key store.</td><td>none</td><td>no</td></tr>
 <tr><td><code>druid.metadata.mysql.ssl.verifyServerCertificate</code></td><td>Enables server certificate verification.</td><td>false</td><td>no</td></tr>
 <tr><td><code>druid.metadata.mysql.ssl.trustCertificateKeyStoreUrl</code></td><td>The file path to the trusted root certificate key store.</td><td>Default trust store provided by MySQL</td><td>yes if <code>verifyServerCertificate</code> is set to true and a custom trust store is used</td></tr>
 <tr><td><code>druid.metadata.mysql.ssl.trustCertificateKeyStoreType</code></td><td>The type of the key store where trusted root certificates are stored.</td><td>JKS</td><td>yes if <code>verifyServerCertificate</code> is set to true and keystore type is not JKS</td></tr>
-<tr><td><code>druid.metadata.mysql.ssl.trustCertificateKeyStorePassword</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 if <code>verifyServerCertificate</code> is set to true and password is not null</td></tr>
+<tr><td><code>druid.metadata.mysql.ssl.trustCertificateKeyStorePassword</code></td><td>The <a href="/docs/0.22.1/operations/password-provider.html">Password Provider</a> or String password for the trust store.</td><td>none</td><td>yes if <code>verifyServerCertificate</code> is set to true and password is not null</td></tr>
 <tr><td><code>druid.metadata.mysql.ssl.enabledSSLCipherSuites</code></td><td>Overrides the existing cipher suites with these cipher suites.</td><td>none</td><td>no</td></tr>
 <tr><td><code>druid.metadata.mysql.ssl.enabledTLSProtocols</code></td><td>Overrides the TLS protocols with these protocols.</td><td>none</td><td>no</td></tr>
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="mysql-inputsource-and-firehose"></a><a href="#mysql-inputsource-and-firehose" 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>The MySQL extension provides a connector implementation of an <a href="/docs/latest/ingestion/native-batch.html#sql-input-source">SqlInputSource</a> and <a href="/docs/latest/ingestion/native-batch.html#firehoses-deprecated">SqlFirehose</a> which can be used to ingest data into Druid from a MySQL database. This works with either MySQL or MariaDB connector jars.</p>
+<p>The MySQL extension provides a connector implementation of an <a href="/docs/0.22.1/ingestion/native-batch.html#sql-input-source">SqlInputSource</a> and <a href="/docs/0.22.1/ingestion/native-batch.html#firehoses-deprecated">SqlFirehose</a> which can be used to ingest data into Druid from a MySQL database. This works with either MySQL or MariaDB connector jars.</p>
 <pre><code class="hljs css language-json">{
   <span class="hljs-attr">"type"</span>: <span class="hljs-string">"index_parallel"</span>,
   <span class="hljs-attr">"spec"</span>: {
@@ -225,7 +225,7 @@ with the location (host name and port) of the database.</p>
   }
 }
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/lookups-cached-global.html"><span class="arrow-prev">← </span><span>Globally Cached Lookups</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/orc.html"><span>ORC Extension</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#installing-the-mysql-connector [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/lookups-cached-global.html"><span class="arrow-prev">← </span><span>Globally Cached Lookups</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/orc.html"><span>ORC Extension</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#installing-the-mysql-connector [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -242,6 +242,6 @@ with the location (host name and port) of the database.</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.22.1/development/extensions-core/namespaced-lookup.html b/docs/0.22.1/development/extensions-core/namespaced-lookup.html
new file mode 100644
index 0000000..7986bfe
--- /dev/null
+++ b/docs/0.22.1/development/extensions-core/namespaced-lookup.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="lookups-cached-global.html">
+<meta http-equiv="refresh" content="0; url=lookups-cached-global.html">
+<h1>Redirecting...</h1>
+<a href="lookups-cached-global.html">Click here if you are not redirected.</a>
+<script>location="lookups-cached-global.html"</script>
diff --git a/docs/latest/development/extensions-core/orc.html b/docs/0.22.1/development/extensions-core/orc.html
similarity index 68%
copy from docs/latest/development/extensions-core/orc.html
copy to docs/0.22.1/development/extensions-core/orc.html
index 0ed8a27..1763d33 100644
--- a/docs/latest/development/extensions-core/orc.html
+++ b/docs/0.22.1/development/extensions-core/orc.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>ORC Extension · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/orc.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22 [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>ORC Extension · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/orc.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22 [...]
               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++) {
@@ -79,10 +79,10 @@
   -->
 <h2><a class="anchor" aria-hidden="true" id="orc-extension"></a><a href="#orc-extension" 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 Apache Druid extension enables Druid to ingest and understand the Apache ORC data format.</p>
-<p>The extension provides the <a href="/docs/latest/ingestion/data-formats.html#orc">ORC input format</a> and the <a href="/docs/latest/ingestion/data-formats.html#orc-hadoop-parser">ORC Hadoop parser</a>
-for <a href="/docs/latest/ingestion/native-batch.html">native batch ingestion</a> and <a href="/docs/latest/ingestion/hadoop.html">Hadoop batch ingestion</a>, respectively.
+<p>The extension provides the <a href="/docs/0.22.1/ingestion/data-formats.html#orc">ORC input format</a> and the <a href="/docs/0.22.1/ingestion/data-formats.html#orc-hadoop-parser">ORC Hadoop parser</a>
+for <a href="/docs/0.22.1/ingestion/native-batch.html">native batch ingestion</a> and <a href="/docs/0.22.1/ingestion/hadoop.html">Hadoop batch ingestion</a>, respectively.
 Please see corresponding docs for details.</p>
-<p>To use this extension, make sure to <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>druid-orc-extensions</code> in the extensions load list.</p>
+<p>To use this extension, make sure to <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>druid-orc-extensions</code> in the extensions load list.</p>
 <h3><a class="anchor" aria-hidden="true" id="migration-from-contrib-extension"></a><a href="#migration-from-contrib-extension" 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 extension, first available in version 0.15.0, replaces the previous 'contrib' extension which was available until
 0.14.0-incubating. While this extension can index any data the 'contrib' extension could, the JSON spec for the
@@ -94,7 +94,7 @@ ingestion task is <em>incompatible</em>, and will need modified to work with the
 <li>The 'contrib' extension supported a <code>typeString</code> property, which provided the schema of the
 ORC file, of which was essentially required to have the types correct, but notably <em>not</em> the column names, which
 facilitated column renaming. In the 'core' extension, column renaming can be achieved with
-<a href="/docs/latest/ingestion/ingestion-spec.html#flattenspec"><code>flattenSpec</code></a>. For example, <code>&quot;typeString&quot;:&quot;struct&lt;time:string,name:string&gt;&quot;</code>
+<a href="/docs/0.22.1/ingestion/ingestion-spec.html#flattenspec"><code>flattenSpec</code></a>. For example, <code>&quot;typeString&quot;:&quot;struct&lt;time:string,name:string&gt;&quot;</code>
 with the actual schema <code>struct&lt;_col0:string,_col1:string&gt;</code>, to preserve Druid schema would need replaced with:</li>
 </ul>
 <pre><code class="hljs css language-json">"flattenSpec": {
@@ -116,7 +116,7 @@ with the actual schema <code>struct&lt;_col0:string,_col1:string&gt;</code>, to
 <ul>
 <li>The 'contrib' extension supported a <code>mapFieldNameFormat</code> property, which provided a way to specify a dimension to
 flatten <code>OrcMap</code> columns with primitive types. This functionality has also been replaced with
-<a href="/docs/latest/ingestion/ingestion-spec.html#flattenspec"><code>flattenSpec</code></a>. For example: <code>&quot;mapFieldNameFormat&quot;: &quot;&lt;PARENT&gt;_&lt;CHILD&gt;&quot;</code>
+<a href="/docs/0.22.1/ingestion/ingestion-spec.html#flattenspec"><code>flattenSpec</code></a>. For example: <code>&quot;mapFieldNameFormat&quot;: &quot;&lt;PARENT&gt;_&lt;CHILD&gt;&quot;</code>
 for a dimension <code>nestedData_dim1</code>, to preserve Druid schema could be replaced with</li>
 </ul>
 <pre><code class="hljs css language-json">"flattenSpec": {
@@ -130,7 +130,7 @@ for a dimension <code>nestedData_dim1</code>, to preserve Druid schema could be
  ...
 }
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/mysql.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">MySQL Metadata Store</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/druid-pac4j.html"><span>Druid pac4j based Security extension</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings">< [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/mysql.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">MySQL Metadata Store</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/druid-pac4j.html"><span>Druid pac4j based Security extension</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings">< [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -147,6 +147,6 @@ for a dimension <code>nestedData_dim1</code>, to preserve Druid schema could be
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/parquet.html b/docs/0.22.1/development/extensions-core/parquet.html
similarity index 65%
copy from docs/latest/development/extensions-core/parquet.html
copy to docs/0.22.1/development/extensions-core/parquet.html
index 139341d..08350a6 100644
--- a/docs/latest/development/extensions-core/parquet.html
+++ b/docs/0.22.1/development/extensions-core/parquet.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 Parquet Extension · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/parquet.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Parquet Extension · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/parquet.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version [...]
               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++) {
@@ -77,16 +77,16 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>This Apache Druid module extends <a href="/docs/latest/ingestion/hadoop.html">Druid Hadoop based indexing</a> to ingest data directly from offline
+<p>This Apache Druid module extends <a href="/docs/0.22.1/ingestion/hadoop.html">Druid Hadoop based indexing</a> to ingest data directly from offline
 Apache Parquet files.</p>
 <p>Note: If using the <code>parquet-avro</code> parser for Apache Hadoop based indexing, <code>druid-parquet-extensions</code> depends on the <code>druid-avro-extensions</code> module, so be sure to
-<a href="/docs/latest/development/extensions.html#loading-extensions">include  both</a>.</p>
-<p>The <code>druid-parquet-extensions</code> provides the <a href="/docs/latest/ingestion/data-formats.html#parquet">Parquet input format</a>, the <a href="/docs/latest/ingestion/data-formats.html#parquet-hadoop-parser">Parquet Hadoop parser</a>,
-and the <a href="/docs/latest/ingestion/data-formats.html#parquet-avro-hadoop-parser">Parquet Avro Hadoop Parser</a> with <code>druid-avro-extensions</code>.
-The Parquet input format is available for <a href="/docs/latest/ingestion/native-batch.html">native batch ingestion</a>
-and the other 2 parsers are for <a href="/docs/latest/ingestion/hadoop.html">Hadoop batch ingestion</a>.
+<a href="/docs/0.22.1/development/extensions.html#loading-extensions">include  both</a>.</p>
+<p>The <code>druid-parquet-extensions</code> provides the <a href="/docs/0.22.1/ingestion/data-formats.html#parquet">Parquet input format</a>, the <a href="/docs/0.22.1/ingestion/data-formats.html#parquet-hadoop-parser">Parquet Hadoop parser</a>,
+and the <a href="/docs/0.22.1/ingestion/data-formats.html#parquet-avro-hadoop-parser">Parquet Avro Hadoop Parser</a> with <code>druid-avro-extensions</code>.
+The Parquet input format is available for <a href="/docs/0.22.1/ingestion/native-batch.html">native batch ingestion</a>
+and the other 2 parsers are for <a href="/docs/0.22.1/ingestion/hadoop.html">Hadoop batch ingestion</a>.
 Please see corresponding docs for details.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/druid-pac4j.html"><span class="arrow-prev">← </span><span>Druid pac4j based Security extension</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/postgresql.html"><span class="function-name-prevnext">PostgreSQL Metadata Store</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><foo [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/druid-pac4j.html"><span class="arrow-prev">← </span><span>Druid pac4j based Security extension</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/postgresql.html"><span class="function-name-prevnext">PostgreSQL Metadata Store</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><foo [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -103,6 +103,6 @@ Please see corresponding docs for details.</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/postgresql.html b/docs/0.22.1/development/extensions-core/postgresql.html
similarity index 72%
copy from docs/latest/development/extensions-core/postgresql.html
copy to docs/0.22.1/development/extensions-core/postgresql.html
index b9fe6dc..d2a7b15 100644
--- a/docs/latest/development/extensions-core/postgresql.html
+++ b/docs/0.22.1/development/extensions-core/postgresql.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>PostgreSQL Metadata Store · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/postgresql.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:ver [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>PostgreSQL Metadata Store · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/postgresql.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>< [...]
+            </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++) {
@@ -77,7 +77,7 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>postgresql-metadata-storage</code> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>postgresql-metadata-storage</code> in the extensions load list.</p>
 <h2><a class="anchor" aria-hidden="true" id="setting-up-postgresql"></a><a href="#setting-up-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 [...]
 <ol>
 <li>Install PostgreSQL</li>
@@ -120,7 +120,7 @@ with the location (host name and port) of the database.</p>
 </thead>
 <tbody>
 <tr><td><code>druid.metadata.postgres.ssl.useSSL</code></td><td>Enables SSL</td><td><code>false</code></td><td>no</td></tr>
-<tr><td><code>druid.metadata.postgres.ssl.sslPassword</code></td><td>The <a href="/docs/latest/operations/password-provider.html">Password Provider</a> or String password for the client's key.</td><td>none</td><td>no</td></tr>
+<tr><td><code>druid.metadata.postgres.ssl.sslPassword</code></td><td>The <a href="/docs/0.22.1/operations/password-provider.html">Password Provider</a> or String password for the client's key.</td><td>none</td><td>no</td></tr>
 <tr><td><code>druid.metadata.postgres.ssl.sslFactory</code></td><td>The class name to use as the <code>SSLSocketFactory</code></td><td>none</td><td>no</td></tr>
 <tr><td><code>druid.metadata.postgres.ssl.sslFactoryArg</code></td><td>An optional argument passed to the sslFactory's constructor</td><td>none</td><td>no</td></tr>
 <tr><td><code>druid.metadata.postgres.ssl.sslMode</code></td><td>The sslMode. Possible values are &quot;disable&quot;, &quot;require&quot;, &quot;verify-ca&quot;, &quot;verify-full&quot;, &quot;allow&quot; and &quot;prefer&quot;</td><td>none</td><td>no</td></tr>
@@ -133,7 +133,7 @@ with the location (host name and port) of the database.</p>
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="postgresql-firehose"></a><a href="#postgresql-firehose" 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 PostgreSQL extension provides an implementation of an <a href="/docs/latest/ingestion/native-batch.html#firehoses-deprecated">SqlFirehose</a> which can be used to ingest data into Druid from a PostgreSQL database.</p>
+<p>The PostgreSQL extension provides an implementation of an <a href="/docs/0.22.1/ingestion/native-batch.html#firehoses-deprecated">SqlFirehose</a> which can be used to ingest data into Druid from a PostgreSQL database.</p>
 <pre><code class="hljs css language-json">{
   <span class="hljs-attr">"type"</span>: <span class="hljs-string">"index_parallel"</span>,
   <span class="hljs-attr">"spec"</span>: {
@@ -194,7 +194,7 @@ with the location (host name and port) of the database.</p>
   }
 }
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/parquet.html"><span class="arrow-prev">← </span><span>Apache Parquet Extension</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/protobuf.html"><span>Protobuf</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#setting-up-postgresql">Setting up PostgreSQ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/parquet.html"><span class="arrow-prev">← </span><span>Apache Parquet Extension</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/protobuf.html"><span>Protobuf</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#setting-up-postgresql">Setting up PostgreSQ [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -211,6 +211,6 @@ with the location (host name and port) of the database.</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/protobuf.html b/docs/0.22.1/development/extensions-core/protobuf.html
similarity index 79%
copy from docs/latest/development/extensions-core/protobuf.html
copy to docs/0.22.1/development/extensions-core/protobuf.html
index ff81af4..2fe37e0 100644
--- a/docs/latest/development/extensions-core/protobuf.html
+++ b/docs/0.22.1/development/extensions-core/protobuf.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>Protobuf · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/protobuf.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22 [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Protobuf · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/protobuf.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22 [...]
               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++) {
@@ -77,11 +77,11 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>This Apache Druid extension enables Druid to ingest and understand the Protobuf data format. Make sure to <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>druid-protobuf-extensions</code> in the extensions load list.</p>
-<p>The <code>druid-protobuf-extensions</code> provides the <a href="/docs/latest/ingestion/data-formats.html#protobuf-parser">Protobuf Parser</a>
-for <a href="/docs/latest/ingestion/index.html#streaming">stream ingestion</a>. See corresponding docs for details.</p>
+<p>This Apache Druid extension enables Druid to ingest and understand the Protobuf data format. Make sure to <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>druid-protobuf-extensions</code> in the extensions load list.</p>
+<p>The <code>druid-protobuf-extensions</code> provides the <a href="/docs/0.22.1/ingestion/data-formats.html#protobuf-parser">Protobuf Parser</a>
+for <a href="/docs/0.22.1/ingestion/index.html#streaming">stream ingestion</a>. See corresponding docs for details.</p>
 <h2><a class="anchor" aria-hidden="true" id="example-load-protobuf-messages-from-kafka"></a><a href="#example-load-protobuf-messages-from-kafka" 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  [...]
-<p>This example demonstrates how to load Protobuf messages from Kafka.  Please read the <a href="/docs/latest/tutorials/tutorial-kafka.html">Load from Kafka tutorial</a> first, and see <a href="/docs/latest/development/extensions-core/kafka-ingestion.html">Kafka Indexing Service</a> documentation for more details.</p>
+<p>This example demonstrates how to load Protobuf messages from Kafka.  Please read the <a href="/docs/0.22.1/tutorials/tutorial-kafka.html">Load from Kafka tutorial</a> first, and see <a href="/docs/0.22.1/development/extensions-core/kafka-ingestion.html">Kafka Indexing Service</a> documentation for more details.</p>
 <p>The files used in this example are found at <a href="https://github.com/apache/druid/tree/master/examples/quickstart/protobuf"><code>./examples/quickstart/protobuf</code> in your Druid directory</a>.</p>
 <p>For this example:</p>
 <ul>
@@ -321,7 +321,7 @@ topic = <span class="hljs-string">'metrics_pb'</span>
 
 producer.flush()
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/postgresql.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">PostgreSQL Metadata Store</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/s3.html"><span>S3-compatible</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#example-l [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/postgresql.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">PostgreSQL Metadata Store</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/s3.html"><span>S3-compatible</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#example-l [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -338,6 +338,6 @@ producer.flush()
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/s3.html b/docs/0.22.1/development/extensions-core/s3.html
similarity index 75%
copy from docs/latest/development/extensions-core/s3.html
copy to docs/0.22.1/development/extensions-core/s3.html
index 172dc54..3a354ec 100644
--- a/docs/latest/development/extensions-core/s3.html
+++ b/docs/0.22.1/development/extensions-core/s3.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>S3-compatible · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/s3.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22. [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>S3-compatible · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/s3.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22. [...]
               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++) {
@@ -83,11 +83,11 @@
 <li><a href="#reading-data-from-s3">Ingest data</a> from files stored in S3.</li>
 <li>Write segments to <a href="#deep-storage">deep storage</a> in S3.</li>
 </ul>
-<p>To use this Apache Druid extension, <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>druid-s3-extensions</code> in the extensions load list.</p>
+<p>To use this Apache Druid extension, <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>druid-s3-extensions</code> in the extensions load list.</p>
 <h3><a class="anchor" aria-hidden="true" id="reading-data-from-s3"></a><a href="#reading-data-from-s3" 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 <a href="/docs/latest/ingestion/native-batch.html#s3-input-source">S3 input source</a> is supported by the <a href="/docs/latest/ingestion/native-batch.html#parallel-task">Parallel task</a>
-to read objects directly from S3. If you use the <a href="/docs/latest/ingestion/hadoop.html">Hadoop task</a>,
-you can read data from S3 by specifying the S3 paths in your <a href="/docs/latest/ingestion/hadoop.html#inputspec"><code>inputSpec</code></a>.</p>
+<p>The <a href="/docs/0.22.1/ingestion/native-batch.html#s3-input-source">S3 input source</a> is supported by the <a href="/docs/0.22.1/ingestion/native-batch.html#parallel-task">Parallel task</a>
+to read objects directly from S3. If you use the <a href="/docs/0.22.1/ingestion/hadoop.html">Hadoop task</a>,
+you can read data from S3 by specifying the S3 paths in your <a href="/docs/0.22.1/ingestion/hadoop.html#inputspec"><code>inputSpec</code></a>.</p>
 <p>To configure the extension to read objects from S3 you need to configure how to <a href="#configuration">connect to S3</a>.</p>
 <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>S3-compatible deep storage means either AWS S3 or a compatible service like Google Storage which exposes the same API as S3.</p>
@@ -112,7 +112,7 @@ In addition to this you need to set additional configuration, specific for <a hr
 <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 [...]
 <h3><a class="anchor" aria-hidden="true" id="s3-authentication-methods"></a><a href="#s3-authentication-methods" 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>Druid uses the following credentials provider chain to connect to your S3 bucket (whether a deep storage bucket or source bucket).
-<strong>Note :</strong> <em>You can override the default credentials provider chain for connecting to source bucket by specifying an access key and secret key using <a href="/docs/latest/ingestion/native-batch.html#s3-input-source">Properties Object</a> parameters in the ingestionSpec.</em></p>
+<strong>Note :</strong> <em>You can override the default credentials provider chain for connecting to source bucket by specifying an access key and secret key using <a href="/docs/0.22.1/ingestion/native-batch.html#s3-input-source">Properties Object</a> parameters in the ingestionSpec.</em></p>
 <table>
 <thead>
 <tr><th>order</th><th>type</th><th>details</th></tr>
@@ -138,7 +138,7 @@ If <code>druid.storage.disableAcl</code> is set to <code>false</code>, then <cod
 <p>As an example, to set the region to 'us-east-1' through system properties:</p>
 <ul>
 <li>Add <code>-Daws.region=us-east-1</code> to the jvm.config file for all Druid services.</li>
-<li>Add <code>-Daws.region=us-east-1</code> to <code>druid.indexer.runner.javaOpts</code> in <a href="/docs/latest/configuration/index.html#middlemanager-configuration">Middle Manager configuration</a> so that the property will be passed to Peon (worker) processes.</li>
+<li>Add <code>-Daws.region=us-east-1</code> to <code>druid.indexer.runner.javaOpts</code> in <a href="/docs/0.22.1/configuration/index.html#middlemanager-configuration">Middle Manager configuration</a> so that the property will be passed to Peon (worker) processes.</li>
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="connecting-to-s3-configuration"></a><a href="#connecting-to-s3-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 1 [...]
 <table>
@@ -172,7 +172,7 @@ If <code>druid.storage.disableAcl</code> is set to <code>false</code>, then <cod
 <li>kms: <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption">Server-side encryption with AWS KMS–Managed Keys</a></li>
 <li>custom: <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys">Server-side encryption with Customer-Provided Encryption Keys</a></li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/protobuf.html"><span class="arrow-prev">← </span><span>Protobuf</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/simple-client-sslcontext.html"><span>Simple SSLContext Provider Module</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#s3-extension">S3  [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/protobuf.html"><span class="arrow-prev">← </span><span>Protobuf</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/simple-client-sslcontext.html"><span>Simple SSLContext Provider Module</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#s3-extension">S3  [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -189,6 +189,6 @@ If <code>druid.storage.disableAcl</code> is set to <code>false</code>, then <cod
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/simple-client-sslcontext.html b/docs/0.22.1/development/extensions-core/simple-client-sslcontext.html
similarity index 67%
copy from docs/latest/development/extensions-core/simple-client-sslcontext.html
copy to docs/0.22.1/development/extensions-core/simple-client-sslcontext.html
index 0dbe0b8..de5c66c 100644
--- a/docs/latest/development/extensions-core/simple-client-sslcontext.html
+++ b/docs/0.22.1/development/extensions-core/simple-client-sslcontext.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>Simple SSLContext Provider Module · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/simple-client-sslcontext.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><me [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Simple SSLContext Provider Module · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/simple-client-sslcontext.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><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>< [...]
+            </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++) {
@@ -89,7 +89,7 @@ Java's SSL support, please refer to <a href="http://docs.oracle.com/javase/8/doc
 <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.22.1/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>The following table contains optional parameters for supporting client certificate authentication:</p>
@@ -101,15 +101,15 @@ Java's SSL support, please refer to <a href="http://docs.oracle.com/javase/8/doc
 <tr><td><code>druid.client.https.keyStorePath</code></td><td>The file path or URL of the TLS/SSL Key store containing the client certificate that Druid will use when communicating with other Druid services. If this is null, the other properties in this table are ignored.</td><td>none</td><td>yes</td></tr>
 <tr><td><code>druid.client.https.keyStoreType</code></td><td>The type of the key store.</td><td>none</td><td>yes</td></tr>
 <tr><td><code>druid.client.https.certAlias</code></td><td>Alias of TLS client certificate in the keystore.</td><td>none</td><td>yes</td></tr>
-<tr><td><code>druid.client.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>no</td></tr>
+<tr><td><code>druid.client.https.keyStorePassword</code></td><td>The <a href="/docs/0.22.1/operations/password-provider.html">Password Provider</a> or String password for the Key Store.</td><td>none</td><td>no</td></tr>
 <tr><td><code>druid.client.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.client.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.client.https.validateHostnames</code></td><td>Validate the hostname of the server. This should not be disabled unless you are using <a href="/docs/latest/operations/tls-support.html">custom TLS certificate checks</a> and know that standard hostname validation is not needed.</td><td>true</td><td>no</td></tr>
+<tr><td><code>druid.client.https.keyManagerPassword</code></td><td>The <a href="/docs/0.22.1/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.client.https.validateHostnames</code></td><td>Validate the hostname of the server. This should not be disabled unless you are using <a href="/docs/0.22.1/operations/tls-support.html">custom TLS certificate checks</a> and know that standard hostname validation is not needed.</td><td>true</td><td>no</td></tr>
 </tbody>
 </table>
 <p>This <a href="http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames">document</a> lists all the possible
 values for the above mentioned configs among others provided by Java implementation.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/s3.html"><span class="arrow-prev">← </span><span>S3-compatible</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/stats.html"><span>Stats aggregator</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.22.1/development/extensions-core/s3.html"><span class="arrow-prev">← </span><span>S3-compatible</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/stats.html"><span>Stats aggregator</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;
@@ -126,6 +126,6 @@ values for the above mentioned configs among others provided by Java implementat
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/stats.html b/docs/0.22.1/development/extensions-core/stats.html
similarity index 73%
copy from docs/latest/development/extensions-core/stats.html
copy to docs/0.22.1/development/extensions-core/stats.html
index 7201866..57d70cd 100644
--- a/docs/latest/development/extensions-core/stats.html
+++ b/docs/0.22.1/development/extensions-core/stats.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>Stats aggregator · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/stats.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content= [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Stats aggregator · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/stats.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content= [...]
               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++) {
@@ -77,7 +77,7 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>This Apache Druid extension includes stat-related aggregators, including variance and standard deviations, etc. Make sure to <a href="/docs/latest/development/extensions.html#loading-extensions">include</a> <code>druid-stats</code> in the extensions load list.</p>
+<p>This Apache Druid extension includes stat-related aggregators, including variance and standard deviations, etc. Make sure to <a href="/docs/0.22.1/development/extensions.html#loading-extensions">include</a> <code>druid-stats</code> in the extensions load list.</p>
 <h2><a class="anchor" aria-hidden="true" id="variance-aggregator"></a><a href="#variance-aggregator" 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>Algorithm of the aggregator is the same with that of apache hive. This is the description in GenericUDAFVariance in hive.</p>
 <p>Evaluate the variance using the algorithm described by Chan, Golub, and LeVeque in
@@ -92,7 +92,7 @@ sum of elements in chunk2.</p>
 &quot;Error analysis of a pairwise summation algorithm to compute sample variance&quot;
 Numer. Math, 58 (1991) pp. 583--590</p>
 <blockquote>
-<p>As with all <a href="/docs/latest/querying/sql.html#aggregation-functions">aggregators</a>, the order of operations across segments is
+<p>As with all <a href="/docs/0.22.1/querying/sql.html#aggregation-functions">aggregators</a>, the order of operations across segments is
 non-deterministic. This means that if this aggregator operates with an input type of &quot;float&quot; or &quot;double&quot;, the result
 of the aggregation may not be precisely the same across multiple runs of the query.</p>
 <p>To produce consistent results, round the variance to a fixed number of decimal places so that the results are
@@ -205,7 +205,7 @@ then any input rows missing the value will be considered to have a value of 0.</
   ]
 }
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/simple-client-sslcontext.html"><span class="arrow-prev">← </span><span>Simple SSLContext Provider Module</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/test-stats.html"><span>Test Stats Aggregators</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#v [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/simple-client-sslcontext.html"><span class="arrow-prev">← </span><span>Simple SSLContext Provider Module</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/test-stats.html"><span>Test Stats Aggregators</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#v [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -222,6 +222,6 @@ then any input rows missing the value will be considered to have a value of 0.</
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions-core/test-stats.html b/docs/0.22.1/development/extensions-core/test-stats.html
similarity index 70%
copy from docs/latest/development/extensions-core/test-stats.html
copy to docs/0.22.1/development/extensions-core/test-stats.html
index 497d524..80c2947 100644
--- a/docs/latest/development/extensions-core/test-stats.html
+++ b/docs/0.22.1/development/extensions-core/test-stats.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>Test Stats Aggregators · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions-core/test-stats.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:versio [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Test Stats Aggregators · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions-core/test-stats.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:versio [...]
               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++) {
@@ -152,7 +152,7 @@ Please note S.E. stands for standard error where</p>
 }
 
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/extensions-core/stats.html"><span class="arrow-prev">← </span><span>Stats aggregator</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/druid-aws-rds.html"><span>Druid AWS RDS Module</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#z-score-for-two-sample-ztests-post-a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/extensions-core/stats.html"><span class="arrow-prev">← </span><span>Stats aggregator</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/druid-aws-rds.html"><span>Druid AWS RDS Module</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#z-score-for-two-sample-ztests-post-a [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -169,6 +169,6 @@ Please note S.E. stands for standard error where</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/extensions.html b/docs/0.22.1/development/extensions.html
similarity index 69%
copy from docs/latest/development/extensions.html
copy to docs/0.22.1/development/extensions.html
index 9977794..c678f1b 100644
--- a/docs/latest/development/extensions.html
+++ b/docs/0.22.1/development/extensions.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>Extensions · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/extensions.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22.0" /><meta  [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Extensions · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/extensions.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22.1" /><meta  [...]
               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++) {
@@ -89,33 +89,33 @@ metadata store. Many clusters will also use additional extensions.</p>
 <tr><th>Name</th><th>Description</th><th>Docs</th></tr>
 </thead>
 <tbody>
-<tr><td>druid-avro-extensions</td><td>Support for data in Apache Avro data format.</td><td><a href="/docs/latest/development/extensions-core/avro.html">link</a></td></tr>
-<tr><td>druid-azure-extensions</td><td>Microsoft Azure deep storage.</td><td><a href="/docs/latest/development/extensions-core/azure.html">link</a></td></tr>
-<tr><td>druid-basic-security</td><td>Support for Basic HTTP authentication and role-based access control.</td><td><a href="/docs/latest/development/extensions-core/druid-basic-security.html">link</a></td></tr>
-<tr><td>druid-bloom-filter</td><td>Support for providing Bloom filters in druid queries.</td><td><a href="/docs/latest/development/extensions-core/bloom-filter.html">link</a></td></tr>
-<tr><td>druid-datasketches</td><td>Support for approximate counts and set operations with <a href="https://datasketches.apache.org/">Apache DataSketches</a>.</td><td><a href="/docs/latest/development/extensions-core/datasketches-extension.html">link</a></td></tr>
-<tr><td>druid-google-extensions</td><td>Google Cloud Storage deep storage.</td><td><a href="/docs/latest/development/extensions-core/google.html">link</a></td></tr>
-<tr><td>druid-hdfs-storage</td><td>HDFS deep storage.</td><td><a href="/docs/latest/development/extensions-core/hdfs.html">link</a></td></tr>
-<tr><td>druid-histogram</td><td>Approximate histograms and quantiles aggregator. Deprecated, please use the <a href="/docs/latest/development/extensions-core/datasketches-quantiles.html">DataSketches quantiles aggregator</a> from the <code>druid-datasketches</code> extension instead.</td><td><a href="/docs/latest/development/extensions-core/approximate-histograms.html">link</a></td></tr>
-<tr><td>druid-kafka-extraction-namespace</td><td>Apache Kafka-based namespaced lookup. Requires namespace lookup extension.</td><td><a href="/docs/latest/development/extensions-core/kafka-extraction-namespace.html">link</a></td></tr>
-<tr><td>druid-kafka-indexing-service</td><td>Supervised exactly-once Apache Kafka ingestion for the indexing service.</td><td><a href="/docs/latest/development/extensions-core/kafka-ingestion.html">link</a></td></tr>
-<tr><td>druid-kinesis-indexing-service</td><td>Supervised exactly-once Kinesis ingestion for the indexing service.</td><td><a href="/docs/latest/development/extensions-core/kinesis-ingestion.html">link</a></td></tr>
-<tr><td>druid-kerberos</td><td>Kerberos authentication for druid processes.</td><td><a href="/docs/latest/development/extensions-core/druid-kerberos.html">link</a></td></tr>
-<tr><td>druid-lookups-cached-global</td><td>A module for <a href="/docs/latest/querying/lookups.html">lookups</a> providing a jvm-global eager caching for lookups. It provides JDBC and URI implementations for fetching lookup data.</td><td><a href="/docs/latest/development/extensions-core/lookups-cached-global.html">link</a></td></tr>
-<tr><td>druid-lookups-cached-single</td><td>Per lookup caching module to support the use cases where a lookup need to be isolated from the global pool of lookups</td><td><a href="/docs/latest/development/extensions-core/druid-lookups.html">link</a></td></tr>
-<tr><td>druid-orc-extensions</td><td>Support for data in Apache ORC data format.</td><td><a href="/docs/latest/development/extensions-core/orc.html">link</a></td></tr>
-<tr><td>druid-parquet-extensions</td><td>Support for data in Apache Parquet data format. Requires druid-avro-extensions to be loaded.</td><td><a href="/docs/latest/development/extensions-core/parquet.html">link</a></td></tr>
-<tr><td>druid-protobuf-extensions</td><td>Support for data in Protobuf data format.</td><td><a href="/docs/latest/development/extensions-core/protobuf.html">link</a></td></tr>
-<tr><td>druid-ranger-security</td><td>Support for access control through Apache Ranger.</td><td><a href="/docs/latest/development/extensions-core/druid-ranger-security.html">link</a></td></tr>
-<tr><td>druid-s3-extensions</td><td>Interfacing with data in AWS S3, and using S3 as deep storage.</td><td><a href="/docs/latest/development/extensions-core/s3.html">link</a></td></tr>
+<tr><td>druid-avro-extensions</td><td>Support for data in Apache Avro data format.</td><td><a href="/docs/0.22.1/development/extensions-core/avro.html">link</a></td></tr>
+<tr><td>druid-azure-extensions</td><td>Microsoft Azure deep storage.</td><td><a href="/docs/0.22.1/development/extensions-core/azure.html">link</a></td></tr>
+<tr><td>druid-basic-security</td><td>Support for Basic HTTP authentication and role-based access control.</td><td><a href="/docs/0.22.1/development/extensions-core/druid-basic-security.html">link</a></td></tr>
+<tr><td>druid-bloom-filter</td><td>Support for providing Bloom filters in druid queries.</td><td><a href="/docs/0.22.1/development/extensions-core/bloom-filter.html">link</a></td></tr>
+<tr><td>druid-datasketches</td><td>Support for approximate counts and set operations with <a href="https://datasketches.apache.org/">Apache DataSketches</a>.</td><td><a href="/docs/0.22.1/development/extensions-core/datasketches-extension.html">link</a></td></tr>
+<tr><td>druid-google-extensions</td><td>Google Cloud Storage deep storage.</td><td><a href="/docs/0.22.1/development/extensions-core/google.html">link</a></td></tr>
+<tr><td>druid-hdfs-storage</td><td>HDFS deep storage.</td><td><a href="/docs/0.22.1/development/extensions-core/hdfs.html">link</a></td></tr>
+<tr><td>druid-histogram</td><td>Approximate histograms and quantiles aggregator. Deprecated, please use the <a href="/docs/0.22.1/development/extensions-core/datasketches-quantiles.html">DataSketches quantiles aggregator</a> from the <code>druid-datasketches</code> extension instead.</td><td><a href="/docs/0.22.1/development/extensions-core/approximate-histograms.html">link</a></td></tr>
+<tr><td>druid-kafka-extraction-namespace</td><td>Apache Kafka-based namespaced lookup. Requires namespace lookup extension.</td><td><a href="/docs/0.22.1/development/extensions-core/kafka-extraction-namespace.html">link</a></td></tr>
+<tr><td>druid-kafka-indexing-service</td><td>Supervised exactly-once Apache Kafka ingestion for the indexing service.</td><td><a href="/docs/0.22.1/development/extensions-core/kafka-ingestion.html">link</a></td></tr>
+<tr><td>druid-kinesis-indexing-service</td><td>Supervised exactly-once Kinesis ingestion for the indexing service.</td><td><a href="/docs/0.22.1/development/extensions-core/kinesis-ingestion.html">link</a></td></tr>
+<tr><td>druid-kerberos</td><td>Kerberos authentication for druid processes.</td><td><a href="/docs/0.22.1/development/extensions-core/druid-kerberos.html">link</a></td></tr>
+<tr><td>druid-lookups-cached-global</td><td>A module for <a href="/docs/0.22.1/querying/lookups.html">lookups</a> providing a jvm-global eager caching for lookups. It provides JDBC and URI implementations for fetching lookup data.</td><td><a href="/docs/0.22.1/development/extensions-core/lookups-cached-global.html">link</a></td></tr>
+<tr><td>druid-lookups-cached-single</td><td>Per lookup caching module to support the use cases where a lookup need to be isolated from the global pool of lookups</td><td><a href="/docs/0.22.1/development/extensions-core/druid-lookups.html">link</a></td></tr>
+<tr><td>druid-orc-extensions</td><td>Support for data in Apache ORC data format.</td><td><a href="/docs/0.22.1/development/extensions-core/orc.html">link</a></td></tr>
+<tr><td>druid-parquet-extensions</td><td>Support for data in Apache Parquet data format. Requires druid-avro-extensions to be loaded.</td><td><a href="/docs/0.22.1/development/extensions-core/parquet.html">link</a></td></tr>
+<tr><td>druid-protobuf-extensions</td><td>Support for data in Protobuf data format.</td><td><a href="/docs/0.22.1/development/extensions-core/protobuf.html">link</a></td></tr>
+<tr><td>druid-ranger-security</td><td>Support for access control through Apache Ranger.</td><td><a href="/docs/0.22.1/development/extensions-core/druid-ranger-security.html">link</a></td></tr>
+<tr><td>druid-s3-extensions</td><td>Interfacing with data in AWS S3, and using S3 as deep storage.</td><td><a href="/docs/0.22.1/development/extensions-core/s3.html">link</a></td></tr>
 <tr><td>druid-ec2-extensions</td><td>Interfacing with AWS EC2 for autoscaling middle managers</td><td>UNDOCUMENTED</td></tr>
-<tr><td>druid-aws-rds-extensions</td><td>Support for AWS token based access to AWS RDS DB Cluster.</td><td><a href="/docs/latest/development/extensions-core/druid-aws-rds.html">link</a></td></tr>
-<tr><td>druid-stats</td><td>Statistics related module including variance and standard deviation.</td><td><a href="/docs/latest/development/extensions-core/stats.html">link</a></td></tr>
-<tr><td>mysql-metadata-storage</td><td>MySQL metadata store.</td><td><a href="/docs/latest/development/extensions-core/mysql.html">link</a></td></tr>
-<tr><td>postgresql-metadata-storage</td><td>PostgreSQL metadata store.</td><td><a href="/docs/latest/development/extensions-core/postgresql.html">link</a></td></tr>
-<tr><td>simple-client-sslcontext</td><td>Simple SSLContext provider module to be used by Druid's internal HttpClient when talking to other Druid processes over HTTPS.</td><td><a href="/docs/latest/development/extensions-core/simple-client-sslcontext.html">link</a></td></tr>
-<tr><td>druid-pac4j</td><td>OpenID Connect authentication for druid processes.</td><td><a href="/docs/latest/development/extensions-core/druid-pac4j.html">link</a></td></tr>
-<tr><td>druid-kubernetes-extensions</td><td>Druid cluster deployment on Kubernetes without Zookeeper.</td><td><a href="/docs/latest/development/extensions-core/kubernetes.html">link</a></td></tr>
+<tr><td>druid-aws-rds-extensions</td><td>Support for AWS token based access to AWS RDS DB Cluster.</td><td><a href="/docs/0.22.1/development/extensions-core/druid-aws-rds.html">link</a></td></tr>
+<tr><td>druid-stats</td><td>Statistics related module including variance and standard deviation.</td><td><a href="/docs/0.22.1/development/extensions-core/stats.html">link</a></td></tr>
+<tr><td>mysql-metadata-storage</td><td>MySQL metadata store.</td><td><a href="/docs/0.22.1/development/extensions-core/mysql.html">link</a></td></tr>
+<tr><td>postgresql-metadata-storage</td><td>PostgreSQL metadata store.</td><td><a href="/docs/0.22.1/development/extensions-core/postgresql.html">link</a></td></tr>
+<tr><td>simple-client-sslcontext</td><td>Simple SSLContext provider module to be used by Druid's internal HttpClient when talking to other Druid processes over HTTPS.</td><td><a href="/docs/0.22.1/development/extensions-core/simple-client-sslcontext.html">link</a></td></tr>
+<tr><td>druid-pac4j</td><td>OpenID Connect authentication for druid processes.</td><td><a href="/docs/0.22.1/development/extensions-core/druid-pac4j.html">link</a></td></tr>
+<tr><td>druid-kubernetes-extensions</td><td>Druid cluster deployment on Kubernetes without Zookeeper.</td><td><a href="/docs/0.22.1/development/extensions-core/kubernetes.html">link</a></td></tr>
 </tbody>
 </table>
 <h2><a class="anchor" aria-hidden="true" id="community-extensions"></a><a href="#community-extensions" 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 [...]
@@ -124,42 +124,42 @@ metadata store. Many clusters will also use additional extensions.</p>
 </blockquote>
 <p>A number of community members have contributed their own extensions to Druid that are not packaged with the default Druid tarball.
 If you'd like to take on maintenance for a community extension, please post on <a href="https://lists.apache.org/list.html?dev@druid.apache.org">dev@druid.apache.org</a> to let us know!</p>
-<p>All of these community extensions can be downloaded using <a href="/docs/latest/operations/pull-deps.html">pull-deps</a> while specifying a <code>-c</code> coordinate option to pull <code>org.apache.druid.extensions.contrib:{EXTENSION_NAME}:{DRUID_VERSION}</code>.</p>
+<p>All of these community extensions can be downloaded using <a href="/docs/0.22.1/operations/pull-deps.html">pull-deps</a> while specifying a <code>-c</code> coordinate option to pull <code>org.apache.druid.extensions.contrib:{EXTENSION_NAME}:{DRUID_VERSION}</code>.</p>
 <table>
 <thead>
 <tr><th>Name</th><th>Description</th><th>Docs</th></tr>
 </thead>
 <tbody>
-<tr><td>aliyun-oss-extensions</td><td>Aliyun OSS deep storage</td><td><a href="/docs/latest/development/extensions-contrib/aliyun-oss.html">link</a></td></tr>
-<tr><td>ambari-metrics-emitter</td><td>Ambari Metrics Emitter</td><td><a href="/docs/latest/development/extensions-contrib/ambari-metrics-emitter.html">link</a></td></tr>
-<tr><td>druid-cassandra-storage</td><td>Apache Cassandra deep storage.</td><td><a href="/docs/latest/development/extensions-contrib/cassandra.html">link</a></td></tr>
-<tr><td>druid-cloudfiles-extensions</td><td>Rackspace Cloudfiles deep storage and firehose.</td><td><a href="/docs/latest/development/extensions-contrib/cloudfiles.html">link</a></td></tr>
-<tr><td>druid-distinctcount</td><td>DistinctCount aggregator</td><td><a href="/docs/latest/development/extensions-contrib/distinctcount.html">link</a></td></tr>
-<tr><td>druid-redis-cache</td><td>A cache implementation for Druid based on Redis.</td><td><a href="/docs/latest/development/extensions-contrib/redis-cache.html">link</a></td></tr>
-<tr><td>druid-time-min-max</td><td>Min/Max aggregator for timestamp.</td><td><a href="/docs/latest/development/extensions-contrib/time-min-max.html">link</a></td></tr>
-<tr><td>sqlserver-metadata-storage</td><td>Microsoft SQLServer deep storage.</td><td><a href="/docs/latest/development/extensions-contrib/sqlserver.html">link</a></td></tr>
-<tr><td>graphite-emitter</td><td>Graphite metrics emitter</td><td><a href="/docs/latest/development/extensions-contrib/graphite.html">link</a></td></tr>
-<tr><td>statsd-emitter</td><td>StatsD metrics emitter</td><td><a href="/docs/latest/development/extensions-contrib/statsd.html">link</a></td></tr>
-<tr><td>kafka-emitter</td><td>Kafka metrics emitter</td><td><a href="/docs/latest/development/extensions-contrib/kafka-emitter.html">link</a></td></tr>
-<tr><td>druid-thrift-extensions</td><td>Support thrift ingestion</td><td><a href="/docs/latest/development/extensions-contrib/thrift.html">link</a></td></tr>
-<tr><td>druid-opentsdb-emitter</td><td>OpenTSDB metrics emitter</td><td><a href="/docs/latest/development/extensions-contrib/opentsdb-emitter.html">link</a></td></tr>
-<tr><td>materialized-view-selection, materialized-view-maintenance</td><td>Materialized View</td><td><a href="/docs/latest/development/extensions-contrib/materialized-view.html">link</a></td></tr>
-<tr><td>druid-moving-average-query</td><td>Support for <a href="https://en.wikipedia.org/wiki/Moving_average">Moving Average</a> and other Aggregate <a href="https://en.wikibooks.org/wiki/Structured_Query_Language/Window_functions">Window Functions</a> in Druid queries.</td><td><a href="/docs/latest/development/extensions-contrib/moving-average-query.html">link</a></td></tr>
-<tr><td>druid-influxdb-emitter</td><td>InfluxDB metrics emitter</td><td><a href="/docs/latest/development/extensions-contrib/influxdb-emitter.html">link</a></td></tr>
-<tr><td>druid-momentsketch</td><td>Support for approximate quantile queries using the <a href="https://github.com/stanford-futuredata/momentsketch">momentsketch</a> library</td><td><a href="/docs/latest/development/extensions-contrib/momentsketch-quantiles.html">link</a></td></tr>
-<tr><td>druid-tdigestsketch</td><td>Support for approximate sketch aggregators based on <a href="https://github.com/tdunning/t-digest">T-Digest</a></td><td><a href="/docs/latest/development/extensions-contrib/tdigestsketch-quantiles.html">link</a></td></tr>
-<tr><td>gce-extensions</td><td>GCE Extensions</td><td><a href="/docs/latest/development/extensions-contrib/gce-extensions.html">link</a></td></tr>
-<tr><td>prometheus-emitter</td><td>Exposes <a href="/docs/latest/operations/metrics.html">Druid metrics</a> for Prometheus server collection (<a href="https://prometheus.io/">https://prometheus.io/</a>)</td><td><a href="/docs/latest/development/extensions-contrib/prometheus.html">link</a></td></tr>
+<tr><td>aliyun-oss-extensions</td><td>Aliyun OSS deep storage</td><td><a href="/docs/0.22.1/development/extensions-contrib/aliyun-oss.html">link</a></td></tr>
+<tr><td>ambari-metrics-emitter</td><td>Ambari Metrics Emitter</td><td><a href="/docs/0.22.1/development/extensions-contrib/ambari-metrics-emitter.html">link</a></td></tr>
+<tr><td>druid-cassandra-storage</td><td>Apache Cassandra deep storage.</td><td><a href="/docs/0.22.1/development/extensions-contrib/cassandra.html">link</a></td></tr>
+<tr><td>druid-cloudfiles-extensions</td><td>Rackspace Cloudfiles deep storage and firehose.</td><td><a href="/docs/0.22.1/development/extensions-contrib/cloudfiles.html">link</a></td></tr>
+<tr><td>druid-distinctcount</td><td>DistinctCount aggregator</td><td><a href="/docs/0.22.1/development/extensions-contrib/distinctcount.html">link</a></td></tr>
+<tr><td>druid-redis-cache</td><td>A cache implementation for Druid based on Redis.</td><td><a href="/docs/0.22.1/development/extensions-contrib/redis-cache.html">link</a></td></tr>
+<tr><td>druid-time-min-max</td><td>Min/Max aggregator for timestamp.</td><td><a href="/docs/0.22.1/development/extensions-contrib/time-min-max.html">link</a></td></tr>
+<tr><td>sqlserver-metadata-storage</td><td>Microsoft SQLServer deep storage.</td><td><a href="/docs/0.22.1/development/extensions-contrib/sqlserver.html">link</a></td></tr>
+<tr><td>graphite-emitter</td><td>Graphite metrics emitter</td><td><a href="/docs/0.22.1/development/extensions-contrib/graphite.html">link</a></td></tr>
+<tr><td>statsd-emitter</td><td>StatsD metrics emitter</td><td><a href="/docs/0.22.1/development/extensions-contrib/statsd.html">link</a></td></tr>
+<tr><td>kafka-emitter</td><td>Kafka metrics emitter</td><td><a href="/docs/0.22.1/development/extensions-contrib/kafka-emitter.html">link</a></td></tr>
+<tr><td>druid-thrift-extensions</td><td>Support thrift ingestion</td><td><a href="/docs/0.22.1/development/extensions-contrib/thrift.html">link</a></td></tr>
+<tr><td>druid-opentsdb-emitter</td><td>OpenTSDB metrics emitter</td><td><a href="/docs/0.22.1/development/extensions-contrib/opentsdb-emitter.html">link</a></td></tr>
+<tr><td>materialized-view-selection, materialized-view-maintenance</td><td>Materialized View</td><td><a href="/docs/0.22.1/development/extensions-contrib/materialized-view.html">link</a></td></tr>
+<tr><td>druid-moving-average-query</td><td>Support for <a href="https://en.wikipedia.org/wiki/Moving_average">Moving Average</a> and other Aggregate <a href="https://en.wikibooks.org/wiki/Structured_Query_Language/Window_functions">Window Functions</a> in Druid queries.</td><td><a href="/docs/0.22.1/development/extensions-contrib/moving-average-query.html">link</a></td></tr>
+<tr><td>druid-influxdb-emitter</td><td>InfluxDB metrics emitter</td><td><a href="/docs/0.22.1/development/extensions-contrib/influxdb-emitter.html">link</a></td></tr>
+<tr><td>druid-momentsketch</td><td>Support for approximate quantile queries using the <a href="https://github.com/stanford-futuredata/momentsketch">momentsketch</a> library</td><td><a href="/docs/0.22.1/development/extensions-contrib/momentsketch-quantiles.html">link</a></td></tr>
+<tr><td>druid-tdigestsketch</td><td>Support for approximate sketch aggregators based on <a href="https://github.com/tdunning/t-digest">T-Digest</a></td><td><a href="/docs/0.22.1/development/extensions-contrib/tdigestsketch-quantiles.html">link</a></td></tr>
+<tr><td>gce-extensions</td><td>GCE Extensions</td><td><a href="/docs/0.22.1/development/extensions-contrib/gce-extensions.html">link</a></td></tr>
+<tr><td>prometheus-emitter</td><td>Exposes <a href="/docs/0.22.1/operations/metrics.html">Druid metrics</a> for Prometheus server collection (<a href="https://prometheus.io/">https://prometheus.io/</a>)</td><td><a href="/docs/0.22.1/development/extensions-contrib/prometheus.html">link</a></td></tr>
 </tbody>
 </table>
 <h2><a class="anchor" aria-hidden="true" id="promoting-community-extensions-to-core-extensions"></a><a href="#promoting-community-extensions-to-core-extensions" 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  [...]
 <p>Please post on <a href="https://lists.apache.org/list.html?dev@druid.apache.org">dev@druid.apache.org</a> if you'd like an extension to be promoted to core.
 If we see a community extension actively supported by the community, we can promote it to core based on community feedback.</p>
-<p>For information how to create your own extension, please see <a href="/docs/latest/development/modules.html">here</a>.</p>
+<p>For information how to create your own extension, please see <a href="/docs/0.22.1/development/modules.html">here</a>.</p>
 <h2><a class="anchor" aria-hidden="true" id="loading-extensions"></a><a href="#loading-extensions" 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- [...]
 <h3><a class="anchor" aria-hidden="true" id="loading-core-extensions"></a><a href="#loading-core-extensions" 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>Apache Druid bundles all <a href="/docs/latest/development/extensions.html#core-extensions">core extensions</a> out of the box.
-See the <a href="/docs/latest/development/extensions.html#core-extensions">list of extensions</a> for your options. You
+<p>Apache Druid bundles all <a href="/docs/0.22.1/development/extensions.html#core-extensions">core extensions</a> out of the box.
+See the <a href="/docs/0.22.1/development/extensions.html#core-extensions">list of extensions</a> for your options. You
 can load bundled extensions by adding their names to your common.runtime.properties
 <code>druid.extensions.loadList</code> property. For example, to load the <em>postgresql-metadata-storage</em> and
 <em>druid-hdfs-storage</em> extensions, use the configuration:</p>
@@ -167,18 +167,18 @@ can load bundled extensions by adding their names to your common.runtime.propert
 </code></pre>
 <p>These extensions are located in the <code>extensions</code> directory of the distribution.</p>
 <blockquote>
-<p>Druid bundles two sets of configurations: one for the <a href="/docs/latest/tutorials/index.html">quickstart</a> and
-one for a <a href="/docs/latest/tutorials/cluster.html">clustered configuration</a>. Make sure you are updating the correct
+<p>Druid bundles two sets of configurations: one for the <a href="/docs/0.22.1/tutorials/index.html">quickstart</a> and
+one for a <a href="/docs/0.22.1/tutorials/cluster.html">clustered configuration</a>. Make sure you are updating the correct
 common.runtime.properties for your setup.</p>
 </blockquote>
 <blockquote>
 <p>Because of licensing, the mysql-metadata-storage extension does not include the required MySQL JDBC driver. For instructions
-on how to install this library, see the <a href="/docs/latest/development/extensions-core/mysql.html">MySQL extension page</a>.</p>
+on how to install this library, see the <a href="/docs/0.22.1/development/extensions-core/mysql.html">MySQL extension page</a>.</p>
 </blockquote>
 <h3><a class="anchor" aria-hidden="true" id="loading-community-extensions"></a><a href="#loading-community-extensions" 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>You can also load community and third-party extensions not already bundled with Druid. To do this, first download the extension and
 then install it into your <code>extensions</code> directory. You can download extensions from their distributors directly, or
-if they are available from Maven, the included <a href="/docs/latest/operations/pull-deps.html">pull-deps</a> can download them for you. To use <em>pull-deps</em>,
+if they are available from Maven, the included <a href="/docs/0.22.1/operations/pull-deps.html">pull-deps</a> can download them for you. To use <em>pull-deps</em>,
 specify the full Maven coordinate of the extension in the form <code>groupId:artifactId:version</code>. For example,
 for the (hypothetical) extension <em>com.example:druid-example-extension:1.0.0</em>, run:</p>
 <pre><code class="hljs">java <span class="hljs-string">\</span>
@@ -192,17 +192,17 @@ for the (hypothetical) extension <em>com.example:druid-example-extension:1.0.0</
 <p>You only have to install the extension once. Then, add <code>&quot;druid-example-extension&quot;</code> to
 <code>druid.extensions.loadList</code> in common.runtime.properties to instruct Druid to load the extension.</p>
 <blockquote>
-<p>Please make sure all the Extensions related configuration properties listed <a href="/docs/latest/configuration/index.html#extensions">here</a> are set correctly.</p>
+<p>Please make sure all the Extensions related configuration properties listed <a href="/docs/0.22.1/configuration/index.html#extensions">here</a> are set correctly.</p>
 </blockquote>
 <blockquote>
-<p>The Maven groupId for almost every <a href="/docs/latest/development/extensions.html#community-extensions">community extension</a> is org.apache.druid.extensions.contrib. The artifactId is the name
+<p>The Maven groupId for almost every <a href="/docs/0.22.1/development/extensions.html#community-extensions">community extension</a> is org.apache.druid.extensions.contrib. The artifactId is the name
 of the extension, and the version is the latest Druid stable version.</p>
 </blockquote>
 <h3><a class="anchor" aria-hidden="true" id="loading-extensions-from-the-classpath"></a><a href="#loading-extensions-from-the-classpath" 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>If you add your extension jar to the classpath at runtime, Druid will also load it into the system.  This mechanism is relatively easy to reason about,
 but it also means that you have to ensure that all dependency jars on the classpath are compatible.  That is, Druid makes no provisions while using
 this method to maintain class loader isolation so you must make sure that the jars on your classpath are mutually compatible.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/configuration/index.html"><span class="arrow-prev">← </span><span>Configuration reference</span></a><a class="docs-next button" href="/docs/latest/configuration/logging.html"><span>Logging</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#core-extensions">Core extensions</a></li><li><a href="#community-extensions" [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/configuration/index.html"><span class="arrow-prev">← </span><span>Configuration reference</span></a><a class="docs-next button" href="/docs/0.22.1/configuration/logging.html"><span>Logging</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#core-extensions">Core extensions</a></li><li><a href="#community-extensions" [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -219,6 +219,6 @@ this method to maintain class loader isolation so you must make sure that the ja
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/geo.html b/docs/0.22.1/development/geo.html
similarity index 71%
copy from docs/latest/development/geo.html
copy to docs/0.22.1/development/geo.html
index 3370a0e..01945c9 100644
--- a/docs/latest/development/geo.html
+++ b/docs/0.22.1/development/geo.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>Spatial filters · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/geo.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22.0" /><meta pr [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Spatial filters · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/geo.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22.1" /><meta pr [...]
               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++) {
@@ -78,7 +78,7 @@
   ~ under the License.
   -->
 <blockquote>
-<p>Apache Druid supports two query languages: <a href="/docs/latest/querying/sql.html">Druid SQL</a> and <a href="/docs/latest/querying/querying.html">native queries</a>.
+<p>Apache Druid supports two query languages: <a href="/docs/0.22.1/querying/sql.html">Druid SQL</a> and <a href="/docs/0.22.1/querying/querying.html">native queries</a>.
 This document describes functionality that is only available in the native language.</p>
 </blockquote>
 <p>Apache Druid supports filtering specially spatially indexed columns based on an origin and a bound.</p>
@@ -160,7 +160,7 @@ This document describes functionality that is only available in the native langu
 <tr><td>ordinate</td><td>Vertical coordinate for corners of the polygon</td><td>yes</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/querying/virtual-columns.html"><span class="arrow-prev">← </span><span>Virtual columns</span></a><a class="docs-next button" href="/docs/latest/configuration/index.html"><span>Configuration reference</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#spatial-indexing">Spatial indexing</a></li><li><a href="#spatial- [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/querying/virtual-columns.html"><span class="arrow-prev">← </span><span>Virtual columns</span></a><a class="docs-next button" href="/docs/0.22.1/configuration/index.html"><span>Configuration reference</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#spatial-indexing">Spatial indexing</a></li><li><a href="#spatial- [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -177,6 +177,6 @@ This document describes functionality that is only available in the native langu
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.22.1/development/indexer.html b/docs/0.22.1/development/indexer.html
new file mode 100644
index 0000000..263cfbc
--- /dev/null
+++ b/docs/0.22.1/development/indexer.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="../design/indexer.html">
+<meta http-equiv="refresh" content="0; url=../design/indexer.html">
+<h1>Redirecting...</h1>
+<a href="../design/indexer.html">Click here if you are not redirected.</a>
+<script>location="../design/indexer.html"</script>
diff --git a/docs/0.22.1/development/integrating-druid-with-other-technologies.html b/docs/0.22.1/development/integrating-druid-with-other-technologies.html
new file mode 100644
index 0000000..6013623
--- /dev/null
+++ b/docs/0.22.1/development/integrating-druid-with-other-technologies.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/latest/development/javascript.html b/docs/0.22.1/development/javascript.html
similarity index 68%
copy from docs/latest/development/javascript.html
copy to docs/0.22.1/development/javascript.html
index b0c8b03..899f373 100644
--- a/docs/latest/development/javascript.html
+++ b/docs/0.22.1/development/javascript.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>JavaScript programming guide · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/javascript.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>JavaScript programming guide · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/javascript.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content [...]
               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++) {
@@ -81,13 +81,13 @@
 <h2><a class="anchor" aria-hidden="true" id="examples"></a><a href="#examples" 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>JavaScript can be used to extend Druid in a variety of ways:</p>
 <ul>
-<li><a href="/docs/latest/querying/aggregations.html#javascript-aggregator">Aggregators</a></li>
-<li><a href="/docs/latest/querying/dimensionspecs.html#javascript-extraction-function">Extraction functions</a></li>
-<li><a href="/docs/latest/querying/filters.html#javascript-filter">Filters</a></li>
-<li><a href="/docs/latest/querying/post-aggregations.html#javascript-post-aggregator">Post-aggregators</a></li>
-<li><a href="/docs/latest/ingestion/data-formats.html#javascript-parsespec">Input parsers</a></li>
-<li><a href="/docs/latest/design/router.html#javascript">Router strategy</a></li>
-<li><a href="/docs/latest/configuration/index.html#javascript-worker-select-strategy">Worker select strategy</a></li>
+<li><a href="/docs/0.22.1/querying/aggregations.html#javascript-aggregator">Aggregators</a></li>
+<li><a href="/docs/0.22.1/querying/dimensionspecs.html#javascript-extraction-function">Extraction functions</a></li>
+<li><a href="/docs/0.22.1/querying/filters.html#javascript-filter">Filters</a></li>
+<li><a href="/docs/0.22.1/querying/post-aggregations.html#javascript-post-aggregator">Post-aggregators</a></li>
+<li><a href="/docs/0.22.1/ingestion/data-formats.html#javascript-parsespec">Input parsers</a></li>
+<li><a href="/docs/0.22.1/design/router.html#javascript">Router strategy</a></li>
+<li><a href="/docs/0.22.1/configuration/index.html#javascript-worker-select-strategy">Worker select strategy</a></li>
 </ul>
 <p>JavaScript can be injected dynamically at runtime, making it convenient to rapidly prototype new functionality
 without needing to write and deploy Druid extensions.</p>
@@ -96,7 +96,7 @@ without needing to write and deploy Druid extensions.</p>
 <p>Druid does not execute JavaScript functions in a sandbox, so they have full access to the machine. So JavaScript
 functions allow users to execute arbitrary code inside druid process. So, by default, JavaScript is disabled.
 However, on dev/staging environments or secured production environments you can enable those by setting
-the <a href="/docs/latest/configuration/index.html#javascript">configuration property</a>
+the <a href="/docs/0.22.1/configuration/index.html#javascript">configuration property</a>
 <code>druid.javascript.enabled = true</code>.</p>
 <h2><a class="anchor" aria-hidden="true" id="global-variables"></a><a href="#global-variables" 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>Avoid using global variables. Druid may share the global scope between multiple threads, which can lead to
@@ -113,7 +113,7 @@ than performance or memory use. If security is an issue, or if performance and m
 we recommend developing a native Druid extension.</p>
 <p>In addition, native Druid extensions are more flexible than JavaScript functions. There are some kinds of extensions
 (like sketches) that must be written as native Druid extensions due to their need for custom data formats.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/modules.html"><span class="arrow-prev">← </span><span>Creating extensions</span></a><a class="docs-next button" href="/docs/latest/development/build.html"><span>Build from source</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#examples">Examples</a></li><li><a href="#security">Security</a></li><li><a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/modules.html"><span class="arrow-prev">← </span><span>Creating extensions</span></a><a class="docs-next button" href="/docs/0.22.1/development/build.html"><span>Build from source</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#examples">Examples</a></li><li><a href="#security">Security</a></li><li><a [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -130,6 +130,6 @@ we recommend developing a native Druid extension.</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.22.1/development/kafka-simple-consumer-firehose.html b/docs/0.22.1/development/kafka-simple-consumer-firehose.html
new file mode 100644
index 0000000..d7ae094
--- /dev/null
+++ b/docs/0.22.1/development/kafka-simple-consumer-firehose.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.22.1/development/libraries.html b/docs/0.22.1/development/libraries.html
new file mode 100644
index 0000000..545edee
--- /dev/null
+++ b/docs/0.22.1/development/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/latest/development/modules.html b/docs/0.22.1/development/modules.html
similarity index 84%
copy from docs/latest/development/modules.html
copy to docs/0.22.1/development/modules.html
index 13629ae..3eb763e 100644
--- a/docs/latest/development/modules.html
+++ b/docs/0.22.1/development/modules.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>Creating extensions · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/modules.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22.0" /> [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Creating extensions · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/modules.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22.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++) {
@@ -79,7 +79,7 @@
   -->
 <p>Druid uses a module system that allows for the addition of extensions at runtime.</p>
 <h2><a class="anchor" aria-hidden="true" id="writing-your-own-extensions"></a><a href="#writing-your-own-extensions" 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>Druid's extensions leverage Guice in order to add things at runtime.  Basically, Guice is a framework for Dependency Injection, but we use it to hold the expected object graph of the Druid process.  Extensions can make any changes they want/need to the object graph via adding Guice bindings.  While the extensions actually give you the capability to change almost anything however you want, in general, we expect people to want to extend one of the things listed below.  This means that w [...]
+<p>Druid's extensions leverage Guice in order to add things at runtime.  Basically, Guice is a framework for Dependency Injection, but we use it to hold the expected object graph of the Druid process.  Extensions can make any changes they want/need to the object graph via adding Guice bindings.  While the extensions actually give you the capability to change almost anything however you want, in general, we expect people to want to extend one of the things listed below.  This means that w [...]
 <ol>
 <li>Add a new deep storage implementation by extending the <code>org.apache.druid.segment.loading.DataSegment*</code> and
 <code>org.apache.druid.tasklogs.TaskLog*</code> classes.</li>
@@ -178,7 +178,7 @@ T00:00:00.000Z/2015<span class="hljs-string">-04</span><span class="hljs-string"
 <h3><a class="anchor" aria-hidden="true" id="adding-support-for-a-new-input-source"></a><a href="#adding-support-for-a-new-input-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 [...]
 <p>Adding support for a new input source requires to implement three interfaces, i.e., <code>InputSource</code>, <code>InputEntity</code>, and <code>InputSourceReader</code>.
 <code>InputSource</code> is to define where the input data is stored. <code>InputEntity</code> is to define how data can be read in parallel
-in <a href="/docs/latest/ingestion/native-batch.html">native parallel indexing</a>.
+in <a href="/docs/0.22.1/ingestion/native-batch.html">native parallel indexing</a>.
 <code>InputSourceReader</code> defines how to read your new input source and you can simply use the provided <code>InputEntityIteratingReader</code> in most cases.</p>
 <p>There is an example of this in the <code>druid-s3-extensions</code> module with the <code>S3InputSource</code> and <code>S3Entity</code>.</p>
 <p>Adding an InputSource is done almost entirely through the Jackson Modules instead of Guice. Specifically, note the implementation</p>
@@ -336,7 +336,7 @@ druid<span class="hljs-selector-class">.coordinator</span><span class="hljs-sele
 <p>When you do <code>mvn install</code>, Druid extensions will be packaged within the Druid tarball and <code>extensions</code> directory, which are both underneath <code>distribution/target/</code>.</p>
 <p>If you want your extension to be included, you can add your extension's maven coordinate as an argument at
 <a href="https://github.com/apache/druid/blob/master/distribution/pom.xml#L95">distribution/pom.xml</a></p>
-<p>During <code>mvn install</code>, maven will install your extension to the local maven repository, and then call <a href="/docs/latest/operations/pull-deps.html">pull-deps</a> to pull your extension from
+<p>During <code>mvn install</code>, maven will install your extension to the local maven repository, and then call <a href="/docs/0.22.1/operations/pull-deps.html">pull-deps</a> to pull your extension from
 there. In the end, you should see your extension underneath <code>distribution/target/extensions</code> and within Druid tarball.</p>
 <h3><a class="anchor" aria-hidden="true" id="managing-dependencies"></a><a href="#managing-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>Managing library collisions can be daunting for extensions which draw in commonly used libraries. Here is a list of group IDs for libraries that are suggested to be specified with a <code>provided</code> scope to prevent collision with versions used in druid:</p>
@@ -373,7 +373,7 @@ there. In the end, you should see your extension underneath <code>distribution/t
 "<span class="hljs-selector-tag">net</span><span class="hljs-selector-class">.java</span><span class="hljs-selector-class">.dev</span><span class="hljs-selector-class">.jets3t</span>"
 </code></pre>
 <p>See the documentation in <code>org.apache.druid.cli.PullDependencies</code> for more information.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/overview.html"><span class="arrow-prev">← </span><span>Developing on Druid</span></a><a class="docs-next button" href="/docs/latest/development/javascript.html"><span class="function-name-prevnext">JavaScript functionality</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#writing-your-own-extensions">W [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/overview.html"><span class="arrow-prev">← </span><span>Developing on Druid</span></a><a class="docs-next button" href="/docs/0.22.1/development/javascript.html"><span class="function-name-prevnext">JavaScript functionality</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#writing-your-own-extensions">W [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -390,6 +390,6 @@ there. In the end, you should see your extension underneath <code>distribution/t
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/development/overview.html b/docs/0.22.1/development/overview.html
similarity index 71%
copy from docs/latest/development/overview.html
copy to docs/0.22.1/development/overview.html
index e80ba40..de57689 100644
--- a/docs/latest/development/overview.html
+++ b/docs/0.22.1/development/overview.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>Developing on Apache Druid · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/overview.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0. [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Developing on Apache Druid · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/overview.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>< [...]
+            </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++) {
@@ -80,7 +80,7 @@
 <p>Druid's codebase consists of several major components. For developers interested in learning the code, this document provides
 a high level overview of the main components that make up Druid and the relevant classes to start from to learn the code.</p>
 <h2><a class="anchor" aria-hidden="true" id="storage-format"></a><a href="#storage-format" 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>Data in Druid is stored in a custom column format known as a <a href="/docs/latest/design/segments.html">segment</a>. Segments are composed of
+<p>Data in Druid is stored in a custom column format known as a <a href="/docs/0.22.1/design/segments.html">segment</a>. Segments are composed of
 different types of columns. <code>Column.java</code> and the classes that extend it is a great place to looking into the storage format.</p>
 <h2><a class="anchor" aria-hidden="true" id="segment-creation"></a><a href="#segment-creation" 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>Raw data is ingested in <code>IncrementalIndex.java</code>, and segments are created in <code>IndexMerger.java</code>.</p>
@@ -107,7 +107,7 @@ segments to create, and <code>HadoopDruidIndexerJob.java</code>, which creates D
 <p>We welcome contributions for new client libraries to interact with Druid. See the
 <a href="https://druid.apache.org/libraries.html">Community and third-party libraries</a> page for links to existing client
 libraries.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/operations/use_sbt_to_build_fat_jar.html"><span class="arrow-prev">← </span><span>Content for build.sbt</span></a><a class="docs-next button" href="/docs/latest/development/modules.html"><span>Creating extensions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#storage-format">Storage format</a></li><li><a href=" [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/operations/use_sbt_to_build_fat_jar.html"><span class="arrow-prev">← </span><span>Content for build.sbt</span></a><a class="docs-next button" href="/docs/0.22.1/development/modules.html"><span>Creating extensions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#storage-format">Storage format</a></li><li><a href=" [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -124,6 +124,6 @@ libraries.</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.22.1/development/router.html b/docs/0.22.1/development/router.html
new file mode 100644
index 0000000..c9b62a8
--- /dev/null
+++ b/docs/0.22.1/development/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.22.1/development/select-query.html b/docs/0.22.1/development/select-query.html
new file mode 100644
index 0000000..1488780
--- /dev/null
+++ b/docs/0.22.1/development/select-query.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/latest/development/versioning.html b/docs/0.22.1/development/versioning.html
similarity index 67%
copy from docs/latest/development/versioning.html
copy to docs/0.22.1/development/versioning.html
index d66b72d..743daad 100644
--- a/docs/latest/development/versioning.html
+++ b/docs/0.22.1/development/versioning.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>Versioning · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/development/versioning.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22.0" /><meta  [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Versioning · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/development/versioning.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22.1" /><meta  [...]
               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++) {
@@ -90,7 +90,7 @@
 <p>For external deployments, we recommend running the stable release tag. Releases are considered stable after we have deployed them into our production environment and they have operated bug-free for some time.</p>
 <h2><a class="anchor" aria-hidden="true" id="tagging-strategy"></a><a href="#tagging-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-2. [...]
 <p>Tags of the codebase are equivalent to release candidates. We tag the code every time we want to take it through our release process, which includes some QA cycles and deployments. So, it is not safe to assume that a tag is a stable release, it is a solidification of the code as it goes through our production QA cycle and deployment. Tags will never change, but we often go through a number of iterations of tags before actually getting a stable release onto production. So, it is recomm [...]
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/development/build.html"><span class="arrow-prev">← </span><span>Build from source</span></a><a class="docs-next button" href="/docs/latest/development/experimental.html"><span>Experimental features</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#versioning-strategy">Versioning Strategy</a></li><li><a href="#tagg [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/development/build.html"><span class="arrow-prev">← </span><span>Build from source</span></a><a class="docs-next button" href="/docs/0.22.1/development/experimental.html"><span>Experimental features</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#versioning-strategy">Versioning Strategy</a></li><li><a href="#tagg [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -107,6 +107,6 @@
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.22.1/index.html b/docs/0.22.1/index.html
new file mode 100644
index 0000000..57986ec
--- /dev/null
+++ b/docs/0.22.1/index.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.22.1/ingestion/batch-ingestion.html b/docs/0.22.1/ingestion/batch-ingestion.html
new file mode 100644
index 0000000..1cf97e2
--- /dev/null
+++ b/docs/0.22.1/ingestion/batch-ingestion.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="index.html#batch">
+<meta http-equiv="refresh" content="0; url=index.html#batch">
+<h1>Redirecting...</h1>
+<a href="index.html#batch">Click here if you are not redirected.</a>
+<script>location="index.html#batch"</script>
diff --git a/docs/0.22.1/ingestion/command-line-hadoop-indexer.html b/docs/0.22.1/ingestion/command-line-hadoop-indexer.html
new file mode 100644
index 0000000..fe1d6fa
--- /dev/null
+++ b/docs/0.22.1/ingestion/command-line-hadoop-indexer.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="hadoop.html#cli">
+<meta http-equiv="refresh" content="0; url=hadoop.html#cli">
+<h1>Redirecting...</h1>
+<a href="hadoop.html#cli">Click here if you are not redirected.</a>
+<script>location="hadoop.html#cli"</script>
diff --git a/docs/latest/ingestion/compaction.html b/docs/0.22.1/ingestion/compaction.html
similarity index 78%
copy from docs/latest/ingestion/compaction.html
copy to docs/0.22.1/ingestion/compaction.html
index ee817ac..d9da474 100644
--- a/docs/latest/ingestion/compaction.html
+++ b/docs/0.22.1/ingestion/compaction.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>Compaction · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/ingestion/compaction.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Defines compaction and automatic compaction (auto-compaction or autocompaction) for segment optimization. Use case [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Compaction · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/ingestion/compaction.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Defines compaction and automatic compaction (auto-compaction or autocompaction) for segment optimization. Use case [...]
               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++) {
@@ -82,7 +82,7 @@ Query performance in Apache Druid depends on optimally sized segments. Compactio
 <p>There are several cases to consider compaction for segment optimization:</p>
 <ul>
 <li>With streaming ingestion, data can arrive out of chronological order creating lots of small segments.</li>
-<li>If you append data using <code>appendToExisting</code> for <a href="/docs/latest/ingestion/native-batch.html">native batch</a> ingestion creating suboptimal segments.</li>
+<li>If you append data using <code>appendToExisting</code> for <a href="/docs/0.22.1/ingestion/native-batch.html">native batch</a> ingestion creating suboptimal segments.</li>
 <li>When you use <code>index_parallel</code> for parallel batch indexing and the parallel ingestion tasks create many small segments.</li>
 <li>When a misconfigured ingestion task creates oversized segments.</li>
 </ul>
@@ -92,12 +92,12 @@ Query performance in Apache Druid depends on optimally sized segments. Compactio
 <li>Over time you don't need fine-grained granularity for older data so you want use compaction to change older segments to a coarser query granularity. This reduces the storage space required for older data. For example from <code>minute</code> to <code>hour</code>, or <code>hour</code> to <code>day</code>. You cannot go from coarser granularity to finer granularity.</li>
 <li>You can change the dimension order to improve sorting and reduce segment size.</li>
 <li>You can remove unused columns in compaction or implement an aggregation metric for older data.</li>
-<li>You can change segment rollup from dynamic partitioning with best-effort rollup to hash or range partitioning with perfect rollup. For more information on rollup, see <a href="/docs/latest/ingestion/rollup.html#perfect-rollup-vs-best-effort-rollup">perfect vs best-effort rollup</a>.</li>
+<li>You can change segment rollup from dynamic partitioning with best-effort rollup to hash or range partitioning with perfect rollup. For more information on rollup, see <a href="/docs/0.22.1/ingestion/rollup.html#perfect-rollup-vs-best-effort-rollup">perfect vs best-effort rollup</a>.</li>
 </ul>
-<p>Compaction does not improve performance in all situations. For example, if you rewrite your data with each ingestion task, you don't need to use compaction. See <a href="/docs/latest/operations/segment-optimization.html">Segment optimization</a> for additional guidance to determine if compaction will help in your environment.</p>
+<p>Compaction does not improve performance in all situations. For example, if you rewrite your data with each ingestion task, you don't need to use compaction. See <a href="/docs/0.22.1/operations/segment-optimization.html">Segment optimization</a> for additional guidance to determine if compaction will help in your environment.</p>
 <h2><a class="anchor" aria-hidden="true" id="types-of-compaction"></a><a href="#types-of-compaction" 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>You can configure the Druid Coordinator to perform automatic compaction, also called auto-compaction, for a datasource. Using a segment search policy, the coordinator periodically identifies segments for compaction starting with the newest to oldest. When it discovers segments that have not been compacted or segments that were compacted with a different or changed spec, it submits compaction task for those segments and only those segments.</p>
-<p>Automatic compaction works in most use cases and should be your first option. To learn more about automatic compaction, see <a href="/docs/latest/design/coordinator.html#compacting-segments">Compacting Segments</a>.</p>
+<p>Automatic compaction works in most use cases and should be your first option. To learn more about automatic compaction, see <a href="/docs/0.22.1/design/coordinator.html#compacting-segments">Compacting Segments</a>.</p>
 <p>In cases where you require more control over compaction, you can manually submit compaction tasks. For example:</p>
 <ul>
 <li>Automatic compaction is running into the limit of task slots available to it, so tasks are waiting for previous automatic compaction tasks to complete. Manual compaction can use all available task slots, therefore you can complete compaction more quickly by submitting more concurrent tasks for more intervals.</li>
@@ -106,11 +106,11 @@ Query performance in Apache Druid depends on optimally sized segments. Compactio
 <p>See <a href="#setting-up-manual-compaction">Setting up a manual compaction task</a> for more about manual compaction tasks.</p>
 <h2><a class="anchor" aria-hidden="true" id="data-handling-with-compaction"></a><a href="#data-handling-with-compaction" 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>During compaction, Druid overwrites the original set of segments with the compacted set. Druid also locks the segments for the time interval being compacted to ensure data consistency. By default, compaction tasks do not modify the underlying data. You can configure the compaction task to change the query granularity or add or remove dimensions in the compaction task. This means that the only changes to query results should be the result of intentional, not automatic, changes.</p>
-<p>You can set <code>dropExisting</code> in <code>ioConfig</code> to &quot;true&quot; in the compaction task to configure Druid to mark all existing segments fully contained by the interval of the compaction task as unused (drop the segments). See the suggestion for reindexing with finer granularity under <a href="/docs/latest/ingestion/native-batch.html#implementation-considerations">Implementation considerations</a> for an example.</p>
+<p>You can set <code>dropExisting</code> in <code>ioConfig</code> to &quot;true&quot; in the compaction task to configure Druid to mark all existing segments fully contained by the interval of the compaction task as unused (drop the segments). See the suggestion for reindexing with finer granularity under <a href="/docs/0.22.1/ingestion/native-batch.html#implementation-considerations">Implementation considerations</a> for an example.</p>
 <blockquote>
 <p>WARNING: <code>dropExisting</code> in <code>ioConfig</code> is a beta feature. It may cause data within the compaction task interval to become  temporarily unavailable.</p>
 </blockquote>
-<p>If an ingestion task needs to write data to a segment for a time interval locked for compaction, by default the ingestion task supersedes the compaction task and the compaction task fails without finishing. For manual compaction tasks you can adjust the input spec interval to avoid conflicts between ingestion and compaction. For automatic compaction, you can set the <code>skipOffsetFromLatest</code> key to adjustment the auto compaction starting point from the current time to reduce t [...]
+<p>If an ingestion task needs to write data to a segment for a time interval locked for compaction, by default the ingestion task supersedes the compaction task and the compaction task fails without finishing. For manual compaction tasks you can adjust the input spec interval to avoid conflicts between ingestion and compaction. For automatic compaction, you can set the <code>skipOffsetFromLatest</code> key to adjustment the auto compaction starting point from the current time to reduce t [...]
 <h3><a class="anchor" aria-hidden="true" id="segment-granularity-handling"></a><a href="#segment-granularity-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>Unless you modify the segment granularity in the <a href="#compaction-granularity-spec">granularity spec</a>, Druid attempts to retain the granularity for the compacted segments. When segments have different segment granularities with no overlap in interval Druid creates a separate compaction task for each to retain the segment granularity in the compacted segment.</p>
 <p>If segments have different segment granularities before compaction but there is some overlap in interval, Druid attempts find start and end of the overlapping interval and uses the closest segment granularity level for the compacted segment. For example consider two overlapping segments: segment &quot;A&quot; for the interval 01/01/2021-01/02/2021 with day granularity and segment &quot;B&quot; for the interval 01/01/2021-02/01/2021. Druid attempts to combine and compacted the overlapp [...]
@@ -121,13 +121,13 @@ Query performance in Apache Druid depends on optimally sized segments. Compactio
 </blockquote>
 <p>If you configure query granularity in compaction to go from a finer granularity like month to a coarser query granularity like year, then Druid overshadows the original segment with coarser granularity. Because the new segments have a coarser granularity, running a kill task to remove the overshadowed segments for those intervals will cause you to permanently lose the finer granularity data.</p>
 <h3><a class="anchor" aria-hidden="true" id="dimension-handling"></a><a href="#dimension-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 12H9c-.98 0-2-1.22- [...]
-<p>Apache Druid supports schema changes. Therefore, dimensions can be different across segments even if they are a part of the same data source. See <a href="/docs/latest/design/segments.html#different-schemas-among-segments">Different schemas among segments</a>. If the input segments have different dimensions, the resulting compacted segment include all dimensions of the input segments.</p>
+<p>Apache Druid supports schema changes. Therefore, dimensions can be different across segments even if they are a part of the same data source. See <a href="/docs/0.22.1/design/segments.html#different-schemas-among-segments">Different schemas among segments</a>. If the input segments have different dimensions, the resulting compacted segment include all dimensions of the input segments.</p>
 <p>Even when the input segments have the same set of dimensions, the dimension order or the data type of dimensions can be different. The dimensions of recent segments precede that of old segments in terms of data types and the ordering because more recent segments are more likely to have the preferred order and data types.</p>
 <p>If you want to control dimension ordering or ensure specific values for dimension types, you can configure a custom <code>dimensionsSpec</code> in the compaction task spec.</p>
 <h3><a class="anchor" aria-hidden="true" id="rollup"></a><a href="#rollup" 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>Druid only rolls up the output segment when <code>rollup</code> is set for all input segments.
-See <a href="/docs/latest/ingestion/rollup.html">Roll-up</a> for more details.
-You can check that your segments are rolled up or not by using <a href="/docs/latest/querying/segmentmetadataquery.html#analysistypes">Segment Metadata Queries</a>.</p>
+See <a href="/docs/0.22.1/ingestion/rollup.html">Roll-up</a> for more details.
+You can check that your segments are rolled up or not by using <a href="/docs/0.22.1/querying/segmentmetadataquery.html#analysistypes">Segment Metadata Queries</a>.</p>
 <h2><a class="anchor" aria-hidden="true" id="setting-up-manual-compaction"></a><a href="#setting-up-manual-compaction" 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>To perform a manual compaction, you submit a compaction task. Compaction tasks merge all segments for the defined interval according to the following syntax:</p>
 <pre><code class="hljs css language-json">{
@@ -154,19 +154,19 @@ You can check that your segments are rolled up or not by using <a href="/docs/la
 <tr><td><code>dimensionsSpec</code></td><td>Custom dimensions spec. The compaction task uses the specified dimensions spec if it exists instead of generating one.</td><td>No</td></tr>
 <tr><td><code>metricsSpec</code></td><td>Custom metrics spec. The compaction task uses the specified metrics spec rather than generating one.</td><td>No</td></tr>
 <tr><td><code>segmentGranularity</code></td><td>When set, the compaction task changes the segment granularity for the given interval.  Deprecated. Use <code>granularitySpec</code>.</td><td>No.</td></tr>
-<tr><td><code>tuningConfig</code></td><td><a href="/docs/latest/ingestion/native-batch.html#tuningconfig">Parallel indexing task tuningConfig</a>. <code>awaitSegmentAvailabilityTimeoutMillis</code> in the tuning config is not currently supported for compaction tasks. Do not set it to a non-zero value.</td><td>No</td></tr>
-<tr><td><code>context</code></td><td><a href="/docs/latest/ingestion/tasks.html#context">Task context</a></td><td>No</td></tr>
+<tr><td><code>tuningConfig</code></td><td><a href="/docs/0.22.1/ingestion/native-batch.html#tuningconfig">Parallel indexing task tuningConfig</a>. <code>awaitSegmentAvailabilityTimeoutMillis</code> in the tuning config is not currently supported for compaction tasks. Do not set it to a non-zero value.</td><td>No</td></tr>
+<tr><td><code>context</code></td><td><a href="/docs/0.22.1/ingestion/tasks.html#context">Task context</a></td><td>No</td></tr>
 <tr><td><code>granularitySpec</code></td><td>Custom <code>granularitySpec</code> to describe the <code>segmentGranularity</code> and <code>queryGranularity</code> for the compacted segments. See <a href="#compaction-granularity-spec">Compaction granularitySpec</a>.</td><td>No</td></tr>
 </tbody>
 </table>
 <blockquote>
 <p>Note: Use <code>granularitySpec</code> over <code>segmentGranularity</code> and only set one of these values. If you specify different values for these in the same compaction spec, the task fails.</p>
 </blockquote>
-<p>To control the number of result segments per time chunk, you can set <a href="/docs/latest/configuration/index.html#compaction-dynamic-configuration">maxRowsPerSegment</a> or <a href="/docs/latest/ingestion/native-batch.html#tuningconfig">numShards</a>.</p>
+<p>To control the number of result segments per time chunk, you can set <a href="/docs/0.22.1/configuration/index.html#compaction-dynamic-configuration">maxRowsPerSegment</a> or <a href="/docs/0.22.1/ingestion/native-batch.html#tuningconfig">numShards</a>.</p>
 <blockquote>
 <p>You can run multiple compaction tasks in parallel. For example, if you want to compact the data for a year, you are not limited to running a single task for the entire year. You can run 12 compaction tasks with month-long intervals.</p>
 </blockquote>
-<p>A compaction task internally generates an <code>index</code> task spec for performing compaction work with some fixed parameters. For example, its <code>inputSource</code> is always the <a href="/docs/latest/ingestion/native-batch.html#druid-input-source">DruidInputSource</a>, and <code>dimensionsSpec</code> and <code>metricsSpec</code> include all dimensions and metrics of the input segments by default.</p>
+<p>A compaction task internally generates an <code>index</code> task spec for performing compaction work with some fixed parameters. For example, its <code>inputSource</code> is always the <a href="/docs/0.22.1/ingestion/native-batch.html#druid-input-source">DruidInputSource</a>, and <code>dimensionsSpec</code> and <code>metricsSpec</code> include all dimensions and metrics of the input segments by default.</p>
 <p>Compaction tasks exit without doing anything and issue a failure status code in either of the following cases:</p>
 <ul>
 <li>If the interval you specify has no data segments loaded<br></li>
@@ -236,8 +236,8 @@ You can check that your segments are rolled up or not by using <a href="/docs/la
 <tr><th>Field</th><th>Description</th><th>Required</th></tr>
 </thead>
 <tbody>
-<tr><td><code>segmentGranularity</code></td><td>Time chunking period for the segment granularity. Defaults to 'null', which preserves the original segment granularity. Accepts all <a href="/docs/latest/querying/granularities.html">Query granularity</a> values.</td><td>No</td></tr>
-<tr><td><code>queryGranularity</code></td><td>Time chunking period for the query granularity. Defaults to 'null', which preserves the original query granularity. Accepts all <a href="/docs/latest/querying/granularities.html">Query granularity</a> values. Not supported for automatic compaction.</td><td>No</td></tr>
+<tr><td><code>segmentGranularity</code></td><td>Time chunking period for the segment granularity. Defaults to 'null', which preserves the original segment granularity. Accepts all <a href="/docs/0.22.1/querying/granularities.html">Query granularity</a> values.</td><td>No</td></tr>
+<tr><td><code>queryGranularity</code></td><td>Time chunking period for the query granularity. Defaults to 'null', which preserves the original query granularity. Accepts all <a href="/docs/0.22.1/querying/granularities.html">Query granularity</a> values. Not supported for automatic compaction.</td><td>No</td></tr>
 </tbody>
 </table>
 <p>For example, to set the segment granularity to &quot;day&quot; and the query granularity to &quot;hour&quot;:</p>
@@ -260,12 +260,12 @@ You can check that your segments are rolled up or not by using <a href="/docs/la
 <h2><a class="anchor" aria-hidden="true" id="learn-more"></a><a href="#learn-more" 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 the following topics for more information:</p>
 <ul>
-<li><a href="/docs/latest/operations/segment-optimization.html">Segment optimization</a> for guidance to determine if compaction will help in your case.</li>
-<li><a href="/docs/latest/design/coordinator.html#compacting-segments">Compacting Segments</a> for more on automatic compaction.</li>
-<li><a href="/docs/latest/operations/api-reference.html#compaction-configuration">Compaction Configuration API</a>
-and <a href="/docs/latest/configuration/index.html#compaction-dynamic-configuration">Compaction Configuration</a> for automatic compaction configuration information.</li>
+<li><a href="/docs/0.22.1/operations/segment-optimization.html">Segment optimization</a> for guidance to determine if compaction will help in your case.</li>
+<li><a href="/docs/0.22.1/design/coordinator.html#compacting-segments">Compacting Segments</a> for more on automatic compaction.</li>
+<li><a href="/docs/0.22.1/operations/api-reference.html#compaction-configuration">Compaction Configuration API</a>
+and <a href="/docs/0.22.1/configuration/index.html#compaction-dynamic-configuration">Compaction Configuration</a> for automatic compaction configuration information.</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/ingestion/data-management.html"><span class="arrow-prev">← </span><span>Data management</span></a><a class="docs-next button" href="/docs/latest/development/extensions-core/kafka-ingestion.html"><span>Apache Kafka</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#compaction-strategies">Compaction strategies</a></l [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/ingestion/data-management.html"><span class="arrow-prev">← </span><span>Data management</span></a><a class="docs-next button" href="/docs/0.22.1/development/extensions-core/kafka-ingestion.html"><span>Apache Kafka</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#compaction-strategies">Compaction strategies</a></l [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -282,6 +282,6 @@ and <a href="/docs/latest/configuration/index.html#compaction-dynamic-configurat
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/ingestion/data-formats.html b/docs/0.22.1/ingestion/data-formats.html
similarity index 90%
copy from docs/latest/ingestion/data-formats.html
copy to docs/0.22.1/ingestion/data-formats.html
index 0e21baf..47dafe2 100644
--- a/docs/latest/ingestion/data-formats.html
+++ b/docs/0.22.1/ingestion/data-formats.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>Data formats · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/ingestion/data-formats.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22.0" /><met [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Data formats · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/ingestion/data-formats.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22.1" /><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>< [...]
+            </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++) {
@@ -81,7 +81,7 @@
 We welcome any contributions to new formats.</p>
 <p>This page lists all default and core extension data formats supported by Druid.
 For additional data formats supported with community extensions,
-please see our <a href="/docs/latest/development/extensions.html#community-extensions">community extensions list</a>.</p>
+please see our <a href="/docs/0.22.1/development/extensions.html#community-extensions">community extensions list</a>.</p>
 <h2><a class="anchor" aria-hidden="true" id="formatting-the-data"></a><a href="#formatting-the-data" 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 following samples show data formats that are natively supported in Druid:</p>
 <p><em>JSON</em></p>
@@ -117,7 +117,7 @@ Unfortunately, the Input Format doesn't support all data formats or ingestion me
 Especially if you want to use the Hadoop ingestion, you still need to use the <a href="#parser">Parser</a>.
 If your data is formatted in some format not listed in this section, please consider using the Parser instead.</p>
 </blockquote>
-<p>All forms of Druid ingestion require some form of schema object. The format of the data to be ingested is specified using the <code>inputFormat</code> entry in your <a href="/docs/latest/ingestion/ingestion-spec.html#ioconfig"><code>ioConfig</code></a>.</p>
+<p>All forms of Druid ingestion require some form of schema object. The format of the data to be ingested is specified using the <code>inputFormat</code> entry in your <a href="/docs/0.22.1/ingestion/ingestion-spec.html#ioconfig"><code>ioConfig</code></a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="json"></a><a href="#json" 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>Configure the JSON <code>inputFormat</code> to load JSON data as follows:</p>
 <table>
@@ -188,9 +188,9 @@ If your data is formatted in some format not listed in this section, please cons
 }
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="orc"></a><a href="#orc" 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.2 [...]
-<p>To use the ORC input format, load the Druid Orc extension ( <a href="/docs/latest/development/extensions-core/orc.html"><code>druid-orc-extensions</code></a>).</p>
+<p>To use the ORC input format, load the Druid Orc extension ( <a href="/docs/0.22.1/development/extensions-core/orc.html"><code>druid-orc-extensions</code></a>).</p>
 <blockquote>
-<p>To upgrade from versions earlier than 0.15.0 to 0.15.0 or new, read <a href="/docs/latest/development/extensions-core/orc.html#migration-from-contrib-extension">Migration from 'contrib' extension</a>.</p>
+<p>To upgrade from versions earlier than 0.15.0 to 0.15.0 or new, read <a href="/docs/0.22.1/development/extensions-core/orc.html#migration-from-contrib-extension">Migration from 'contrib' extension</a>.</p>
 </blockquote>
 <p>Configure the ORC <code>inputFormat</code> to load ORC data as follows:</p>
 <table>
@@ -223,7 +223,7 @@ If your data is formatted in some format not listed in this section, please cons
 }
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="parquet"></a><a href="#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.5 0-.83.42-1.64 1- [...]
-<p>To use the Parquet input format load the Druid Parquet extension (<a href="/docs/latest/development/extensions-core/parquet.html"><code>druid-parquet-extensions</code></a>).</p>
+<p>To use the Parquet input format load the Druid Parquet extension (<a href="/docs/0.22.1/development/extensions-core/parquet.html"><code>druid-parquet-extensions</code></a>).</p>
 <p>Configure the Parquet <code>inputFormat</code> to load Parquet data as follows:</p>
 <table>
 <thead>
@@ -255,8 +255,8 @@ If your data is formatted in some format not listed in this section, please cons
 }
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="avro-stream"></a><a href="#avro-stream" 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>To use the Avro Stream input format load the Druid Avro extension (<a href="/docs/latest/development/extensions-core/avro.html"><code>druid-avro-extensions</code></a>).</p>
-<p>For more information on how Druid handles Avro types, see <a href="/docs/latest/development/extensions-core/avro.html#avro-types">Avro Types</a> section for</p>
+<p>To use the Avro Stream input format load the Druid Avro extension (<a href="/docs/0.22.1/development/extensions-core/avro.html"><code>druid-avro-extensions</code></a>).</p>
+<p>For more information on how Druid handles Avro types, see <a href="/docs/0.22.1/development/extensions-core/avro.html#avro-types">Avro Types</a> section for</p>
 <p>Configure the Avro <code>inputFormat</code> to load Avro data as follows:</p>
 <table>
 <thead>
@@ -407,8 +407,8 @@ For details, see the Schema Registry <a href="http://docs.confluent.io/current/s
 <tr><td>url</td><td>String</td><td>Specifies the url endpoint of the Schema Registry.</td><td>yes</td></tr>
 <tr><td>capacity</td><td>Integer</td><td>Specifies the max size of the cache (default = Integer.MAX_VALUE).</td><td>no</td></tr>
 <tr><td>urls</td><td>Array<String></td><td>Specifies the url endpoints of the multiple Schema Registry instances.</td><td>yes(if <code>url</code> is not provided)</td></tr>
-<tr><td>config</td><td>Json</td><td>To send additional configurations, configured for Schema Registry.  This can be supplied via a <a href="/docs/latest/operations/dynamic-config-provider.html">DynamicConfigProvider</a></td><td>no</td></tr>
-<tr><td>headers</td><td>Json</td><td>To send headers to the Schema Registry.  This can be supplied via a <a href="/docs/latest/operations/dynamic-config-provider.html">DynamicConfigProvider</a></td><td>no</td></tr>
+<tr><td>config</td><td>Json</td><td>To send additional configurations, configured for Schema Registry.  This can be supplied via a <a href="/docs/0.22.1/operations/dynamic-config-provider.html">DynamicConfigProvider</a></td><td>no</td></tr>
+<tr><td>headers</td><td>Json</td><td>To send headers to the Schema Registry.  This can be supplied via a <a href="/docs/0.22.1/operations/dynamic-config-provider.html">DynamicConfigProvider</a></td><td>no</td></tr>
 </tbody>
 </table>
 <p>For a single schema registry instance, use Field <code>url</code> or <code>urls</code> for multi instances.</p>
@@ -452,8 +452,8 @@ For details, see the Schema Registry <a href="http://docs.confluent.io/current/s
 ...
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="avro-ocf"></a><a href="#avro-ocf" 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>To load the Avro OCF input format, load the Druid Avro extension (<a href="/docs/latest/development/extensions-core/avro.html"><code>druid-avro-extensions</code></a>).</p>
-<p>See the <a href="/docs/latest/development/extensions-core/avro.html#avro-types">Avro Types</a> section for how Avro types are handled in Druid</p>
+<p>To load the Avro OCF input format, load the Druid Avro extension (<a href="/docs/0.22.1/development/extensions-core/avro.html"><code>druid-avro-extensions</code></a>).</p>
+<p>See the <a href="/docs/0.22.1/development/extensions-core/avro.html#avro-types">Avro Types</a> section for how Avro types are handled in Druid</p>
 <p>Configure the Avro OCF <code>inputFormat</code> to load Avro OCF data as follows:</p>
 <table>
 <thead>
@@ -502,7 +502,7 @@ For details, see the Schema Registry <a href="http://docs.confluent.io/current/s
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="protobuf"></a><a href="#protobuf" 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  [...]
 <blockquote>
-<p>You need to include the <a href="/docs/latest/development/extensions-core/protobuf.html"><code>druid-protobuf-extensions</code></a> as an extension to use the Protobuf input format.</p>
+<p>You need to include the <a href="/docs/0.22.1/development/extensions-core/protobuf.html"><code>druid-protobuf-extensions</code></a> as an extension to use the Protobuf input format.</p>
 </blockquote>
 <p>Configure the Protobuf <code>inputFormat</code> to load Protobuf data as follows:</p>
 <table>
@@ -546,7 +546,7 @@ For details, see the Schema Registry <a href="http://docs.confluent.io/current/s
 <tr><th>Field</th><th>Description</th><th>Default</th></tr>
 </thead>
 <tbody>
-<tr><td>useFieldDiscovery</td><td>If true, interpret all root-level fields as available fields for usage by <a href="/docs/latest/ingestion/ingestion-spec.html#timestampspec"><code>timestampSpec</code></a>, <a href="/docs/latest/ingestion/ingestion-spec.html#transformspec"><code>transformSpec</code></a>, <a href="/docs/latest/ingestion/ingestion-spec.html#dimensionsspec"><code>dimensionsSpec</code></a>, and <a href="/docs/latest/ingestion/ingestion-spec.html#metricsspec"><code>metricsSpe [...]
+<tr><td>useFieldDiscovery</td><td>If true, interpret all root-level fields as available fields for usage by <a href="/docs/0.22.1/ingestion/ingestion-spec.html#timestampspec"><code>timestampSpec</code></a>, <a href="/docs/0.22.1/ingestion/ingestion-spec.html#transformspec"><code>transformSpec</code></a>, <a href="/docs/0.22.1/ingestion/ingestion-spec.html#dimensionsspec"><code>dimensionsSpec</code></a>, and <a href="/docs/0.22.1/ingestion/ingestion-spec.html#metricsspec"><code>metricsSpe [...]
 <tr><td>fields</td><td>Specifies the fields of interest and how they are accessed. See <a href="#field-flattening-specifications">Field flattening specifications</a> for more detail.</td><td><code>[]</code></td></tr>
 </tbody>
 </table>
@@ -560,11 +560,11 @@ For details, see the Schema Registry <a href="http://docs.confluent.io/current/s
   ]
 }
 </code></pre>
-<p>After Druid reads the input data records, it applies the flattenSpec before applying any other specs such as <a href="/docs/latest/ingestion/ingestion-spec.html#timestampspec"><code>timestampSpec</code></a>, <a href="/docs/latest/ingestion/ingestion-spec.html#transformspec"><code>transformSpec</code></a>,</p>
+<p>After Druid reads the input data records, it applies the flattenSpec before applying any other specs such as <a href="/docs/0.22.1/ingestion/ingestion-spec.html#timestampspec"><code>timestampSpec</code></a>, <a href="/docs/0.22.1/ingestion/ingestion-spec.html#transformspec"><code>transformSpec</code></a>,</p>
 <blockquote>
-<p><a href="/docs/latest/ingestion/ingestion-spec.html#dimensionsspec"><code>dimensionsSpec</code></a>, or <a href="/docs/latest/ingestion/ingestion-spec.html#metricsspec"><code>metricsSpec</code></a>. Keep this in mind when writing your ingestion spec.</p>
+<p><a href="/docs/0.22.1/ingestion/ingestion-spec.html#dimensionsspec"><code>dimensionsSpec</code></a>, or <a href="/docs/0.22.1/ingestion/ingestion-spec.html#metricsspec"><code>metricsSpec</code></a>. Keep this in mind when writing your ingestion spec.</p>
 </blockquote>
-<p>Flattening is only supported for <a href="/docs/latest/ingestion/data-formats.html">data formats</a> that support nesting, including <code>avro</code>, <code>json</code>, <code>orc</code>,
+<p>Flattening is only supported for <a href="/docs/0.22.1/ingestion/data-formats.html">data formats</a> that support nesting, including <code>avro</code>, <code>json</code>, <code>orc</code>,
 and <code>parquet</code>.</p>
 <h4><a class="anchor" aria-hidden="true" id="field-flattening-specifications"></a><a href="#field-flattening-specifications" 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 [...]
 <p>Each entry in the <code>fields</code> list can have the following components:</p>
@@ -574,7 +574,7 @@ and <code>parquet</code>.</p>
 </thead>
 <tbody>
 <tr><td>type</td><td>Options are as follows:<br><br><ul><li><code>root</code>, referring to a field at the root level of the record. Only really useful if <code>useFieldDiscovery</code> is false.</li><li><code>path</code>, referring to a field using <a href="https://github.com/jayway/JsonPath">JsonPath</a> notation. Supported by most data formats that offer nesting, including <code>avro</code>, <code>json</code>, <code>orc</code>, and <code>parquet</code>.</li><li><code>jq</code>, referr [...]
-<tr><td>name</td><td>Name of the field after flattening. This name can be referred to by the <a href="/docs/latest/ingestion/ingestion-spec.html#timestampspec"><code>timestampSpec</code></a>, <a href="/docs/latest/ingestion/ingestion-spec.html#transformspec"><code>transformSpec</code></a>, <a href="/docs/latest/ingestion/ingestion-spec.html#dimensionsspec"><code>dimensionsSpec</code></a>, and <a href="/docs/latest/ingestion/ingestion-spec.html#metricsspec"><code>metricsSpec</code></a>.</ [...]
+<tr><td>name</td><td>Name of the field after flattening. This name can be referred to by the <a href="/docs/0.22.1/ingestion/ingestion-spec.html#timestampspec"><code>timestampSpec</code></a>, <a href="/docs/0.22.1/ingestion/ingestion-spec.html#transformspec"><code>transformSpec</code></a>, <a href="/docs/0.22.1/ingestion/ingestion-spec.html#dimensionsspec"><code>dimensionsSpec</code></a>, and <a href="/docs/0.22.1/ingestion/ingestion-spec.html#metricsspec"><code>metricsSpec</code></a>.</ [...]
 <tr><td>expr</td><td>Expression for accessing the field while flattening. For type <code>path</code>, this should be <a href="https://github.com/jayway/JsonPath">JsonPath</a>. For type <code>jq</code>, this should be <a href="https://github.com/eiiches/jackson-jq">jackson-jq</a> notation. For other types, this parameter is ignored.</td><td>none (required for types <code>path</code> and <code>jq</code>)</td></tr>
 </tbody>
 </table>
@@ -589,12 +589,12 @@ and <code>parquet</code>.</p>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="parser"></a><a href="#parser" 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. [...]
 <blockquote>
-<p>The Parser is deprecated for <a href="/docs/latest/ingestion/native-batch.html">native batch tasks</a>, <a href="/docs/latest/development/extensions-core/kafka-ingestion.html">Kafka indexing service</a>,
-and <a href="/docs/latest/development/extensions-core/kinesis-ingestion.html">Kinesis indexing service</a>.
+<p>The Parser is deprecated for <a href="/docs/0.22.1/ingestion/native-batch.html">native batch tasks</a>, <a href="/docs/0.22.1/development/extensions-core/kafka-ingestion.html">Kafka indexing service</a>,
+and <a href="/docs/0.22.1/development/extensions-core/kinesis-ingestion.html">Kinesis indexing service</a>.
 Consider using the <a href="#input-format">input format</a> instead for these types of ingestion.</p>
 </blockquote>
 <p>This section lists all default and core extension parsers.
-For community extension parsers, please see our <a href="/docs/latest/development/extensions.html#community-extensions">community extensions list</a>.</p>
+For community extension parsers, please see our <a href="/docs/0.22.1/development/extensions.html#community-extensions">community extensions list</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="string-parser"></a><a href="#string-parser" 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><code>string</code> typed parsers operate on text based inputs that can be split into individual records by newlines.
 Each line can be further parsed using <a href="#parsespec"><code>parseSpec</code></a>.</p>
@@ -609,12 +609,12 @@ Each line can be further parsed using <a href="#parsespec"><code>parseSpec</code
 </table>
 <h3><a class="anchor" aria-hidden="true" id="avro-hadoop-parser"></a><a href="#avro-hadoop-parser" 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- [...]
 <blockquote>
-<p>You need to include the <a href="/docs/latest/development/extensions-core/avro.html"><code>druid-avro-extensions</code></a> as an extension to use the Avro Hadoop Parser.</p>
+<p>You need to include the <a href="/docs/0.22.1/development/extensions-core/avro.html"><code>druid-avro-extensions</code></a> as an extension to use the Avro Hadoop Parser.</p>
 </blockquote>
 <blockquote>
-<p>See the <a href="/docs/latest/development/extensions-core/avro.html#avro-types">Avro Types</a> section for how Avro types are handled in Druid</p>
+<p>See the <a href="/docs/0.22.1/development/extensions-core/avro.html#avro-types">Avro Types</a> section for how Avro types are handled in Druid</p>
 </blockquote>
-<p>This parser is for <a href="/docs/latest/ingestion/hadoop.html">Hadoop batch ingestion</a>.
+<p>This parser is for <a href="/docs/0.22.1/ingestion/hadoop.html">Hadoop batch ingestion</a>.
 The <code>inputFormat</code> of <code>inputSpec</code> in <code>ioConfig</code> must be set to <code>&quot;org.apache.druid.data.input.avro.AvroValueInputFormat&quot;</code>.
 You may want to set Avro reader's schema in <code>jobProperties</code> in <code>tuningConfig</code>,
 e.g.: <code>&quot;avro.schema.input.value.path&quot;: &quot;/path/to/your/schema.avsc&quot;</code> or
@@ -667,13 +667,13 @@ field types, which can be used to read nested Avro records. The &quot;jq&quot; f
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="orc-hadoop-parser"></a><a href="#orc-hadoop-parser" 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- [...]
 <blockquote>
-<p>You need to include the <a href="/docs/latest/development/extensions-core/orc.html"><code>druid-orc-extensions</code></a> as an extension to use the ORC Hadoop Parser.</p>
+<p>You need to include the <a href="/docs/0.22.1/development/extensions-core/orc.html"><code>druid-orc-extensions</code></a> as an extension to use the ORC Hadoop Parser.</p>
 </blockquote>
 <blockquote>
 <p>If you are considering upgrading from earlier than 0.15.0 to 0.15.0 or a higher version,
-please read <a href="/docs/latest/development/extensions-core/orc.html#migration-from-contrib-extension">Migration from 'contrib' extension</a> carefully.</p>
+please read <a href="/docs/0.22.1/development/extensions-core/orc.html#migration-from-contrib-extension">Migration from 'contrib' extension</a> carefully.</p>
 </blockquote>
-<p>This parser is for <a href="/docs/latest/ingestion/hadoop.html">Hadoop batch ingestion</a>.
+<p>This parser is for <a href="/docs/0.22.1/ingestion/hadoop.html">Hadoop batch ingestion</a>.
 The <code>inputFormat</code> of <code>inputSpec</code> in <code>ioConfig</code> must be set to <code>&quot;org.apache.orc.mapreduce.OrcInputFormat&quot;</code>.</p>
 <table>
 <thead>
@@ -890,9 +890,9 @@ setting <code>&quot;mapreduce.job.user.classpath.first&quot;: &quot;true&quot;</
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="parquet-hadoop-parser"></a><a href="#parquet-hadoop-parser" 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 [...]
 <blockquote>
-<p>You need to include the <a href="/docs/latest/development/extensions-core/parquet.html"><code>druid-parquet-extensions</code></a> as an extension to use the Parquet Hadoop Parser.</p>
+<p>You need to include the <a href="/docs/0.22.1/development/extensions-core/parquet.html"><code>druid-parquet-extensions</code></a> as an extension to use the Parquet Hadoop Parser.</p>
 </blockquote>
-<p>The Parquet Hadoop parser is for <a href="/docs/latest/ingestion/hadoop.html">Hadoop batch ingestion</a> and parses Parquet files directly.
+<p>The Parquet Hadoop parser is for <a href="/docs/0.22.1/ingestion/hadoop.html">Hadoop batch ingestion</a> and parses Parquet files directly.
 The <code>inputFormat</code> of <code>inputSpec</code> in <code>ioConfig</code> must be set to <code>org.apache.druid.data.input.parquet.DruidParquetInputFormat</code>.</p>
 <p>The Parquet Hadoop Parser supports auto field discovery and flattening if provided with a
 <a href="#flattenspec"><code>flattenSpec</code></a> with the <code>parquet</code> <code>parseSpec</code>. Parquet nested list and map
@@ -1029,10 +1029,10 @@ Parquet files. See <a href="#parquet-hadoop-parser-vs-parquet-avro-hadoop-parser
 for the differences between those parsers.</p>
 </blockquote>
 <blockquote>
-<p>You need to include both the <a href="/docs/latest/development/extensions-core/parquet.html"><code>druid-parquet-extensions</code></a>
+<p>You need to include both the <a href="/docs/0.22.1/development/extensions-core/parquet.html"><code>druid-parquet-extensions</code></a>
 [<code>druid-avro-extensions</code>] as extensions to use the Parquet Avro Hadoop Parser.</p>
 </blockquote>
-<p>The Parquet Avro Hadoop Parser is for <a href="/docs/latest/ingestion/hadoop.html">Hadoop batch ingestion</a>.
+<p>The Parquet Avro Hadoop Parser is for <a href="/docs/0.22.1/ingestion/hadoop.html">Hadoop batch ingestion</a>.
 This parser first converts the Parquet data into Avro records, and then parses them to ingest into Druid.
 The <code>inputFormat</code> of <code>inputSpec</code> in <code>ioConfig</code> must be set to <code>org.apache.druid.data.input.parquet.DruidParquetAvroInputFormat</code>.</p>
 <p>The Parquet Avro Hadoop Parser supports auto field discovery and flattening if provided with a
@@ -1109,12 +1109,12 @@ an explicitly defined <a href="http://www.joda.org/joda-time/apidocs/org/joda/ti
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="avro-stream-parser"></a><a href="#avro-stream-parser" 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- [...]
 <blockquote>
-<p>You need to include the <a href="/docs/latest/development/extensions-core/avro.html"><code>druid-avro-extensions</code></a> as an extension to use the Avro Stream Parser.</p>
+<p>You need to include the <a href="/docs/0.22.1/development/extensions-core/avro.html"><code>druid-avro-extensions</code></a> as an extension to use the Avro Stream Parser.</p>
 </blockquote>
 <blockquote>
-<p>See the <a href="/docs/latest/development/extensions-core/avro.html#avro-types">Avro Types</a> section for how Avro types are handled in Druid</p>
+<p>See the <a href="/docs/0.22.1/development/extensions-core/avro.html#avro-types">Avro Types</a> section for how Avro types are handled in Druid</p>
 </blockquote>
-<p>This parser is for <a href="/docs/latest/ingestion/index.html#streaming">stream ingestion</a> and reads Avro data from a stream directly.</p>
+<p>This parser is for <a href="/docs/0.22.1/ingestion/index.html#streaming">stream ingestion</a> and reads Avro data from a stream directly.</p>
 <table>
 <thead>
 <tr><th>Field</th><th>Type</th><th>Description</th><th>Required</th></tr>
@@ -1151,9 +1151,9 @@ field types, which can be used to read nested Avro records. The &quot;jq&quot; f
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="protobuf-parser"></a><a href="#protobuf-parser" 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  [...]
 <blockquote>
-<p>You need to include the <a href="/docs/latest/development/extensions-core/protobuf.html"><code>druid-protobuf-extensions</code></a> as an extension to use the Protobuf Parser.</p>
+<p>You need to include the <a href="/docs/0.22.1/development/extensions-core/protobuf.html"><code>druid-protobuf-extensions</code></a> as an extension to use the Protobuf Parser.</p>
 </blockquote>
-<p>This parser is for <a href="/docs/latest/ingestion/index.html#streaming">stream ingestion</a> and reads Protocol buffer data from a stream directly.</p>
+<p>This parser is for <a href="/docs/0.22.1/ingestion/index.html#streaming">stream ingestion</a> and reads Protocol buffer data from a stream directly.</p>
 <table>
 <thead>
 <tr><th>Field</th><th>Type</th><th>Description</th><th>Required</th></tr>
@@ -1195,7 +1195,7 @@ field types, which can be used to read nested Avro records. The &quot;jq&quot; f
   }
 }
 </code></pre>
-<p>See the <a href="/docs/latest/development/extensions-core/protobuf.html">extension description</a> for
+<p>See the <a href="/docs/0.22.1/development/extensions-core/protobuf.html">extension description</a> for
 more details and examples.</p>
 <h4><a class="anchor" aria-hidden="true" id="protobuf-bytes-decoder"></a><a href="#protobuf-bytes-decoder" 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>If <code>type</code> is not included, the <code>protoBytesDecoder</code> defaults to <code>schema_registry</code>.</p>
@@ -1230,8 +1230,8 @@ For details, see the Schema Registry <a href="http://docs.confluent.io/current/s
 <tr><td>url</td><td>String</td><td>Specifies the url endpoint of the Schema Registry.</td><td>yes</td></tr>
 <tr><td>capacity</td><td>Integer</td><td>Specifies the max size of the cache (default = Integer.MAX_VALUE).</td><td>no</td></tr>
 <tr><td>urls</td><td>Array<String></td><td>Specifies the url endpoints of the multiple Schema Registry instances.</td><td>yes(if <code>url</code> is not provided)</td></tr>
-<tr><td>config</td><td>Json</td><td>To send additional configurations, configured for Schema Registry. This can be supplied via a <a href="/docs/latest/operations/dynamic-config-provider.html">DynamicConfigProvider</a>.</td><td>no</td></tr>
-<tr><td>headers</td><td>Json</td><td>To send headers to the Schema Registry.  This can be supplied via a <a href="/docs/latest/operations/dynamic-config-provider.html">DynamicConfigProvider</a></td><td>no</td></tr>
+<tr><td>config</td><td>Json</td><td>To send additional configurations, configured for Schema Registry. This can be supplied via a <a href="/docs/0.22.1/operations/dynamic-config-provider.html">DynamicConfigProvider</a>.</td><td>no</td></tr>
+<tr><td>headers</td><td>Json</td><td>To send headers to the Schema Registry.  This can be supplied via a <a href="/docs/0.22.1/operations/dynamic-config-provider.html">DynamicConfigProvider</a></td><td>no</td></tr>
 </tbody>
 </table>
 <p>For a single schema registry instance, use Field <code>url</code> or <code>urls</code> for multi instances.</p>
@@ -1276,8 +1276,8 @@ For details, see the Schema Registry <a href="http://docs.confluent.io/current/s
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="parsespec"></a><a href="#parsespec" 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 [...]
 <blockquote>
-<p>The Parser is deprecated for <a href="/docs/latest/ingestion/native-batch.html">native batch tasks</a>, <a href="/docs/latest/development/extensions-core/kafka-ingestion.html">Kafka indexing service</a>,
-and <a href="/docs/latest/development/extensions-core/kinesis-ingestion.html">Kinesis indexing service</a>.
+<p>The Parser is deprecated for <a href="/docs/0.22.1/ingestion/native-batch.html">native batch tasks</a>, <a href="/docs/0.22.1/development/extensions-core/kafka-ingestion.html">Kafka indexing service</a>,
+and <a href="/docs/0.22.1/development/extensions-core/kinesis-ingestion.html">Kinesis indexing service</a>.
 Consider using the <a href="#input-format">input format</a> instead for these types of ingestion.</p>
 </blockquote>
 <p>ParseSpecs serve two purposes:</p>
@@ -1433,7 +1433,7 @@ columns names (&quot;column_1&quot;, &quot;column2&quot;, ... &quot;column_n&quo
 <p>Note with the JavaScript parser that data must be fully parsed and returned as a <code>{key:value}</code> format in the JS logic.
 This means any flattening or parsing multi-dimensional values must be done here.</p>
 <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.22.1/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="timeanddims-parsespec"></a><a href="#timeanddims-parsespec" 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>Use this with non-String Parsers to provide them with timestamp and dimensions information. Non-String Parsers
@@ -1474,7 +1474,7 @@ handle all formatting decisions on their own, without using the ParseSpec.</p>
 <tr><td>flattenSpec</td><td>JSON Object</td><td>Specifies flattening configuration for nested JSON data. See <a href="#flattenspec"><code>flattenSpec</code></a> for more info.</td><td>no</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/ingestion/index.html"><span class="arrow-prev">← </span><span>Ingestion</span></a><a class="docs-next button" href="/docs/latest/ingestion/data-model.html"><span>Data model</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#formatting-the-data">Formatting the Data</a></li><li><a href="#custom-formats">Custom Format [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/ingestion/index.html"><span class="arrow-prev">← </span><span>Ingestion</span></a><a class="docs-next button" href="/docs/0.22.1/ingestion/data-model.html"><span>Data model</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#formatting-the-data">Formatting the Data</a></li><li><a href="#custom-formats">Custom Format [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -1491,6 +1491,6 @@ handle all formatting decisions on their own, without using the ParseSpec.</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/ingestion/data-management.html b/docs/0.22.1/ingestion/data-management.html
similarity index 72%
copy from docs/latest/ingestion/data-management.html
copy to docs/0.22.1/ingestion/data-management.html
index 34634de..68ea675 100644
--- a/docs/latest/ingestion/data-management.html
+++ b/docs/0.22.1/ingestion/data-management.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>Data management · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/ingestion/data-management.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22.0"  [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Data management · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/ingestion/data-management.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22.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++) {
@@ -78,7 +78,7 @@
   ~ under the License.
   -->
 Within the context of this topic data management refers to Apache Druid's data maintenance capabilities for existing datasources. There are several options to help you keep your data relevant and to help your Druid cluster remain performant. For example updating, reingesting, adding lookups, reindexing, or deleting data.
-<p>In addition to the tasks covered on this page, you can also use segment compaction to improve the layout of your existing data. Refer to <a href="/docs/latest/operations/segment-optimization.html">Segment optimization</a> to see if compaction will help in your environment. For an overview and steps to configure manual compaction tasks, see <a href="/docs/latest/ingestion/compaction.html">Compaction</a>.</p>
+<p>In addition to the tasks covered on this page, you can also use segment compaction to improve the layout of your existing data. Refer to <a href="/docs/0.22.1/operations/segment-optimization.html">Segment optimization</a> to see if compaction will help in your environment. For an overview and steps to configure manual compaction tasks, see <a href="/docs/0.22.1/ingestion/compaction.html">Compaction</a>.</p>
 <h2><a class="anchor" aria-hidden="true" id="adding-new-data-to-existing-datasources"></a><a href="#adding-new-data-to-existing-datasources" 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>Druid can insert new data to an existing datasource by appending new segments to existing segment sets. It can also add new data by merging an existing set of segments with new data and overwriting the original set.</p>
 <p>Druid does not support single-record updates by primary key.</p>
@@ -87,40 +87,40 @@ Within the context of this topic data management refers to Apache Druid's data m
 <p>Once you ingest some data in a dataSource for an interval and create Apache Druid segments, you might want to make changes to
 the ingested data. There are several ways this can be done.</p>
 <h3><a class="anchor" aria-hidden="true" id="using-lookups"></a><a href="#using-lookups" 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>If you have a dimension where values need to be updated frequently, try first using <a href="/docs/latest/querying/lookups.html">lookups</a>. A
+<p>If you have a dimension where values need to be updated frequently, try first using <a href="/docs/0.22.1/querying/lookups.html">lookups</a>. A
 classic use case of lookups is when you have an ID dimension stored in a Druid segment, and want to map the ID dimension to a
 human-readable String value that may need to be updated periodically.</p>
 <h3><a class="anchor" aria-hidden="true" id="reingesting-data"></a><a href="#reingesting-data" 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>If lookup-based techniques are not sufficient, you will need to reingest data into Druid for the time chunks that you
-want to update. This can be done using one of the <a href="/docs/latest/ingestion/index.html#batch">batch ingestion methods</a> in overwrite mode (the
-default mode). It can also be done using <a href="/docs/latest/ingestion/index.html#streaming">streaming ingestion</a>, provided you drop data for the
+want to update. This can be done using one of the <a href="/docs/0.22.1/ingestion/index.html#batch">batch ingestion methods</a> in overwrite mode (the
+default mode). It can also be done using <a href="/docs/0.22.1/ingestion/index.html#streaming">streaming ingestion</a>, provided you drop data for the
 relevant time chunks first.</p>
 <p>If you do the reingestion in batch mode, Druid's atomic update mechanism means that queries will flip seamlessly from
 the old data to the new data.</p>
 <p>We recommend keeping a copy of your raw data around in case you ever need to reingest it.</p>
 <h3><a class="anchor" aria-hidden="true" id="with-hadoop-based-ingestion"></a><a href="#with-hadoop-based-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 1 [...]
 <p>This section assumes you understand how to do batch ingestion using Hadoop. See
-<a href="/docs/latest/ingestion/hadoop.html">Hadoop batch ingestion</a> for more information. Hadoop batch-ingestion can be used for reindexing and delta ingestion.</p>
+<a href="/docs/0.22.1/ingestion/hadoop.html">Hadoop batch ingestion</a> for more information. Hadoop batch-ingestion can be used for reindexing and delta ingestion.</p>
 <p>Druid uses an <code>inputSpec</code> in the <code>ioConfig</code> to know where the data to be ingested is located and how to read it.
 For simple Hadoop batch ingestion, <code>static</code> or <code>granularity</code> spec types allow you to read data stored in deep storage.</p>
 <p>There are other types of <code>inputSpec</code> to enable reindexing and delta ingestion.</p>
 <h3><a class="anchor" aria-hidden="true" id="reindexing-with-native-batch-ingestion"></a><a href="#reindexing-with-native-batch-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. [...]
-<p>This section assumes you understand how to do batch ingestion without Hadoop using <a href="/docs/latest/ingestion/native-batch.html">native batch indexing</a>. Native batch indexing uses an <code>inputSource</code> to know where and how to read the input data. You can use the <a href="/docs/latest/ingestion/native-batch.html#druid-input-source"><code>DruidInputSource</code></a> to read data from segments inside Druid. You can use Parallel task (<code>index_parallel</code>) for all na [...]
+<p>This section assumes you understand how to do batch ingestion without Hadoop using <a href="/docs/0.22.1/ingestion/native-batch.html">native batch indexing</a>. Native batch indexing uses an <code>inputSource</code> to know where and how to read the input data. You can use the <a href="/docs/0.22.1/ingestion/native-batch.html#druid-input-source"><code>DruidInputSource</code></a> to read data from segments inside Druid. You can use Parallel task (<code>index_parallel</code>) for all na [...]
 <p><a name="delete"></a></p>
 <h2><a class="anchor" aria-hidden="true" id="deleting-data"></a><a href="#deleting-data" 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 supports permanent deletion of segments that are in an &quot;unused&quot; state (see the
-<a href="/docs/latest/design/architecture.html#segment-lifecycle">Segment lifecycle</a> section of the Architecture page).</p>
+<a href="/docs/0.22.1/design/architecture.html#segment-lifecycle">Segment lifecycle</a> section of the Architecture page).</p>
 <p>The Kill Task deletes unused segments within a specified interval from metadata storage and deep storage.</p>
-<p>For more information, please see <a href="/docs/latest/ingestion/tasks.html#kill">Kill Task</a>.</p>
+<p>For more information, please see <a href="/docs/0.22.1/ingestion/tasks.html#kill">Kill Task</a>.</p>
 <p>Permanent deletion of a segment in Apache Druid has two steps:</p>
 <ol>
 <li>The segment must first be marked as &quot;unused&quot;. This occurs when a segment is dropped by retention rules, and when a user manually disables a segment through the Coordinator API.</li>
 <li>After segments have been marked as &quot;unused&quot;, a Kill Task will delete any &quot;unused&quot; segments from Druid's metadata store as well as deep storage.</li>
 </ol>
-<p>For documentation on retention rules, please see <a href="/docs/latest/operations/rule-configuration.html">Data Retention</a>.</p>
+<p>For documentation on retention rules, please see <a href="/docs/0.22.1/operations/rule-configuration.html">Data Retention</a>.</p>
 <p>For documentation on disabling segments using the Coordinator API, please see the
-<a href="/docs/latest/operations/api-reference.html#coordinator-datasources">Coordinator Datasources API</a> reference.</p>
-<p>A data deletion tutorial is available at <a href="/docs/latest/tutorials/tutorial-delete-data.html">Tutorial: Deleting data</a></p>
+<a href="/docs/0.22.1/operations/api-reference.html#coordinator-datasources">Coordinator Datasources API</a> reference.</p>
+<p>A data deletion tutorial is available at <a href="/docs/0.22.1/tutorials/tutorial-delete-data.html">Tutorial: Deleting data</a></p>
 <h2><a class="anchor" aria-hidden="true" id="kill-task"></a><a href="#kill-task" 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 kill task deletes all information about segments and removes them from deep storage. Segments to kill must be unused (used==0) in the Druid segment table.</p>
 <p>The available grammar is:</p>
@@ -139,14 +139,14 @@ For simple Hadoop batch ingestion, <code>static</code> or <code>granularity</cod
 <p>Druid supports retention rules, which are used to define intervals of time where data should be preserved, and intervals where data should be discarded.</p>
 <p>Druid also supports separating Historical processes into tiers, and the retention rules can be configured to assign data for specific intervals to specific tiers.</p>
 <p>These features are useful for performance/cost management; a common use case is separating Historical processes into a &quot;hot&quot; tier and a &quot;cold&quot; tier.</p>
-<p>For more information, please see <a href="/docs/latest/operations/rule-configuration.html">Load rules</a>.</p>
+<p>For more information, please see <a href="/docs/0.22.1/operations/rule-configuration.html">Load rules</a>.</p>
 <h2><a class="anchor" aria-hidden="true" id="learn-more"></a><a href="#learn-more" 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 the following topics for more information:</p>
 <ul>
-<li><a href="/docs/latest/ingestion/compaction.html">Compaction</a> for an overview and steps to configure manual compaction tasks.</li>
-<li><a href="/docs/latest/design/segments.html">Segments</a> for information on how Druid handles segment versioning.</li>
+<li><a href="/docs/0.22.1/ingestion/compaction.html">Compaction</a> for an overview and steps to configure manual compaction tasks.</li>
+<li><a href="/docs/0.22.1/design/segments.html">Segments</a> for information on how Druid handles segment versioning.</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/ingestion/schema-design.html"><span class="arrow-prev">← </span><span>Schema design tips</span></a><a class="docs-next button" href="/docs/latest/ingestion/compaction.html"><span>Compaction</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#adding-new-data-to-existing-datasources">Adding new data to existing dataso [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/ingestion/schema-design.html"><span class="arrow-prev">← </span><span>Schema design tips</span></a><a class="docs-next button" href="/docs/0.22.1/ingestion/compaction.html"><span>Compaction</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#adding-new-data-to-existing-datasources">Adding new data to existing dataso [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -163,6 +163,6 @@ For simple Hadoop batch ingestion, <code>static</code> or <code>granularity</cod
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/latest/ingestion/data-model.html b/docs/0.22.1/ingestion/data-model.html
similarity index 68%
copy from docs/latest/ingestion/data-model.html
copy to docs/0.22.1/ingestion/data-model.html
index 66b650e..6932701 100644
--- a/docs/latest/ingestion/data-model.html
+++ b/docs/0.22.1/ingestion/data-model.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>Druid data model · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/ingestion/data-model.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Introduces concepts of datasources, primary timestamp, dimensions, and metrics."/><meta name="docsearch:lang [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Druid data model · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/ingestion/data-model.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Introduces concepts of datasources, primary timestamp, dimensions, and metrics."/><meta name="docsearch:lang [...]
               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++) {
@@ -79,27 +79,27 @@
   -->
 <p>Druid stores data in datasources, which are similar to tables in a traditional relational database management system (RDBMS). Druid's data model shares  similarities with both relational and timeseries data models.</p>
 <h2><a class="anchor" aria-hidden="true" id="primary-timestamp"></a><a href="#primary-timestamp" 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 schemas must always include a primary timestamp. Druid uses the primary timestamp to <a href="/docs/latest/ingestion/partitioning.html">partition and sort</a> your data. Druid uses the primary timestamp to rapidly identify and retrieve data within the time range of queries. Druid also uses the primary timestamp column
-for time-based <a href="/docs/latest/ingestion/data-management.html">data management operations</a> such as dropping time chunks, overwriting time chunks, and time-based retention rules.</p>
-<p>Druid parses the primary timestamp based on the <a href="/docs/latest/ingestion/ingestion-spec.html#timestampspec"><code>timestampSpec</code></a> configuration at ingestion time. Regardless of the source field for the primary timestamp, Druid always stores the timestamp in the <code>__time</code> column in your Druid datasource.</p>
+<p>Druid schemas must always include a primary timestamp. Druid uses the primary timestamp to <a href="/docs/0.22.1/ingestion/partitioning.html">partition and sort</a> your data. Druid uses the primary timestamp to rapidly identify and retrieve data within the time range of queries. Druid also uses the primary timestamp column
+for time-based <a href="/docs/0.22.1/ingestion/data-management.html">data management operations</a> such as dropping time chunks, overwriting time chunks, and time-based retention rules.</p>
+<p>Druid parses the primary timestamp based on the <a href="/docs/0.22.1/ingestion/ingestion-spec.html#timestampspec"><code>timestampSpec</code></a> configuration at ingestion time. Regardless of the source field for the primary timestamp, Druid always stores the timestamp in the <code>__time</code> column in your Druid datasource.</p>
 <p>You can control other important operations that are based on the primary timestamp in the
-<a href="/docs/latest/ingestion/ingestion-spec.html#granularityspec"><code>granularitySpec</code></a>. If you have more than one timestamp column, you can store the others as
-<a href="/docs/latest/ingestion/schema-design.html#secondary-timestamps">secondary timestamps</a>.</p>
+<a href="/docs/0.22.1/ingestion/ingestion-spec.html#granularityspec"><code>granularitySpec</code></a>. If you have more than one timestamp column, you can store the others as
+<a href="/docs/0.22.1/ingestion/schema-design.html#secondary-timestamps">secondary timestamps</a>.</p>
 <h2><a class="anchor" aria-hidden="true" id="dimensions"></a><a href="#dimensions" 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>Dimensions are columns that Druid stores &quot;as-is&quot;. You can use dimensions for any purpose. For example, you can group, filter, or apply aggregators to dimensions at query time when necessary.</p>
-<p>If you disable <a href="/docs/latest/ingestion/rollup.html">rollup</a>, then Druid treats the set of
+<p>If you disable <a href="/docs/0.22.1/ingestion/rollup.html">rollup</a>, then Druid treats the set of
 dimensions like a set of columns to ingest. The dimensions behave exactly as you would expect from any database that does not support a rollup feature.</p>
-<p>At ingestion time, you configure dimensions in the <a href="/docs/latest/ingestion/ingestion-spec.html#dimensionsspec"><code>dimensionsSpec</code></a>.</p>
+<p>At ingestion time, you configure dimensions in the <a href="/docs/0.22.1/ingestion/ingestion-spec.html#dimensionsspec"><code>dimensionsSpec</code></a>.</p>
 <h2><a class="anchor" aria-hidden="true" id="metrics"></a><a href="#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.5 0-.83.42-1.64 1- [...]
-<p>Metrics are columns that Druid stores in an aggregated form. Metrics are most useful when you enable <a href="/docs/latest/ingestion/rollup.html">rollup</a>. If you specify a metric, you can apply an aggregation function to each row during ingestion. This
+<p>Metrics are columns that Druid stores in an aggregated form. Metrics are most useful when you enable <a href="/docs/0.22.1/ingestion/rollup.html">rollup</a>. If you specify a metric, you can apply an aggregation function to each row during ingestion. This
 has the following benefits:</p>
 <p>Rollup is a form of aggregation that collapses dimensions while aggregating the values in the metrics, that is, it collapses rows but retains its summary information.&quot;</p>
 <ul>
-<li><a href="/docs/latest/ingestion/rollup.html">Rollup</a> is a form of aggregation that combines multiple rows with the same timestamp value and dimension values. For example, the <a href="/docs/latest/tutorials/tutorial-rollup.html">rollup tutorial</a> demonstrates using rollup to collapse netflow data to a single row per <code>(minute, srcIP, dstIP)</code> tuple, while retaining aggregate information about total packet and byte counts.</li>
+<li><a href="/docs/0.22.1/ingestion/rollup.html">Rollup</a> is a form of aggregation that combines multiple rows with the same timestamp value and dimension values. For example, the <a href="/docs/0.22.1/tutorials/tutorial-rollup.html">rollup tutorial</a> demonstrates using rollup to collapse netflow data to a single row per <code>(minute, srcIP, dstIP)</code> tuple, while retaining aggregate information about total packet and byte counts.</li>
 <li>Druid can compute some aggregators, especially approximate ones, more quickly at query time if they are partially computed at ingestion time, including data that has not been rolled up.</li>
 </ul>
-<p>At ingestion time, you configure Metrics in the <a href="/docs/latest/ingestion/ingestion-spec.html#metricsspec"><code>metricsSpec</code></a>.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/ingestion/data-formats.html"><span class="arrow-prev">← </span><span>Data formats</span></a><a class="docs-next button" href="/docs/latest/ingestion/rollup.html"><span>Data rollup</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#primary-timestamp">Primary timestamp</a></li><li><a href="#dimensions">Dimensions</a> [...]
+<p>At ingestion time, you configure Metrics in the <a href="/docs/0.22.1/ingestion/ingestion-spec.html#metricsspec"><code>metricsSpec</code></a>.</p>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/ingestion/data-formats.html"><span class="arrow-prev">← </span><span>Data formats</span></a><a class="docs-next button" href="/docs/0.22.1/ingestion/rollup.html"><span>Data rollup</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#primary-timestamp">Primary timestamp</a></li><li><a href="#dimensions">Dimensions</a> [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -116,6 +116,6 @@ has the following benefits:</p>
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.22.1/ingestion/delete-data.html b/docs/0.22.1/ingestion/delete-data.html
new file mode 100644
index 0000000..83382a6
--- /dev/null
+++ b/docs/0.22.1/ingestion/delete-data.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="data-management.html#delete">
+<meta http-equiv="refresh" content="0; url=data-management.html#delete">
+<h1>Redirecting...</h1>
+<a href="data-management.html#delete">Click here if you are not redirected.</a>
+<script>location="data-management.html#delete"</script>
diff --git a/docs/latest/ingestion/faq.html b/docs/0.22.1/ingestion/faq.html
similarity index 75%
copy from docs/latest/ingestion/faq.html
copy to docs/0.22.1/ingestion/faq.html
index 4e65833..6bd35b0 100644
--- a/docs/latest/ingestion/faq.html
+++ b/docs/0.22.1/ingestion/faq.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>Ingestion troubleshooting FAQ · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/latest/ingestion/faq.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22.0 [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Ingestion troubleshooting FAQ · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.22.1/ingestion/faq.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.22.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++) {
@@ -80,11 +80,11 @@
 <h2><a class="anchor" aria-hidden="true" id="batch-ingestion"></a><a href="#batch-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  [...]
 <p>If you are trying to batch load historical data but no events are being loaded, make sure the interval of your ingestion spec actually encapsulates the interval of your data. Events outside this interval are dropped.</p>
 <h2><a class="anchor" aria-hidden="true" id="druid-ingested-my-events-but-i-they-are-not-in-my-query-results"></a><a href="#druid-ingested-my-events-but-i-they-are-not-in-my-query-results" 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 4H [...]
-<p>If the number of ingested events seem correct, make sure your query is correctly formed. If you included a <code>count</code> aggregator in your ingestion spec, you will need to query for the results of this aggregate with a <code>longSum</code> aggregator. Issuing a query with a count aggregator will count the number of Druid rows, which includes <a href="/docs/latest/design/index.html">roll-up</a>.</p>
+<p>If the number of ingested events seem correct, make sure your query is correctly formed. If you included a <code>count</code> aggregator in your ingestion spec, you will need to query for the results of this aggregate with a <code>longSum</code> aggregator. Issuing a query with a count aggregator will count the number of Druid rows, which includes <a href="/docs/0.22.1/design/index.html">roll-up</a>.</p>
 <h2><a class="anchor" aria-hidden="true" id="what-types-of-data-does-druid-support"></a><a href="#what-types-of-data-does-druid-support" 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>Druid can ingest JSON, CSV, TSV and other delimited data out of the box. Druid supports single dimension values, or multiple dimension values (an array of strings). Druid supports long, float, and double numeric columns.</p>
 <h2><a class="anchor" aria-hidden="true" id="where-do-my-druid-segments-end-up-after-ingestion"></a><a href="#where-do-my-druid-segments-end-up-after-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  [...]
-<p>Depending on what <code>druid.storage.type</code> is set to, Druid will upload segments to some <a href="/docs/latest/dependencies/deep-storage.html">Deep Storage</a>. Local disk is used as the default deep storage.</p>
+<p>Depending on what <code>druid.storage.type</code> is set to, Druid will upload segments to some <a href="/docs/0.22.1/dependencies/deep-storage.html">Deep Storage</a>. Local disk is used as the default deep storage.</p>
 <h2><a class="anchor" aria-hidden="true" id="my-stream-ingest-is-not-handing-segments-off"></a><a href="#my-stream-ingest-is-not-handing-segments-off" 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-1v [...]
 <p>First, make sure there are no exceptions in the logs of the ingestion process. Also make sure that <code>druid.storage.type</code> is set to a deep storage that isn't <code>local</code> if you are running a distributed cluster.</p>
 <p>Other common reasons that hand-off fails are as follows:</p>
@@ -95,44 +95,44 @@
 <li><p>Deep storage is improperly configured. Make sure that your segment actually exists in deep storage and that the Coordinator logs have no errors.</p></li>
 </ol>
 <h2><a class="anchor" aria-hidden="true" id="how-do-i-get-hdfs-to-work"></a><a href="#how-do-i-get-hdfs-to-work" 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>Make sure to include the <code>druid-hdfs-storage</code> and all the hadoop configuration, dependencies (that can be obtained by running command <code>hadoop classpath</code> on a machine where hadoop has been setup) in the classpath. And, provide necessary HDFS settings as described in <a href="/docs/latest/dependencies/deep-storage.html">deep storage</a> .</p>
+<p>Make sure to include the <code>druid-hdfs-storage</code> and all the hadoop configuration, dependencies (that can be obtained by running command <code>hadoop classpath</code> on a machine where hadoop has been setup) in the classpath. And, provide necessary HDFS settings as described in <a href="/docs/0.22.1/dependencies/deep-storage.html">deep storage</a> .</p>
 <h2><a class="anchor" aria-hidden="true" id="how-do-i-know-when-i-can-make-query-to-druid-after-submitting-batch-ingestion-task"></a><a href="#how-do-i-know-when-i-can-make-query-to-druid-after-submitting-batch-ingestion-task" 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 [...]
 <p>You can verify if segments created by a recent ingestion task are loaded onto historicals and available for querying using the following workflow.</p>
 <ol>
 <li>Submit your ingestion task.</li>
-<li>Repeatedly poll the <a href="/docs/latest/operations/api-reference.html#tasks">Overlord's tasks API</a> ( <code>/druid/indexer/v1/task/{taskId}/status</code>) until your task is shown to be successfully completed.</li>
-<li>Poll the <a href="/docs/latest/operations/api-reference.html#segment-loading-by-datasource">Segment Loading by Datasource API</a> (<code>/druid/coordinator/v1/datasources/{dataSourceName}/loadstatus</code>) with
+<li>Repeatedly poll the <a href="/docs/0.22.1/operations/api-reference.html#tasks">Overlord's tasks API</a> ( <code>/druid/indexer/v1/task/{taskId}/status</code>) until your task is shown to be successfully completed.</li>
+<li>Poll the <a href="/docs/0.22.1/operations/api-reference.html#segment-loading-by-datasource">Segment Loading by Datasource API</a> (<code>/druid/coordinator/v1/datasources/{dataSourceName}/loadstatus</code>) with
 <code>forceMetadataRefresh=true</code> and <code>interval=&lt;INTERVAL_OF_INGESTED_DATA&gt;</code> once.
 (Note: <code>forceMetadataRefresh=true</code> refreshes Coordinator's metadata cache of all datasources. This can be a heavy operation in terms of the load on the metadata store but is necessary to make sure that we verify all the latest segments' load status)
 If there are segments not yet loaded, continue to step 4, otherwise you can now query the data.</li>
-<li>Repeatedly poll the <a href="/docs/latest/operations/api-reference.html#segment-loading-by-datasource">Segment Loading by Datasource API</a> (<code>/druid/coordinator/v1/datasources/{dataSourceName}/loadstatus</code>) with
+<li>Repeatedly poll the <a href="/docs/0.22.1/operations/api-reference.html#segment-loading-by-datasource">Segment Loading by Datasource API</a> (<code>/druid/coordinator/v1/datasources/{dataSourceName}/loadstatus</code>) with
 <code>forceMetadataRefresh=false</code> and <code>interval=&lt;INTERVAL_OF_INGESTED_DATA&gt;</code>.
 Continue polling until all segments are loaded. Once all segments are loaded you can now query the data.
-Note that this workflow only guarantees that the segments are available at the time of the <a href="/docs/latest/operations/api-reference.html#segment-loading-by-datasource">Segment Loading by Datasource API</a> call. Segments can still become missing because of historical process failures or any other reasons afterward.</li>
+Note that this workflow only guarantees that the segments are available at the time of the <a href="/docs/0.22.1/operations/api-reference.html#segment-loading-by-datasource">Segment Loading by Datasource API</a> call. Segments can still become missing because of historical process failures or any other reasons afterward.</li>
 </ol>
 <h2><a class="anchor" aria-hidden="true" id="i-dont-see-my-druid-segments-on-my-historical-processes"></a><a href="#i-dont-see-my-druid-segments-on-my-historical-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- [...]
-<p>You can check the Coordinator console located at <code>&lt;COORDINATOR_IP&gt;:&lt;PORT&gt;</code>. Make sure that your segments have actually loaded on <a href="/docs/latest/design/historical.html">Historical processes</a>. If your segments are not present, check the Coordinator logs for messages about capacity of replication errors. One reason that segments are not downloaded is because Historical processes have maxSizes that are too small, making them incapable of downloading more d [...]
+<p>You can check the Coordinator console located at <code>&lt;COORDINATOR_IP&gt;:&lt;PORT&gt;</code>. Make sure that your segments have actually loaded on <a href="/docs/0.22.1/design/historical.html">Historical processes</a>. If your segments are not present, check the Coordinator logs for messages about capacity of replication errors. One reason that segments are not downloaded is because Historical processes have maxSizes that are too small, making them incapable of downloading more d [...]
 <pre><code class="hljs"><span class="hljs-attr">-Ddruid.segmentCache.locations</span>=[{<span class="hljs-string">"path"</span>:<span class="hljs-string">"/tmp/druid/storageLocation"</span>,<span class="hljs-string">"maxSize"</span>:<span class="hljs-string">"500000000000"</span>}]
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="my-queries-are-returning-empty-results"></a><a href="#my-queries-are-returning-empty-results" 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. [...]
-<p>You can use a <a href="/docs/latest/querying/segmentmetadataquery.html">segment metadata query</a> for the dimensions and metrics that have been created for your datasource. Make sure that the name of the aggregators you use in your query match one of these metrics. Also make sure that the query interval you specify match a valid time range where data exists.</p>
+<p>You can use a <a href="/docs/0.22.1/querying/segmentmetadataquery.html">segment metadata query</a> for the dimensions and metrics that have been created for your datasource. Make sure that the name of the aggregators you use in your query match one of these metrics. Also make sure that the query interval you specify match a valid time range where data exists.</p>
 <h2><a class="anchor" aria-hidden="true" id="how-can-i-reindex-existing-data-in-druid-with-schema-changes"></a><a href="#how-can-i-reindex-existing-data-in-druid-with-schema-changes" 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 [...]
-<p>You can use DruidInputSource with the <a href="/docs/latest/ingestion/native-batch.html">Parallel task</a> to ingest existing druid segments using a new schema and change the name, dimensions, metrics, rollup, etc. of the segment.
-See <a href="/docs/latest/ingestion/native-batch.html#druid-input-source">DruidInputSource</a> for more details.
+<p>You can use DruidInputSource with the <a href="/docs/0.22.1/ingestion/native-batch.html">Parallel task</a> to ingest existing druid segments using a new schema and change the name, dimensions, metrics, rollup, etc. of the segment.
+See <a href="/docs/0.22.1/ingestion/native-batch.html#druid-input-source">DruidInputSource</a> for more details.
 Or, if you use hadoop based ingestion, then you can use &quot;dataSource&quot; input spec to do reindexing.</p>
-<p>See the <a href="/docs/latest/ingestion/data-management.html#update">Update existing data</a> section of the data management page for more details.</p>
+<p>See the <a href="/docs/0.22.1/ingestion/data-management.html#update">Update existing data</a> section of the data management page for more details.</p>
 <h2><a class="anchor" aria-hidden="true" id="how-can-i-change-the-query-granularity-of-existing-data-in-druid"></a><a href="#how-can-i-change-the-query-granularity-of-existing-data-in-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  [...]
 <p>In a lot of situations you may want coarser granularity for older data. Example, any data older than 1 month has only hour level granularity but newer data has minute level granularity. This use case is same as re-indexing.</p>
-<p>To do this use the <a href="/docs/latest/ingestion/native-batch.html#druid-input-source">DruidInputSource</a> and run a <a href="/docs/latest/ingestion/native-batch.html">Parallel task</a>. The DruidInputSource will allow you to take in existing segments from Druid and aggregate them and feed them back into Druid. It will also allow you to filter the data in those segments while feeding it back in. This means if there are rows you want to delete, you can just filter them away during r [...]
+<p>To do this use the <a href="/docs/0.22.1/ingestion/native-batch.html#druid-input-source">DruidInputSource</a> and run a <a href="/docs/0.22.1/ingestion/native-batch.html">Parallel task</a>. The DruidInputSource will allow you to take in existing segments from Druid and aggregate them and feed them back into Druid. It will also allow you to filter the data in those segments while feeding it back in. This means if there are rows you want to delete, you can just filter them away during r [...]
 Typically the above will be run as a batch job to say everyday feed in a chunk of data and aggregate it.
 Or, if you use hadoop based ingestion, then you can use &quot;dataSource&quot; input spec to do reindexing.</p>
-<p>See the <a href="/docs/latest/ingestion/data-management.html#update">Update existing data</a> section of the data management page for more details.</p>
-<p>You can also change the query granularity using compaction. See <a href="/docs/latest/ingestion/compaction.html#query-granularity-handling">Query granularity handling</a>.</p>
+<p>See the <a href="/docs/0.22.1/ingestion/data-management.html#update">Update existing data</a> section of the data management page for more details.</p>
+<p>You can also change the query granularity using compaction. See <a href="/docs/0.22.1/ingestion/compaction.html#query-granularity-handling">Query granularity handling</a>.</p>
 <h2><a class="anchor" aria-hidden="true" id="real-time-ingestion-seems-to-be-stuck"></a><a href="#real-time-ingestion-seems-to-be-stuck" 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>There are a few ways this can occur. Druid will throttle ingestion to prevent out of memory problems if the intermediate persists are taking too long or if hand-off is taking too long. If your process logs indicate certain columns are taking a very long time to build (for example, if your segment granularity is hourly, but creating a single column takes 30 minutes), you should re-evaluate your configuration or scale up your real-time ingestion.</p>
 <h2><a class="anchor" aria-hidden="true" id="more-information"></a><a href="#more-information" 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>Data ingestion for Druid can be difficult for first time users. Please don't hesitate to ask questions in the <a href="https://www.druidforum.org/">Druid Forum</a>.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/latest/ingestion/tasks.html"><span class="arrow-prev">← </span><span>Task reference</span></a><a class="docs-next button" href="/docs/latest/querying/sql.html"><span>Druid SQL</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#batch-ingestion">Batch Ingestion</a></li><li><a href="#druid-ingested-my-events-but-i-they-are-n [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.22.1/ingestion/tasks.html"><span class="arrow-prev">← </span><span>Task reference</span></a><a class="docs-next button" href="/docs/0.22.1/querying/sql.html"><span>Druid SQL</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#batch-ingestion">Batch Ingestion</a></li><li><a href="#druid-ingested-my-events-but-i-they-are-n [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
@@ -149,6 +149,6 @@ Or, if you use hadoop based ingestion, then you can use &quot;dataSource&quot; i
                 apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
                 indexName: 'apache_druid',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.22.0"]}
+                algoliaOptions: {"facetFilters":["language:en","version:0.22.1"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/docs/0.22.1/ingestion/firehose.html b/docs/0.22.1/ingestion/firehose.html
new file mode 100644
index 0000000..fea729f
--- /dev/null
+++ b/docs/0.22.1/ingestion/firehose.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="native-batch.html#firehoses-deprecated">
+<meta http-equiv="refresh" content="0; url=native-batch.html#firehoses-deprecated">
+<h1>Redirecting...</h1>
+<a href="native-batch.html#firehoses-deprecated">Click here if you are not redirected.</a>
+<script>location="native-batch.html#firehoses-deprecated"</script>
diff --git a/docs/0.22.1/ingestion/hadoop-vs-native-batch.html b/docs/0.22.1/ingestion/hadoop-vs-native-batch.html
new file mode 100644
index 0000000..1cf97e2
--- /dev/null
+++ b/docs/0.22.1/ingestion/hadoop-vs-native-batch.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="index.html#batch">
+<meta http-equiv="refresh" content="0; url=index.html#batch">
+<h1>Redirecting...</h1>
+<a href="index.html#batch">Click here if you are not redirected.</a>
+<script>location="index.html#batch"</script>
diff --git a/docs/latest/ingestion/hadoop.html b/docs/0.22.1/ingestion/hadoop.html
similarity index 85%
copy from docs/latest/ingestion/hadoop.html
copy to docs/0.22.1/ingestion/hadoop.html
... 11686 lines suppressed ...

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