You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by yq...@apache.org on 2026/04/17 21:54:06 UTC
(druid-website) branch 37.0.0-staging created (now e3fbe67f0)
This is an automated email from the ASF dual-hosted git repository.
cecemei pushed a change to branch 37.0.0-staging
in repository https://gitbox.apache.org/repos/asf/druid-website.git
at e3fbe67f0 37.0.0-release
This branch includes the following new commits:
new e3fbe67f0 37.0.0-release
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org
(druid-website) 01/01: 37.0.0-release
Posted by yq...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
cecemei pushed a commit to branch 37.0.0-staging
in repository https://gitbox.apache.org/repos/asf/druid-website.git
commit e3fbe67f06e2d197da9635e67ec2c279ddbdd472
Author: cecemei <yi...@gmail.com>
AuthorDate: Fri Apr 17 14:53:44 2026 -0700
37.0.0-release
---
404.html | 4 +-
assets/css/styles.985b7036.css | 1 +
assets/js/01019b7b.499df2f1.js | 1 +
assets/js/0121958c.bac387cc.js | 1 +
assets/js/01286a6a.b9b82b1f.js | 1 +
assets/js/029322d6.1d57b2b9.js | 1 +
assets/js/03206f80.11d0c1e3.js | 1 +
assets/js/05bce26a.4c04200c.js | 1 +
assets/js/0604fc11.5fac6314.js | 1 +
assets/js/0805fa5b.09e05407.js | 1 +
assets/js/09d767c3.9a3857db.js | 1 +
assets/js/0b432fa0.24628107.js | 1 +
assets/js/0bfd5047.3141383f.js | 1 +
assets/js/0c83841d.00b491a9.js | 1 +
assets/js/0ddfffdf.cbbb7efc.js | 1 +
assets/js/0e1d85c5.f4ed46f2.js | 1 +
assets/js/0ed5ea13.04289f8c.js | 1 +
assets/js/0ef91942.a4e2121c.js | 1 +
assets/js/0f0fe4a1.6b14d446.js | 1 +
assets/js/0fa4abc7.99c59904.js | 1 +
assets/js/1105704f.a8177b17.js | 1 +
assets/js/12d97def.dd798d82.js | 1 +
assets/js/13ec796f.b3c8f69c.js | 1 +
assets/js/147ce3c4.1cd02089.js | 1 +
assets/js/147fd7c7.62bce2aa.js | 1 +
assets/js/14d41493.77da0810.js | 1 +
assets/js/169f08d2.4b518cc6.js | 1 +
assets/js/1773e92f.934d6984.js | 1 +
assets/js/180c7d3d.a2c03d1f.js | 1 +
assets/js/1981460b.cd212836.js | 1 +
assets/js/1a239e8f.96e31598.js | 1 +
assets/js/1b80b59d.691dcd3f.js | 1 +
assets/js/1c6ec3f0.bbb45872.js | 1 +
assets/js/1d411934.024ecade.js | 1 +
assets/js/1d5c3a27.f56891d6.js | 1 +
assets/js/1d603960.998a6f29.js | 1 +
assets/js/1dd1d0e3.462e5b00.js | 1 +
assets/js/21c6245e.bea565fd.js | 1 +
assets/js/231e0e4d.ee9ca30d.js | 1 +
assets/js/2334.e3e4d8cb.js | 1 +
assets/js/236e2666.cf929c6d.js | 1 +
assets/js/2677d7b8.b95f4e4b.js | 1 +
assets/js/26810935.209398ef.js | 1 +
assets/js/26ed7dd1.2e889882.js | 1 +
assets/js/274a38ba.cf8e49af.js | 1 +
assets/js/292ba8e7.18f93fb9.js | 1 +
assets/js/293487cb.9ecb147c.js | 1 +
assets/js/298bd804.55d3fae9.js | 1 +
assets/js/2c1d8538.706204d9.js | 1 +
assets/js/2cd80ed8.4cbfa7f3.js | 1 +
assets/js/2ded85e5.46495113.js | 1 +
assets/js/2fbe7d8e.c2b63b24.js | 1 +
assets/js/304690d0.3b8b5a5c.js | 1 +
assets/js/30caca7b.547df741.js | 1 +
assets/js/311bd1fe.d899689e.js | 1 +
assets/js/31a41724.41c17dfb.js | 1 +
assets/js/31d1e189.2b3e251f.js | 1 +
assets/js/328099ed.c2c3800e.js | 1 +
assets/js/32b3b4cb.70817b38.js | 1 +
assets/js/3337a722.4a142402.js | 1 +
assets/js/3624.a4fd1a30.js | 1 +
assets/js/36497d9a.5dbd369b.js | 1 +
assets/js/36759ffb.a15e32f2.js | 1 +
assets/js/381afd34.4ca01fc4.js | 1 +
assets/js/384bae41.dbe52df4.js | 1 +
assets/js/3942b62f.61cf69d6.js | 1 +
assets/js/3b1bc22c.2aca2a51.js | 1 +
assets/js/3ba5c2fc.5b28e1ec.js | 1 +
assets/js/3be3ed08.4b81cf90.js | 1 +
assets/js/3c1a9b2e.6628715a.js | 1 +
assets/js/3c7ec4d5.c69ec836.js | 1 +
assets/js/3ce7adbc.8bf95b30.js | 1 +
assets/js/3f0a7e22.429615ad.js | 1 +
assets/js/3f445504.9f7d4c48.js | 1 +
assets/js/3f5566d7.5dcc0c92.js | 1 +
assets/js/3f5acf1e.0bee3697.js | 1 +
assets/js/3f835f19.1ef25451.js | 1 +
assets/js/4059bc98.38149bac.js | 1 +
assets/js/40d22985.f1574e46.js | 1 +
assets/js/412ee224.50a4d74a.js | 1 +
assets/js/414403c6.36294ffe.js | 1 +
assets/js/41b6636f.efd7e838.js | 1 +
assets/js/4206.67c565fc.js | 1 +
assets/js/43476833.d381c9eb.js | 1 +
assets/js/43c5580d.2f2f2f0e.js | 1 +
assets/js/43cc406c.a40b9d1a.js | 1 +
assets/js/43f7e6c9.93cc58b3.js | 1 +
assets/js/44566a88.52cbdbc3.js | 1 +
assets/js/445bf8fb.83daab5a.js | 1 +
assets/js/44c54f77.d92f1911.js | 1 +
assets/js/45512dc1.6323c17f.js | 1 +
assets/js/4644c7b4.c34762bb.js | 1 +
assets/js/46e64815.84666734.js | 1 +
assets/js/491b243c.aefcce2e.js | 1 +
assets/js/49fe2b93.f3cf6869.js | 1 +
assets/js/4a060e30.aadb34a1.js | 1 +
assets/js/4a883549.b1d93110.js | 1 +
assets/js/4dba972c.63e91e8c.js | 1 +
assets/js/4fe819b1.eb1f6ba3.js | 1 +
assets/js/5062cedc.fa54a486.js | 1 +
assets/js/51e623d9.e11f71f8.js | 1 +
assets/js/51fe9e1c.a45c4057.js | 1 +
assets/js/52327944.5be98e2d.js | 1 +
assets/js/52a44e3b.1b9609ac.js | 1 +
assets/js/52b6c25c.3043972f.js | 1 +
assets/js/55e202dc.4a4c414c.js | 1 +
assets/js/5670b262.e0885ac0.js | 1 +
assets/js/5676ccf5.d844f738.js | 1 +
assets/js/5743b375.d90d6c3e.js | 1 +
assets/js/576b1a2a.67fc94c6.js | 1 +
assets/js/57d6d98d.56075b27.js | 1 +
assets/js/5812196f.7e75f97b.js | 1 +
assets/js/58932e72.c874d229.js | 1 +
assets/js/59e0cce2.8d1ceb8e.js | 1 +
assets/js/5b78a75f.33a0dcf4.js | 1 +
assets/js/5bb43612.18f3f147.js | 1 +
assets/js/5c53aeba.8300a25c.js | 1 +
assets/js/5c5d54c9.50b6f0b3.js | 1 +
assets/js/5c645a65.1be0bfa1.js | 1 +
assets/js/5c65dac8.defa1202.js | 1 +
assets/js/5c6b5050.77eae1ad.js | 1 +
assets/js/5c82576d.d8da3c80.js | 1 +
assets/js/5d2f3c78.8957f2f7.js | 1 +
assets/js/5d9eeb2f.a52b7fc5.js | 1 +
assets/js/5dacb00c.aa85fb47.js | 1 +
assets/js/5e4ecab4.aee1a876.js | 1 +
assets/js/5ff9c08d.c0687ca6.js | 1 +
assets/js/604078af.04e8a828.js | 1 +
assets/js/6042bd00.31bbee1e.js | 1 +
assets/js/61176328.a4be27c9.js | 1 +
assets/js/615c06f6.5f8d7994.js | 1 +
assets/js/616221e8.c2128a63.js | 1 +
assets/js/628a7ce5.d90d0334.js | 1 +
assets/js/62b028eb.d87bf862.js | 1 +
assets/js/62fd7da7.f46cefd6.js | 1 +
assets/js/6446e1f5.da7117bc.js | 1 +
assets/js/65125a37.27876328.js | 1 +
assets/js/65299766.7d9636bc.js | 1 +
assets/js/6580fbe1.43c5c6f3.js | 1 +
assets/js/66178e07.43d93bc2.js | 1 +
assets/js/673e1d72.b31092f9.js | 1 +
assets/js/6749.dc0c545b.js | 2 +
assets/js/6749.dc0c545b.js.LICENSE.txt | 9 +
assets/js/6865240a.359014e4.js | 1 +
assets/js/687f781f.c5c34263.js | 1 +
assets/js/688a6cad.3844e939.js | 1 +
assets/js/68b12977.86e9c2e0.js | 1 +
assets/js/697768d1.e6d564a3.js | 1 +
assets/js/6c62c6c7.128e2e82.js | 1 +
assets/js/6c6924f2.ed183ee0.js | 1 +
assets/js/6d3f71d7.196a871c.js | 1 +
assets/js/6edec6bb.59b1b7a9.js | 1 +
assets/js/708e1ea9.ed2f8b91.js | 1 +
assets/js/715ef334.f6547c15.js | 1 +
assets/js/7178b9b6.bb71c02f.js | 1 +
assets/js/71de5257.83527348.js | 1 +
assets/js/72871454.a312cad2.js | 1 +
assets/js/72b74cf4.03bc2c80.js | 1 +
assets/js/72ca7c8a.9529bd5b.js | 1 +
assets/js/7377efa6.1c10a24e.js | 1 +
assets/js/74fed1cd.0382378f.js | 1 +
assets/js/7668f2ea.b2200b4c.js | 1 +
assets/js/76930b1e.8a8e4cc3.js | 1 +
assets/js/769d5196.c5b7d37e.js | 1 +
assets/js/7721f12a.ce89f87a.js | 1 +
assets/js/785005b4.94b248dd.js | 1 +
assets/js/794c6791.3c42732d.js | 1 +
assets/js/7a0ffe1e.1960af4c.js | 1 +
assets/js/7b6ad2fb.6a744144.js | 1 +
assets/js/7c46e323.42105de5.js | 1 +
assets/js/7ef358d2.9445533c.js | 1 +
assets/js/7f7990e2.e7570699.js | 1 +
assets/js/8229aea1.ca3d4cb8.js | 1 +
assets/js/82512c0e.3cc93a2d.js | 1 +
assets/js/83539817.409a43c5.js | 1 +
assets/js/83593c6b.c36c2288.js | 1 +
assets/js/83f7537e.6aac601f.js | 1 +
assets/js/841b8634.b53b6447.js | 1 +
assets/js/8456bec1.4079b1fc.js | 1 +
assets/js/84b3150d.01a92ec8.js | 1 +
assets/js/850b8f96.379a36fd.js | 1 +
assets/js/85450b9e.f1e21873.js | 1 +
assets/js/869889a5.3ab3e92f.js | 1 +
assets/js/86f503e8.eded591a.js | 1 +
assets/js/8764.d922765b.js | 1 +
assets/js/8916e4db.616992f5.js | 1 +
assets/js/8adf3ad1.c9823605.js | 1 +
assets/js/8b26a265.b78d6128.js | 1 +
assets/js/8bf2051c.de48314e.js | 1 +
assets/js/8c391981.e8ae4b74.js | 1 +
assets/js/8e848799.81e865f8.js | 1 +
assets/js/9088aabc.f1ea7a43.js | 1 +
assets/js/918cc096.a019befc.js | 1 +
assets/js/91b79396.8db8942e.js | 1 +
assets/js/925afb30.71b1e7bc.js | 1 +
assets/js/925b2855.f3434d03.js | 1 +
assets/js/945892f2.5996310f.js | 1 +
assets/js/955ad32b.cc92b4fc.js | 1 +
assets/js/95998a7b.4e43e6a4.js | 1 +
assets/js/95f22674.3ceb6012.js | 1 +
assets/js/96880511.eccdc35f.js | 1 +
assets/js/9783bc11.d02c13c7.js | 1 +
assets/js/987d4acf.11dc39db.js | 1 +
assets/js/992deef6.0de76a66.js | 1 +
assets/js/9992ecad.3a706305.js | 1 +
assets/js/99d91b5a.47af32cc.js | 1 +
assets/js/9b6ed38a.73bd363a.js | 1 +
assets/js/9c4e476f.b9d1af69.js | 1 +
assets/js/9c962748.8a10c099.js | 1 +
assets/js/9cc70f41.28cd1b32.js | 1 +
assets/js/9d21bf1b.c26c6b0a.js | 1 +
assets/js/9dd30c58.689b214f.js | 1 +
assets/js/9ec0a7e0.e22027b7.js | 1 +
assets/js/9ff4b2c8.ba10f98b.js | 1 +
assets/js/a0577ac4.c7bbe99f.js | 1 +
assets/js/a0e4b465.ee8f9d44.js | 1 +
assets/js/a1865104.642fa55f.js | 1 +
assets/js/a26c1558.7e530130.js | 1 +
assets/js/a2b99ef3.04e9e248.js | 1 +
assets/js/a35348eb.fca1960c.js | 1 +
assets/js/a37f7d8e.fb9e054e.js | 1 +
assets/js/a736db70.f36baa34.js | 1 +
assets/js/a75faf06.3be56bda.js | 1 +
assets/js/a76df15c.bdeda0a7.js | 1 +
assets/js/a78e8939.97d16bca.js | 1 +
assets/js/a8dae9bd.468c015f.js | 1 +
assets/js/a8ec249b.b5f1f41a.js | 1 +
assets/js/a91680d2.68ad35c4.js | 1 +
assets/js/aa39dc57.89bcaa79.js | 1 +
assets/js/aac8db6e.707a6c26.js | 1 +
assets/js/ab046938.f0496050.js | 1 +
assets/js/ab0664d4.0d855ab5.js | 1 +
assets/js/ac1efd3f.2b2f66dd.js | 1 +
assets/js/ac8287b1.5aac050c.js | 1 +
assets/js/ad43a861.71816c3e.js | 1 +
assets/js/adac2065.dfc4b13d.js | 1 +
assets/js/ae5e56be.a37d4768.js | 1 +
assets/js/af6b996e.83884d33.js | 1 +
assets/js/af851bde.30fc1672.js | 1 +
assets/js/b093f027.57f89584.js | 1 +
assets/js/b0c79e6c.8c84dce8.js | 1 +
assets/js/b0f66fab.0dc72b5c.js | 1 +
assets/js/b1eac0f6.157bce66.js | 1 +
assets/js/b25c3a04.8a0d72a1.js | 1 +
assets/js/b2c7e98e.39bfe49e.js | 1 +
assets/js/b2ffdb77.02dfffc6.js | 1 +
assets/js/b3dfb1c3.e1393fda.js | 1 +
assets/js/b4aeeb80.983468ad.js | 1 +
assets/js/b6c51240.fe9b5868.js | 1 +
assets/js/b6d922f1.ecccc3ed.js | 1 +
assets/js/b736c7cf.192bbd44.js | 1 +
assets/js/b7f8364a.a32a2814.js | 1 +
assets/js/b8d95f5b.5121d014.js | 1 +
assets/js/b90eb34a.3ab989cd.js | 1 +
assets/js/b924275e.1f3eabb2.js | 1 +
assets/js/b964b515.3d862665.js | 1 +
assets/js/bae77381.7007129f.js | 1 +
assets/js/bb2e1240.4d63c9bc.js | 1 +
assets/js/bb8edb1f.7b151052.js | 1 +
assets/js/be40a19d.721d45b1.js | 1 +
assets/js/be59c4a2.cf186745.js | 1 +
assets/js/bee5d326.07dcce33.js | 1 +
assets/js/bffa185b.32a5518f.js | 1 +
assets/js/c0161e79.e11baa9a.js | 1 +
assets/js/c06e24f0.63911193.js | 1 +
assets/js/c0c3df5b.2e447ce1.js | 1 +
assets/js/c23102ef.938bf758.js | 1 +
assets/js/c2ae6274.8e7aafea.js | 1 +
assets/js/c3a3bae8.de18c6b6.js | 1 +
assets/js/c3e26f49.8b5865bd.js | 1 +
assets/js/c4f5d8e4.88ffac2e.js | 1 +
assets/js/c50b9f9b.c99e33c8.js | 1 +
assets/js/c52ed6a0.96d35f61.js | 1 +
assets/js/c763f2fb.7446e9d6.js | 1 +
assets/js/c7e5ee20.8fbf22b5.js | 1 +
assets/js/c890276d.a99c6a65.js | 1 +
assets/js/c93d7cfe.b40d3a74.js | 1 +
assets/js/ca456f99.26a6efbd.js | 1 +
assets/js/cad50069.3be5a480.js | 1 +
assets/js/cb88f4a3.3e4b88b2.js | 1 +
assets/js/cc0994d3.ae586357.js | 1 +
assets/js/cc736390.ddcfeb2b.js | 1 +
assets/js/cc7db43b.6e025c12.js | 1 +
assets/js/cd22c7ca.4b72da35.js | 1 +
assets/js/cd9e4e04.639fbc51.js | 1 +
assets/js/cdec71b5.adf6c1d0.js | 1 +
assets/js/cdf1e8c6.740dc6c5.js | 1 +
assets/js/ce4dff4d.f5ccd0c7.js | 1 +
assets/js/cef2afce.ae089fba.js | 1 +
assets/js/cfa30cd1.9b903ec6.js | 1 +
assets/js/d20373b9.621acd06.js | 1 +
assets/js/d2b98a3d.9ad237fd.js | 1 +
assets/js/d2d48976.109b7181.js | 1 +
assets/js/d410aa55.0cc2abe8.js | 1 +
assets/js/d5af854b.34502dfb.js | 1 +
assets/js/d6226c05.4167a7bc.js | 1 +
assets/js/d6b728a0.aaad613d.js | 1 +
assets/js/d721507d.adcb6596.js | 1 +
assets/js/d98a46b3.c5674876.js | 1 +
assets/js/dad4c253.3757f095.js | 1 +
assets/js/dae50bee.f9733df4.js | 1 +
assets/js/db618302.ea238fb8.js | 1 +
assets/js/dc86ecba.b1a1417e.js | 1 +
assets/js/dcd89e6c.bbfbaf7b.js | 1 +
assets/js/dd334811.93bb235d.js | 1 +
assets/js/dddb2ffb.b5d41257.js | 1 +
assets/js/debb6838.6827b14d.js | 1 +
assets/js/df1b20ff.c978d0ef.js | 1 +
assets/js/df3f8995.a50d1bb5.js | 1 +
assets/js/dfd00f41.56cd7a05.js | 1 +
assets/js/e04068f8.c64910fc.js | 1 +
assets/js/e0eb764b.39e60d2b.js | 1 +
assets/js/e13ba3bd.78fd15ff.js | 1 +
assets/js/e1bd8ca2.e9d91d9e.js | 1 +
assets/js/e1d3921d.182a5a93.js | 1 +
assets/js/e25b1e4b.18ecd58b.js | 1 +
assets/js/e3609e88.cf7282b0.js | 1 +
assets/js/e3f5c95b.feaec2ac.js | 1 +
assets/js/e50229e6.b46ff0b9.js | 1 +
assets/js/e55f3a2e.2f1923f6.js | 1 +
assets/js/e577ad77.1e0e6745.js | 1 +
assets/js/e5a64ab7.2e5781ef.js | 1 +
assets/js/e646a038.e67fc292.js | 1 +
assets/js/e73135aa.c3f4f907.js | 1 +
assets/js/e7de36fa.f451757a.js | 1 +
assets/js/e827bd0f.b45f8ff8.js | 1 +
assets/js/e83ca267.3dc5394d.js | 1 +
assets/js/e97eb9e3.46851d87.js | 1 +
assets/js/e983486d.50fa2228.js | 1 +
assets/js/e988a960.91f06266.js | 1 +
assets/js/eaf401e3.274b156b.js | 1 +
assets/js/eb55dcd0.d02f3933.js | 1 +
assets/js/ebb39d90.844075cb.js | 1 +
assets/js/ebc99227.3d9a6a56.js | 1 +
assets/js/ee2912af.cb2ba2e2.js | 1 +
assets/js/ee607251.b35551b5.js | 1 +
assets/js/f04833a0.9a6ac7ea.js | 1 +
assets/js/f07c3477.c58e8397.js | 1 +
assets/js/f0a1c229.51cc15e2.js | 1 +
assets/js/f100b489.03bb5723.js | 1 +
assets/js/f17034af.f2eb5db9.js | 1 +
assets/js/f18e659a.d2c90da6.js | 1 +
assets/js/f2fac021.234758ed.js | 1 +
assets/js/f33a5121.7d621224.js | 1 +
assets/js/f53813dc.09baf3b8.js | 1 +
assets/js/f5acae74.ffc4d3e0.js | 1 +
assets/js/f60a8324.908e5520.js | 1 +
assets/js/f7c0de2e.2223b5d1.js | 1 +
assets/js/f8b35359.d51395b9.js | 1 +
assets/js/f8b477e7.5538327e.js | 1 +
assets/js/fa9362bb.433ea48c.js | 1 +
assets/js/fc4d18c8.2ca20ae6.js | 1 +
assets/js/fc6529ab.8335b8a5.js | 1 +
assets/js/fd2232cb.3a78a53e.js | 1 +
assets/js/fe0d9665.95048b05.js | 1 +
assets/js/ff037e72.c8ad12e4.js | 1 +
assets/js/main.1776e851.js | 2 +
assets/js/main.1776e851.js.LICENSE.txt | 71 +++
assets/js/main.25c32051.js | 2 +
assets/js/main.25c32051.js.LICENSE.txt | 71 +++
assets/js/runtime~main.7e1f4526.js | 1 +
assets/js/runtime~main.9232225e.js | 1 +
blog/index.html | 4 +-
community/cla/index.html | 4 +-
community/index.html | 4 +-
community/join-slack/index.html | 4 +-
docs/37.0.0/api-reference.html/index.html | 11 +
.../automatic-compaction-api.html/index.html | 11 +
.../automatic-compaction-api/index.html | 26 +-
.../data-management-api.html/index.html | 11 +
.../api-reference/data-management-api/index.html | 22 +-
.../dynamic-configuration-api.html/index.html | 11 +
.../dynamic-configuration-api/index.html | 178 ++++++--
docs/{latest => 37.0.0}/api-reference/index.html | 38 +-
.../json-querying-api.html/index.html | 11 +
.../api-reference/json-querying-api/index.html | 20 +-
.../legacy-metadata-api.html/index.html | 11 +
.../api-reference/legacy-metadata-api/index.html | 32 +-
.../api-reference/lookups-api.html/index.html | 11 +
.../api-reference/lookups-api/index.html | 12 +-
.../retention-rules-api.html/index.html | 11 +
.../api-reference/retention-rules-api/index.html | 30 +-
.../service-status-api.html/index.html | 11 +
.../api-reference/service-status-api/index.html | 18 +-
docs/37.0.0/api-reference/sql-api.html/index.html | 11 +
.../api-reference/sql-api/index.html | 32 +-
.../sql-ingestion-api.html/index.html | 11 +
.../api-reference/sql-ingestion-api/index.html | 26 +-
docs/37.0.0/api-reference/sql-jdbc.html/index.html | 11 +
.../api-reference/sql-jdbc/index.html | 32 +-
.../api-reference/supervisor-api.html/index.html | 11 +
.../api-reference/supervisor-api/index.html | 35 +-
.../37.0.0/api-reference/tasks-api.html/index.html | 11 +
.../api-reference/tasks-api/index.html | 42 +-
.../druid-vs-elasticsearch.html/index.html | 11 +
.../comparisons/druid-vs-elasticsearch/index.html | 10 +-
.../comparisons/druid-vs-key-value.html/index.html | 11 +
.../comparisons/druid-vs-key-value/index.html | 10 +-
.../comparisons/druid-vs-kudu.html/index.html | 11 +
.../comparisons/druid-vs-kudu/index.html | 10 +-
.../comparisons/druid-vs-redshift.html/index.html | 11 +
.../comparisons/druid-vs-redshift/index.html | 10 +-
.../comparisons/druid-vs-spark.html/index.html | 11 +
.../comparisons/druid-vs-spark/index.html | 10 +-
.../druid-vs-sql-on-hadoop.html/index.html | 11 +
.../comparisons/druid-vs-sql-on-hadoop/index.html | 10 +-
docs/37.0.0/configuration.html/index.html | 11 +
docs/37.0.0/configuration/auth.html/index.html | 11 +
docs/37.0.0/configuration/broker.html/index.html | 11 +
docs/37.0.0/configuration/caching.html/index.html | 11 +
.../configuration/coordinator.html/index.html | 11 +
.../configuration/extensions.html/index.html | 11 +
.../configuration/extensions/index.html | 38 +-
docs/37.0.0/configuration/hadoop.html/index.html | 11 +
.../configuration/historical.html/index.html | 11 +
.../human-readable-byte.html/index.html | 11 +
.../configuration/human-readable-byte/index.html | 10 +-
docs/{latest => 37.0.0}/configuration/index.html | 231 +++++-----
.../configuration/indexing-service.html/index.html | 11 +
docs/37.0.0/configuration/logging.html/index.html | 11 +
.../configuration/logging/index.html | 16 +-
.../production-cluster.html/index.html | 11 +
docs/37.0.0/configuration/realtime.html/index.html | 11 +
.../configuration/simple-cluster.html/index.html | 11 +
.../37.0.0/configuration/zookeeper.html/index.html | 11 +
docs/37.0.0/data-management.html/index.html | 11 +
.../automatic-compaction.html/index.html | 11 +
.../automatic-compaction/index.html | 217 ++++-----
.../cascading-reindexing.html/index.html | 11 +
.../cascading-reindexing/index.html | 155 +++++++
.../data-management/compaction.html/index.html | 11 +
.../data-management/compaction/index.html | 47 +-
docs/37.0.0/data-management/delete.html/index.html | 11 +
.../data-management/delete/index.html | 42 +-
docs/{latest => 37.0.0}/data-management/index.html | 22 +-
.../manual-compaction.html/index.html | 11 +
.../data-management/manual-compaction/index.html | 50 +-
.../data-management/schema-changes.html/index.html | 11 +
.../data-management/schema-changes/index.html | 20 +-
docs/37.0.0/data-management/update.html/index.html | 11 +
.../data-management/update/index.html | 30 +-
.../cassandra-deep-storage.html/index.html | 11 +
docs/37.0.0/dependencies/zookeeper.html/index.html | 11 +
docs/37.0.0/design.html/index.html | 11 +
docs/37.0.0/design/architecture.html/index.html | 11 +
.../design/architecture/index.html | 64 +--
docs/37.0.0/design/auth.html/index.html | 11 +
docs/37.0.0/design/broker.html/index.html | 11 +
docs/{latest => 37.0.0}/design/broker/index.html | 22 +-
.../concepts-and-terminology.html/index.html | 11 +
docs/37.0.0/design/coordinator.html/index.html | 11 +
.../design/coordinator/index.html | 36 +-
docs/37.0.0/design/deep-storage.html/index.html | 11 +
.../design/deep-storage/index.html | 24 +-
docs/37.0.0/design/design.html/index.html | 11 +
.../extensions-contrib/dropwizard.html/index.html | 11 +
.../extensions-contrib/dropwizard/index.html | 12 +-
docs/37.0.0/design/historical.html/index.html | 11 +
.../design/historical/index.html | 30 +-
docs/{latest => 37.0.0}/design/index.html | 18 +-
docs/37.0.0/design/indexer.html/index.html | 11 +
docs/{latest => 37.0.0}/design/indexer/index.html | 18 +-
.../37.0.0/design/indexing-service.html/index.html | 11 +
.../design/indexing-service/index.html | 24 +-
.../37.0.0/design/metadata-storage.html/index.html | 11 +
.../design/metadata-storage/index.html | 32 +-
docs/37.0.0/design/middlemanager.html/index.html | 11 +
.../design/middlemanager/index.html | 18 +-
docs/37.0.0/design/overlord.html/index.html | 11 +
docs/{latest => 37.0.0}/design/overlord/index.html | 18 +-
docs/37.0.0/design/peons.html/index.html | 11 +
docs/{latest => 37.0.0}/design/peons/index.html | 16 +-
docs/37.0.0/design/plumber.html/index.html | 11 +
docs/37.0.0/design/processes.html/index.html | 11 +
docs/37.0.0/design/realtime.html/index.html | 11 +
docs/37.0.0/design/router.html/index.html | 11 +
docs/{latest => 37.0.0}/design/router/index.html | 22 +-
docs/37.0.0/design/segments.html/index.html | 11 +
docs/{latest => 37.0.0}/design/segments/index.html | 18 +-
docs/37.0.0/design/storage.html/index.html | 11 +
docs/{latest => 37.0.0}/design/storage/index.html | 48 +-
docs/37.0.0/design/zookeeper.html/index.html | 11 +
.../{latest => 37.0.0}/design/zookeeper/index.html | 28 +-
.../approximate-histograms.html/index.html | 11 +
docs/37.0.0/development/build.html/index.html | 11 +
.../development/build/index.html | 14 +-
.../community-extensions/azure.html/index.html | 11 +
.../community-extensions/cassandra.html/index.html | 11 +
.../cloudfiles.html/index.html | 11 +
.../community-extensions/graphite.html/index.html | 11 +
.../kafka-simple.html/index.html | 11 +
.../community-extensions/rabbitmq.html/index.html | 11 +
.../development/contribute-to-docs.html/index.html | 11 +
.../development/contribute-to-docs/index.html | 12 +-
.../development/experimental.html/index.html | 11 +
.../development/experimental/index.html | 12 +-
.../extensions-contrib/aliyun-oss.html/index.html | 11 +
.../extensions-contrib/aliyun-oss/index.html | 14 +-
.../ambari-metrics-emitter.html/index.html | 11 +
.../ambari-metrics-emitter/index.html | 10 +-
.../extensions-contrib/cassandra.html/index.html | 11 +
.../extensions-contrib/cassandra/index.html | 10 +-
.../extensions-contrib/cloudfiles.html/index.html | 11 +
.../extensions-contrib/cloudfiles/index.html | 10 +-
.../compressed-big-decimal.html/index.html | 11 +
.../compressed-big-decimal/index.html | 18 +-
.../extensions-contrib/consul.html/index.html | 11 +
.../extensions-contrib/consul/index.html | 284 ++++++++++++
.../ddsketch-quantiles.html/index.html | 11 +
.../ddsketch-quantiles/index.html | 12 +-
.../extensions-contrib/delta-lake.html/index.html | 11 +
.../extensions-contrib/delta-lake/index.html | 18 +-
.../distinctcount.html/index.html | 11 +
.../extensions-contrib/distinctcount/index.html | 10 +-
.../druid-exact-count-bitmap.html/index.html | 11 +
.../druid-exact-count-bitmap/index.html | 12 +-
.../druid-ranger-security.html/index.html | 11 +
.../druid-ranger-security/index.html | 18 +-
.../gce-extensions.html/index.html | 11 +
.../extensions-contrib/gce-extensions/index.html | 12 +-
.../extensions-contrib/google.html/index.html | 11 +
.../extensions-contrib/graphite.html/index.html | 11 +
.../extensions-contrib/graphite/index.html | 12 +-
.../extensions-contrib/iceberg.html/index.html | 11 +
.../extensions-contrib/iceberg/index.html | 44 +-
.../extensions-contrib/influx.html/index.html | 11 +
.../extensions-contrib/influx/index.html | 31 ++
.../influxdb-emitter.html/index.html | 11 +
.../extensions-contrib/influxdb-emitter/index.html | 12 +-
.../extensions-contrib/k8s-jobs/index.html | 11 +
.../kafka-emitter.html/index.html | 11 +
.../extensions-contrib/kafka-emitter/index.html | 12 +-
.../kafka-simple.html/index.html | 11 +
.../materialized-view/index.html | 11 +
.../momentsketch-quantiles.html/index.html | 11 +
.../momentsketch-quantiles/index.html | 12 +-
.../moving-average-query.html/index.html | 11 +
.../moving-average-query/index.html | 22 +-
.../opentsdb-emitter.html/index.html | 11 +
.../extensions-contrib/opentsdb-emitter/index.html | 12 +-
.../extensions-contrib/orc.html/index.html | 11 +
.../extensions-contrib/parquet.html/index.html | 11 +
.../extensions-contrib/prometheus.html/index.html | 11 +
.../extensions-contrib/prometheus/index.html | 10 +-
.../rabbit-super-stream-injestion.html/index.html | 11 +
.../rabbit-super-stream-injestion/index.html | 22 +-
.../extensions-contrib/rabbitmq.html/index.html | 11 +
.../extensions-contrib/redis-cache.html/index.html | 11 +
.../extensions-contrib/redis-cache/index.html | 20 +-
.../extensions-contrib/rocketmq.html/index.html | 11 +
.../extensions-contrib/scan-query.html/index.html | 11 +
.../spectator-histogram.html/index.html | 11 +
.../spectator-histogram/index.html | 18 +-
.../extensions-contrib/sqlserver.html/index.html | 11 +
.../extensions-contrib/sqlserver/index.html | 10 +-
.../extensions-contrib/statsd.html/index.html | 11 +
.../extensions-contrib/statsd/index.html | 12 +-
.../tdigestsketch-quantiles.html/index.html | 11 +
.../tdigestsketch-quantiles/index.html | 16 +-
.../extensions-contrib/thrift.html/index.html | 11 +
.../extensions-contrib/thrift/index.html | 25 +
.../time-min-max.html/index.html | 11 +
.../extensions-contrib/time-min-max/index.html | 10 +-
.../approximate-histograms.html/index.html | 11 +
.../approximate-histograms/index.html | 14 +-
.../extensions-core/avro.html/index.html | 11 +
.../development/extensions-core/avro/index.html | 26 +-
.../extensions-core/azure.html/index.html | 11 +
.../development/extensions-core/azure/index.html | 16 +-
.../extensions-core/bloom-filter.html/index.html | 11 +
.../extensions-core/bloom-filter/index.html | 16 +-
.../extensions-core/caffeine-cache.html/index.html | 11 +
.../extensions-core/catalog.html/index.html | 11 +
.../development/extensions-core/catalog/index.html | 14 +-
.../datasketches-extension.html/index.html | 11 +
.../datasketches-extension/index.html | 22 +-
.../datasketches-hll.html/index.html | 11 +
.../extensions-core/datasketches-hll/index.html | 18 +-
.../datasketches-kll.html/index.html | 11 +
.../extensions-core/datasketches-kll/index.html | 16 +-
.../datasketches-quantiles.html/index.html | 11 +
.../datasketches-quantiles/index.html | 16 +-
.../datasketches-theta.html/index.html | 11 +
.../extensions-core/datasketches-theta/index.html | 16 +-
.../datasketches-tuple.html/index.html | 11 +
.../extensions-core/datasketches-tuple/index.html | 16 +-
.../extensions-core/druid-aws-rds.html/index.html | 11 +
.../extensions-core/druid-aws-rds/index.html | 12 +-
.../druid-basic-security.html/index.html | 11 +
.../druid-basic-security/index.html | 43 +-
.../extensions-core/druid-kerberos.html/index.html | 11 +
.../extensions-core/druid-kerberos/index.html | 14 +-
.../extensions-core/druid-lookups.html/index.html | 11 +
.../extensions-core/druid-lookups/index.html | 16 +-
.../extensions-core/druid-pac4j.html/index.html | 11 +
.../extensions-core/druid-pac4j/index.html | 14 +-
.../druid-ranger-security/index.html | 11 +
.../extensions-core/examples.html/index.html | 11 +
.../extensions-core/examples/index.html | 10 +-
.../extensions-core/google.html/index.html | 11 +
.../development/extensions-core/google/index.html | 19 +-
.../extensions-core/hdfs.html/index.html | 11 +
.../development/extensions-core/hdfs}/index.html | 19 +-
.../extensions-core/k8s-jobs.html/index.html | 11 +
.../extensions-core/k8s-jobs/index.html | 31 +-
.../kafka-eight-firehose.html/index.html | 11 +
.../kafka-extraction-namespace/index.html | 11 +
.../kafka-ingestion.html/index.html | 11 +
.../extensions-core/kafka-ingestion/index.html | 11 +
.../kafka-supervisor-operations.html/index.html | 11 +
.../kafka-supervisor-operations/index.html | 11 +
.../kafka-supervisor-reference.html/index.html | 11 +
.../kafka-supervisor-reference/index.html | 11 +
.../kinesis-ingestion.html/index.html | 11 +
.../extensions-core/kinesis-ingestion/index.html | 11 +
.../extensions-core/kubernetes.html/index.html | 11 +
.../extensions-core/kubernetes/index.html | 41 +-
.../lookups-cached-global/index.html | 11 +
.../extensions-core/mysql.html/index.html | 11 +
.../development/extensions-core/mysql/index.html | 14 +-
.../namespaced-lookup.html/index.html | 11 +
.../extensions-core/orc.html/index.html | 11 +
.../development/extensions-core/orc}/index.html | 19 +-
.../extensions-core/parquet.html/index.html | 11 +
.../development/extensions-core/parquet/index.html | 19 +-
.../extensions-core/postgresql.html/index.html | 11 +
.../extensions-core/postgresql/index.html | 14 +-
.../extensions-core/protobuf.html/index.html | 11 +
.../extensions-core/protobuf/index.html | 25 +-
.../development/extensions-core/s3.html/index.html | 11 +
.../development/extensions-core/s3/index.html | 26 +-
.../simple-client-sslcontext.html/index.html | 11 +
.../simple-client-sslcontext/index.html | 14 +-
.../extensions-core/stats.html/index.html | 11 +
.../development/extensions-core/stats/index.html | 12 +-
.../extensions-core/test-stats.html/index.html | 11 +
.../extensions-core/test-stats/index.html | 12 +-
docs/37.0.0/development/extensions/index.html | 11 +
docs/37.0.0/development/indexer.html/index.html | 11 +
.../index.html | 11 +
docs/37.0.0/development/javascript.html/index.html | 11 +
.../development/javascript/index.html | 27 +-
.../kafka-simple-consumer-firehose.html/index.html | 11 +
docs/37.0.0/development/modules.html/index.html | 11 +
.../development/modules/index.html | 20 +-
docs/37.0.0/development/overview.html/index.html | 11 +
.../development/overview/index.html | 18 +-
docs/37.0.0/development/router.html/index.html | 11 +
.../development/select-query.html/index.html | 11 +
docs/37.0.0/development/versioning.html/index.html | 11 +
.../development/versioning/index.html | 12 +-
docs/37.0.0/index.html | 11 +
docs/37.0.0/ingestion.html/index.html | 11 +
.../ingestion/automatic-compaction.html/index.html | 11 +
.../ingestion/batch-ingestion.html/index.html | 11 +
.../command-line-hadoop-indexer.html/index.html | 11 +
docs/37.0.0/ingestion/compaction.html/index.html | 11 +
.../concurrent-append-replace.html/index.html | 11 +
.../ingestion/concurrent-append-replace/index.html | 14 +-
docs/37.0.0/ingestion/data-formats.html/index.html | 11 +
.../ingestion/data-formats/index.html | 285 +-----------
.../ingestion/data-management.html/index.html | 11 +
docs/37.0.0/ingestion/delete-data.html/index.html | 11 +
docs/37.0.0/ingestion/faq.html/index.html | 11 +
docs/{latest => 37.0.0}/ingestion/faq/index.html | 28 +-
docs/37.0.0/ingestion/firehose.html/index.html | 11 +
docs/37.0.0/ingestion/flatten-json.html/index.html | 11 +
.../hadoop-vs-native-batch.html/index.html | 11 +
docs/37.0.0/ingestion/hadoop.html/index.html | 11 +
.../ingestion/hadoop}/index.html | 21 +-
docs/{latest => 37.0.0}/ingestion/index.html | 32 +-
.../ingestion/ingestion-spec.html/index.html | 11 +
.../ingestion/ingestion-spec/index.html | 123 ++---
docs/37.0.0/ingestion/ingestion.html/index.html | 11 +
.../37.0.0/ingestion/input-sources.html/index.html | 11 +
.../ingestion/input-sources/index.html | 86 ++--
.../ingestion/kafka-ingestion.html/index.html | 11 +
.../ingestion/kafka-ingestion/index.html | 46 +-
.../ingestion/kinesis-ingestion.html/index.html | 11 +
.../ingestion/kinesis-ingestion/index.html | 32 +-
.../ingestion/locking-and-priority.html/index.html | 11 +
.../ingestion/migrate-from-firehose/index.html | 11 +
docs/37.0.0/ingestion/misc-tasks.html/index.html | 11 +
.../native-batch-firehose.html/index.html | 11 +
.../ingestion/native-batch-firehose/index.html | 10 +-
.../native-batch-input-sources.html/index.html | 11 +
.../native-batch-simple-task.html/index.html | 11 +
.../ingestion/native-batch-simple-task/index.html | 26 +-
docs/37.0.0/ingestion/native-batch.html/index.html | 11 +
.../ingestion/native-batch/index.html | 73 ++-
docs/37.0.0/ingestion/native_tasks.html/index.html | 11 +
docs/37.0.0/ingestion/overview.html/index.html | 11 +
docs/37.0.0/ingestion/partitioning.html/index.html | 11 +
.../ingestion/partitioning/index.html | 28 +-
.../ingestion/realtime-ingestion.html/index.html | 11 +
docs/37.0.0/ingestion/reports.html/index.html | 11 +
docs/37.0.0/ingestion/rollup.html/index.html | 11 +
.../{latest => 37.0.0}/ingestion/rollup/index.html | 28 +-
.../ingestion/schema-changes.html/index.html | 11 +
.../37.0.0/ingestion/schema-design.html/index.html | 11 +
.../ingestion/schema-design/index.html | 70 +--
docs/37.0.0/ingestion/schema-model.html/index.html | 11 +
.../ingestion/schema-model/index.html | 30 +-
.../ingestion/standalone-realtime.html/index.html | 11 +
.../ingestion/standalone-realtime/index.html | 16 +-
.../ingestion/stream-ingestion.html/index.html | 11 +
docs/37.0.0/ingestion/stream-pull.html/index.html | 11 +
docs/37.0.0/ingestion/stream-push.html/index.html | 11 +
docs/37.0.0/ingestion/streaming.html/index.html | 11 +
.../ingestion/streaming/index.html | 20 +-
docs/37.0.0/ingestion/supervisor.html/index.html | 11 +
.../ingestion/supervisor/index.html | 66 +--
docs/37.0.0/ingestion/tasks.html/index.html | 11 +
docs/{latest => 37.0.0}/ingestion/tasks/index.html | 68 ++-
docs/37.0.0/ingestion/tranquility.html/index.html | 11 +
.../ingestion/tranquility/index.html | 14 +-
.../ingestion/transform-spec.html/index.html | 11 +
.../ingestion/update-existing-data.html/index.html | 11 +
docs/37.0.0/misc/cluster-setup.html/index.html | 11 +
docs/37.0.0/misc/evaluate.html/index.html | 11 +
docs/37.0.0/misc/math-expr.html/index.html | 11 +
docs/37.0.0/misc/papers-and-talks.html/index.html | 11 +
.../misc/papers-and-talks/index.html | 12 +-
docs/37.0.0/misc/tasks.html/index.html | 11 +
docs/37.0.0/multi-stage-query.html/index.html | 11 +
docs/37.0.0/multi-stage-query/api.html/index.html | 11 +
.../multi-stage-query/concepts.html/index.html | 11 +
.../multi-stage-query/concepts/index.html | 88 ++--
.../multi-stage-query/examples.html/index.html | 11 +
.../multi-stage-query/examples/index.html | 16 +-
.../multi-stage-query/index.html | 24 +-
.../multi-stage-query/known-issues.html/index.html | 11 +
.../multi-stage-query/known-issues/index.html | 28 +-
.../multi-stage-query/reference.html/index.html | 11 +
.../multi-stage-query/reference/index.html | 62 +--
.../multi-stage-query/security.html/index.html | 11 +
.../multi-stage-query/security/index.html | 20 +-
docs/37.0.0/operations/alerts.html/index.html | 11 +
.../operations/alerts/index.html | 12 +-
.../operations/api-reference.html/index.html | 11 +
docs/37.0.0/operations/api-reference/index.html | 11 +
docs/37.0.0/operations/auth-ldap.html/index.html | 11 +
.../operations/auth-ldap/index.html | 30 +-
docs/37.0.0/operations/auth.html/index.html | 11 +
docs/{latest => 37.0.0}/operations/auth/index.html | 12 +-
.../basic-cluster-tuning.html/index.html | 11 +
.../operations/basic-cluster-tuning/index.html | 49 +-
.../clean-metadata-store.html/index.html | 11 +
.../operations/clean-metadata-store/index.html | 58 ++-
.../deep-storage-migration.html/index.html | 11 +
.../operations/deep-storage-migration/index.html | 20 +-
.../operations/druid-console.html/index.html | 11 +
.../37.0.0/operations/dump-segment.html/index.html | 11 +
.../operations/dump-segment/index.html | 18 +-
.../operations/durable-storage.html/index.html | 11 +
.../operations/durable-storage/index.html | 18 +-
.../dynamic-config-provider.html/index.html | 11 +
.../operations/dynamic-config-provider/index.html | 16 +-
.../operations/export-metadata.html/index.html | 11 +
.../operations/export-metadata/index.html | 12 +-
docs/37.0.0/operations/getting-started/index.html | 11 +
.../operations/high-availability.html/index.html | 11 +
.../operations/high-availability/index.html | 12 +-
.../operations/http-compression.html/index.html | 11 +
.../operations/http-compression/index.html | 12 +-
.../including-extensions.html/index.html | 11 +
.../insert-segment-to-db.html/index.html | 11 +
.../operations/insert-segment-to-db/index.html | 12 +-
docs/37.0.0/operations/java.html/index.html | 11 +
docs/{latest => 37.0.0}/operations/java/index.html | 12 +-
docs/37.0.0/operations/kubernetes.html/index.html | 11 +
.../operations/kubernetes/index.html | 12 +-
.../operations/management-uis.html/index.html | 11 +
.../operations/metadata-migration.html/index.html | 11 +
.../operations/metadata-migration/index.html | 20 +-
docs/37.0.0/operations/metrics.html/index.html | 11 +
.../operations/metrics/index.html | 49 +-
.../migrate-from-firehose.html/index.html | 11 +
.../operations/migrate-from-firehose/index.html | 22 +-
.../operations/mixed-workloads.html/index.html | 11 +
.../operations/mixed-workloads/index.html | 46 +-
.../37.0.0/operations/multitenancy.html/index.html | 11 +
docs/37.0.0/operations/other-hadoop/index.html | 11 +
.../operations/password-provider.html/index.html | 11 +
.../operations/password-provider/index.html | 14 +-
.../operations/performance-faq.html/index.html | 11 +
docs/37.0.0/operations/pull-deps.html/index.html | 11 +
.../operations/pull-deps/index.html | 37 +-
.../operations/recommendations.html/index.html | 11 +
.../operations/request-logging.html/index.html | 11 +
.../operations/request-logging/index.html | 44 +-
.../operations/reset-cluster.html/index.html | 11 +
.../operations/reset-cluster/index.html | 12 +-
.../operations/rolling-updates.html/index.html | 11 +
.../operations/rolling-updates/index.html | 12 +-
.../operations/rule-configuration.html/index.html | 11 +
.../operations/rule-configuration/index.html | 34 +-
.../operations/security-overview.html/index.html | 11 +
.../operations/security-overview/index.html | 30 +-
.../operations/security-user-auth.html/index.html | 11 +
.../operations/security-user-auth/index.html | 26 +-
.../segment-optimization.html/index.html | 11 +
.../operations/segment-optimization/index.html | 32 +-
.../operations/single-server.html/index.html | 11 +
.../operations/single-server/index.html | 12 +-
docs/37.0.0/operations/tls-support.html/index.html | 11 +
.../operations/tls-support/index.html | 24 +-
.../operations/use_sbt_to_build_fat_jar/index.html | 11 +
docs/37.0.0/operations/web-console.html/index.html | 11 +
.../operations/web-console/index.html | 24 +-
docs/37.0.0/querying.html/index.html | 11 +
docs/37.0.0/querying/aggregations.html/index.html | 11 +
.../querying/aggregations/index.html | 48 +-
docs/37.0.0/querying/arrays.html/index.html | 11 +
docs/{latest => 37.0.0}/querying/arrays/index.html | 42 +-
docs/37.0.0/querying/caching.html/index.html | 11 +
.../{latest => 37.0.0}/querying/caching/index.html | 40 +-
docs/37.0.0/querying/dart.html/index.html | 11 +
docs/{latest => 37.0.0}/querying/dart/index.html | 14 +-
docs/37.0.0/querying/datasource.html/index.html | 11 +
.../querying/datasource/index.html | 48 +-
.../datasourcemetadataquery.html/index.html | 11 +
.../querying/datasourcemetadataquery/index.html | 14 +-
.../37.0.0/querying/dimensionspecs.html/index.html | 11 +
.../querying/dimensionspecs/index.html | 36 +-
docs/37.0.0/querying/filters.html/index.html | 11 +
.../{latest => 37.0.0}/querying/filters/index.html | 64 +--
docs/37.0.0/querying/geo.html/index.html | 11 +
docs/{latest => 37.0.0}/querying/geo/index.html | 26 +-
docs/37.0.0/querying/granularities.html/index.html | 11 +
.../querying/granularities/index.html | 22 +-
docs/37.0.0/querying/groupbyquery.html/index.html | 11 +
.../querying/groupbyquery/index.html | 53 ++-
docs/37.0.0/querying/having.html/index.html | 11 +
docs/{latest => 37.0.0}/querying/having/index.html | 16 +-
docs/37.0.0/querying/hll-old.html/index.html | 11 +
.../{latest => 37.0.0}/querying/hll-old/index.html | 12 +-
docs/{latest => 37.0.0}/querying/index.html | 36 +-
docs/37.0.0/querying/joins.html/index.html | 11 +
docs/{latest => 37.0.0}/querying/joins/index.html | 24 +-
.../kafka-extraction-namespace.html/index.html | 11 +
.../querying/kafka-extraction-namespace/index.html | 16 +-
docs/37.0.0/querying/limitspec.html/index.html | 11 +
.../querying/limitspec/index.html | 16 +-
.../querying/lookups-cached-global.html/index.html | 11 +
.../querying/lookups-cached-global/index.html | 26 +-
docs/37.0.0/querying/lookups.html/index.html | 11 +
.../{latest => 37.0.0}/querying/lookups/index.html | 46 +-
docs/37.0.0/querying/math-expr.html/index.html | 11 +
.../querying/math-expr/index.html | 32 +-
.../multi-value-dimensions.html/index.html | 11 +
.../querying/multi-value-dimensions/index.html | 48 +-
docs/37.0.0/querying/multitenancy.html/index.html | 11 +
.../querying/multitenancy/index.html | 23 +-
.../37.0.0/querying/nested-columns.html/index.html | 11 +
.../querying/nested-columns/index.html | 42 +-
docs/37.0.0/querying/optimizations.html/index.html | 11 +
.../querying/post-aggregations.html/index.html | 11 +
.../querying/post-aggregations/index.html | 24 +-
docs/37.0.0/querying/projections.html/index.html | 11 +
.../querying/projections/index.html | 18 +-
.../query-context-reference.html/index.html | 11 +
.../querying/query-context-reference/index.html | 32 +-
docs/37.0.0/querying/query-context.html/index.html | 11 +
.../querying/query-context/index.html | 43 +-
.../querying/query-deep-storage.html/index.html | 11 +
.../querying/query-deep-storage/index.html | 28 +-
.../querying/query-execution.html/index.html | 11 +
.../querying/query-execution/index.html | 42 +-
.../querying/query-processing.html/index.html | 11 +
.../querying/query-processing/index.html | 20 +-
docs/37.0.0/querying/scan-query.html/index.html | 11 +
.../querying/scan-query/index.html | 16 +-
docs/37.0.0/querying/searchquery.html/index.html | 11 +
.../querying/searchquery/index.html | 14 +-
.../querying/searchqueryspec.html/index.html | 11 +
.../querying/segmentmetadataquery.html/index.html | 11 +
.../querying/segmentmetadataquery/index.html | 18 +-
docs/37.0.0/querying/select-query.html/index.html | 11 +
.../querying/select-query/index.html | 10 +-
.../37.0.0/querying/sorting-orders.html/index.html | 11 +
.../querying/sorting-orders/index.html | 16 +-
.../querying/sql-aggregations.html/index.html | 11 +
.../querying/sql-aggregations/index.html | 42 +-
docs/37.0.0/querying/sql-api.html/index.html | 11 +
.../querying/sql-array-functions.html/index.html | 11 +
.../querying/sql-array-functions/index.html | 18 +-
.../37.0.0/querying/sql-data-types.html/index.html | 11 +
.../querying/sql-data-types/index.html | 50 +-
docs/37.0.0/querying/sql-functions.html/index.html | 11 +
.../querying/sql-functions/index.html | 502 ++++++++++-----------
docs/37.0.0/querying/sql-jdbc.html/index.html | 11 +
.../querying/sql-json-functions.html/index.html | 11 +
.../querying/sql-json-functions/index.html | 14 +-
.../querying/sql-metadata-tables.html/index.html | 11 +
.../querying/sql-metadata-tables/index.html | 41 +-
.../index.html | 11 +
.../sql-multivalue-string-functions/index.html | 20 +-
docs/37.0.0/querying/sql-operators.html/index.html | 11 +
.../querying/sql-operators/index.html | 22 +-
.../querying/sql-query-context.html/index.html | 11 +
.../querying/sql-query-context/index.html | 24 +-
docs/37.0.0/querying/sql-scalar.html/index.html | 11 +
.../querying/sql-scalar/index.html | 38 +-
.../querying/sql-translation.html/index.html | 11 +
.../querying/sql-translation/index.html | 46 +-
.../querying/sql-window-functions.html/index.html | 11 +
.../querying/sql-window-functions/index.html | 14 +-
docs/37.0.0/querying/sql.html/index.html | 11 +
docs/{latest => 37.0.0}/querying/sql/index.html | 90 ++--
.../querying/timeboundaryquery.html/index.html | 11 +
.../querying/timeboundaryquery/index.html | 14 +-
.../querying/timeseriesquery.html/index.html | 11 +
.../querying/timeseriesquery/index.html | 18 +-
.../querying/tips-good-queries.html/index.html | 11 +
.../querying/tips-good-queries/index.html | 30 +-
.../37.0.0/querying/topnmetricspec.html/index.html | 11 +
.../querying/topnmetricspec/index.html | 18 +-
docs/37.0.0/querying/topnquery.html/index.html | 11 +
.../querying/topnquery/index.html | 24 +-
.../querying/troubleshooting.html/index.html | 11 +
.../querying/troubleshooting/index.html | 18 +-
docs/37.0.0/querying/using-caching.html/index.html | 11 +
.../querying/using-caching/index.html | 30 +-
.../querying/virtual-columns.html/index.html | 11 +
.../querying/virtual-columns/index.html | 24 +-
.../migr-ansi-sql-null.html/index.html | 11 +
.../release-info/migr-ansi-sql-null/index.html | 20 +-
.../migr-front-coded-dict.html/index.html | 11 +
.../release-info/migr-front-coded-dict/index.html | 29 +-
.../release-info/migr-mvd-array.html/index.html | 11 +
.../release-info/migr-mvd-array/index.html | 34 +-
.../migr-subquery-limit.html/index.html | 11 +
.../release-info/migr-subquery-limit/index.html | 20 +-
.../release-info/migration-guide.html/index.html | 11 +
.../release-info/migration-guide/index.html | 20 +-
.../release-info/release-notes.html/index.html | 11 +
.../release-info/release-notes/index.html | 21 +-
.../release-info/upgrade-notes.html/index.html | 11 +
.../release-info/upgrade-notes/index.html | 19 +-
docs/37.0.0/tutorials.html/index.html | 11 +
.../booting-a-production-cluster.html/index.html | 11 +
docs/37.0.0/tutorials/cluster.html/index.html | 11 +
.../tutorials/cluster/index.html | 67 +--
docs/37.0.0/tutorials/docker.html/index.html | 11 +
.../{latest => 37.0.0}/tutorials/docker/index.html | 30 +-
docs/37.0.0/tutorials/examples.html/index.html | 11 +
docs/37.0.0/tutorials/firewall.html/index.html | 11 +
docs/{latest => 37.0.0}/tutorials/index.html | 52 +--
.../tutorials/ingestion-streams.html/index.html | 11 +
docs/37.0.0/tutorials/ingestion.html/index.html | 11 +
docs/37.0.0/tutorials/quickstart.html/index.html | 11 +
.../tutorial-a-first-look-at-druid.html/index.html | 11 +
.../tutorial-all-about-queries.html/index.html | 11 +
.../tutorials/tutorial-append-data.html/index.html | 11 +
.../tutorials/tutorial-append-data/index.html | 26 +-
.../tutorials/tutorial-batch-hadoop/index.html | 11 +
.../tutorial-batch-native.html/index.html | 11 +
.../tutorials/tutorial-batch-native/index.html | 22 +-
.../tutorials/tutorial-batch.html/index.html | 11 +
.../tutorials/tutorial-batch/index.html | 16 +-
.../tutorials/tutorial-compaction.html/index.html | 11 +
.../tutorials/tutorial-compaction/index.html | 26 +-
.../tutorials/tutorial-delete-data.html/index.html | 11 +
.../tutorials/tutorial-delete-data/index.html | 14 +-
.../tutorials/tutorial-extern.html/index.html | 11 +
.../tutorials/tutorial-extern/index.html | 26 +-
.../tutorial-ingestion-spec.html/index.html | 11 +
.../tutorials/tutorial-ingestion-spec/index.html | 21 +-
.../37.0.0/tutorials/tutorial-jdbc.html/index.html | 11 +
.../tutorials/tutorial-jdbc/index.html | 12 +-
.../tutorials/tutorial-kafka.html/index.html | 11 +
.../tutorials/tutorial-kafka/index.html | 22 +-
.../tutorial-kerberos-hadoop.html/index.html | 11 +
.../tutorials/tutorial-kerberos-hadoop/index.html | 31 +-
.../tutorials/tutorial-latest-by.html/index.html | 11 +
.../tutorials/tutorial-latest-by/index.html | 22 +-
.../tutorial-loading-batch-data.html/index.html | 11 +
.../index.html | 11 +
.../tutorial-msq-convert-spec.html/index.html | 11 +
.../tutorials/tutorial-msq-convert-spec/index.html | 16 +-
.../tutorials/tutorial-msq-extern.html/index.html | 11 +
.../tutorials/tutorial-msq-extern/index.html | 18 +-
.../tutorial-query-deep-storage.html/index.html | 11 +
.../tutorial-query-deep-storage/index.html | 22 +-
.../tutorials/tutorial-query.html/index.html | 11 +
.../tutorials/tutorial-query/index.html | 28 +-
.../tutorials/tutorial-retention.html/index.html | 11 +
.../tutorials/tutorial-retention/index.html | 18 +-
.../tutorials/tutorial-rollup.html/index.html | 11 +
.../tutorials/tutorial-rollup/index.html | 28 +-
.../tutorial-sketches-theta.html/index.html | 11 +
.../tutorials/tutorial-sketches-theta/index.html | 34 +-
.../tutorials/tutorial-sql-null.html/index.html | 11 +
.../tutorials/tutorial-sql-null/index.html | 16 +-
.../tutorial-sql-query-view.html/index.html | 11 +
.../tutorials/tutorial-sql-query-view/index.html | 38 +-
.../tutorial-the-druid-cluster.html/index.html | 11 +
.../tutorials/tutorial-tranquility.html/index.html | 11 +
.../tutorials/tutorial-transform-spec/index.html | 11 +
.../tutorials/tutorial-transform.html/index.html | 11 +
.../tutorials/tutorial-transform/index.html | 26 +-
.../tutorial-unnest-arrays.html/index.html | 11 +
.../tutorials/tutorial-unnest-arrays/index.html | 20 +-
.../tutorials/tutorial-update-data.html/index.html | 11 +
.../tutorials/tutorial-update-data/index.html | 38 +-
.../automatic-compaction-api/index.html | 14 +-
.../api-reference/data-management-api/index.html | 4 +-
.../dynamic-configuration-api/index.html | 164 ++++++-
docs/latest/api-reference/index.html | 4 +-
.../api-reference/json-querying-api/index.html | 4 +-
.../api-reference/legacy-metadata-api/index.html | 4 +-
docs/latest/api-reference/lookups-api/index.html | 4 +-
.../api-reference/retention-rules-api/index.html | 4 +-
.../api-reference/service-status-api/index.html | 4 +-
docs/latest/api-reference/sql-api/index.html | 6 +-
.../api-reference/sql-ingestion-api/index.html | 4 +-
docs/latest/api-reference/sql-jdbc/index.html | 4 +-
.../latest/api-reference/supervisor-api/index.html | 17 +-
docs/latest/api-reference/tasks-api/index.html | 4 +-
.../comparisons/druid-vs-elasticsearch/index.html | 4 +-
.../comparisons/druid-vs-key-value/index.html | 4 +-
docs/latest/comparisons/druid-vs-kudu/index.html | 4 +-
.../comparisons/druid-vs-redshift/index.html | 4 +-
docs/latest/comparisons/druid-vs-spark/index.html | 4 +-
.../comparisons/druid-vs-sql-on-hadoop/index.html | 4 +-
docs/latest/configuration/extensions/index.html | 8 +-
.../configuration/human-readable-byte/index.html | 4 +-
docs/latest/configuration/index.html | 59 +--
docs/latest/configuration/logging/index.html | 4 +-
.../automatic-compaction/index.html | 191 ++++----
.../cascading-reindexing.html/index.html | 11 +
.../cascading-reindexing/index.html | 155 +++++++
docs/latest/data-management/compaction/index.html | 9 +-
docs/latest/data-management/delete/index.html | 6 +-
docs/latest/data-management/index.html | 4 +-
.../data-management/manual-compaction/index.html | 28 +-
.../data-management/schema-changes/index.html | 4 +-
docs/latest/data-management/update/index.html | 4 +-
docs/latest/design/architecture/index.html | 4 +-
docs/latest/design/broker/index.html | 4 +-
docs/latest/design/coordinator/index.html | 4 +-
docs/latest/design/deep-storage/index.html | 4 +-
.../extensions-contrib/dropwizard/index.html | 4 +-
docs/latest/design/historical/index.html | 4 +-
docs/latest/design/index.html | 4 +-
docs/latest/design/indexer/index.html | 4 +-
docs/latest/design/indexing-service/index.html | 4 +-
docs/latest/design/metadata-storage/index.html | 4 +-
docs/latest/design/middlemanager/index.html | 4 +-
docs/latest/design/overlord/index.html | 4 +-
docs/latest/design/peons/index.html | 4 +-
docs/latest/design/router/index.html | 4 +-
docs/latest/design/segments/index.html | 6 +-
docs/latest/design/storage/index.html | 14 +-
docs/latest/design/zookeeper/index.html | 10 +-
docs/latest/development/build/index.html | 4 +-
.../development/contribute-to-docs/index.html | 4 +-
docs/latest/development/experimental/index.html | 4 +-
.../extensions-contrib/aliyun-oss/index.html | 4 +-
.../ambari-metrics-emitter/index.html | 4 +-
.../extensions-contrib/cassandra/index.html | 4 +-
.../extensions-contrib/cloudfiles/index.html | 4 +-
.../compressed-big-decimal/index.html | 4 +-
.../extensions-contrib/consul.html/index.html | 11 +
.../extensions-contrib/consul/index.html | 284 ++++++++++++
.../ddsketch-quantiles/index.html | 4 +-
.../extensions-contrib/delta-lake/index.html | 6 +-
.../extensions-contrib/distinctcount/index.html | 4 +-
.../druid-exact-count-bitmap/index.html | 4 +-
.../druid-ranger-security/index.html | 4 +-
.../extensions-contrib/gce-extensions/index.html | 4 +-
.../extensions-contrib/graphite/index.html | 4 +-
.../extensions-contrib/iceberg/index.html | 32 +-
.../extensions-contrib/influx/index.html | 20 +-
.../extensions-contrib/influxdb-emitter/index.html | 4 +-
.../extensions-contrib/kafka-emitter/index.html | 4 +-
.../materialized-view/index.html | 40 +-
.../momentsketch-quantiles/index.html | 4 +-
.../moving-average-query/index.html | 4 +-
.../extensions-contrib/opentsdb-emitter/index.html | 4 +-
.../extensions-contrib/prometheus/index.html | 4 +-
.../rabbit-super-stream-injestion/index.html | 4 +-
.../extensions-contrib/redis-cache/index.html | 4 +-
.../spectator-histogram/index.html | 4 +-
.../extensions-contrib/sqlserver/index.html | 4 +-
.../extensions-contrib/statsd/index.html | 4 +-
.../tdigestsketch-quantiles/index.html | 4 +-
.../extensions-contrib/thrift/index.html | 24 +-
.../extensions-contrib/time-min-max/index.html | 4 +-
.../approximate-histograms/index.html | 4 +-
.../development/extensions-core/avro/index.html | 12 +-
.../development/extensions-core/azure/index.html | 4 +-
.../extensions-core/bloom-filter/index.html | 4 +-
.../development/extensions-core/catalog/index.html | 4 +-
.../datasketches-extension/index.html | 4 +-
.../extensions-core/datasketches-hll/index.html | 4 +-
.../extensions-core/datasketches-kll/index.html | 4 +-
.../datasketches-quantiles/index.html | 4 +-
.../extensions-core/datasketches-theta/index.html | 4 +-
.../extensions-core/datasketches-tuple/index.html | 4 +-
.../extensions-core/druid-aws-rds/index.html | 4 +-
.../druid-basic-security/index.html | 13 +-
.../extensions-core/druid-kerberos/index.html | 4 +-
.../extensions-core/druid-lookups/index.html | 4 +-
.../extensions-core/druid-pac4j/index.html | 4 +-
.../extensions-core/examples/index.html | 4 +-
.../development/extensions-core/google/index.html | 7 +-
.../development/extensions-core/hdfs/index.html | 47 +-
.../extensions-core/k8s-jobs/index.html | 21 +-
.../extensions-core/kubernetes/index.html | 33 +-
.../development/extensions-core/mysql/index.html | 4 +-
.../development/extensions-core/orc/index.html | 33 +-
.../development/extensions-core/parquet/index.html | 15 +-
.../extensions-core/postgresql/index.html | 4 +-
.../extensions-core/protobuf/index.html | 15 +-
.../development/extensions-core/s3/index.html | 10 +-
.../simple-client-sslcontext/index.html | 4 +-
.../development/extensions-core/stats/index.html | 4 +-
.../extensions-core/test-stats/index.html | 6 +-
docs/latest/development/javascript/index.html | 5 +-
docs/latest/development/modules/index.html | 4 +-
docs/latest/development/overview/index.html | 10 +-
docs/latest/development/versioning/index.html | 4 +-
.../ingestion/concurrent-append-replace/index.html | 4 +-
docs/latest/ingestion/data-formats/index.html | 247 +---------
docs/latest/ingestion/faq/index.html | 4 +-
docs/latest/ingestion/hadoop/index.html | 177 +-------
docs/latest/ingestion/index.html | 8 +-
docs/latest/ingestion/ingestion-spec/index.html | 53 +--
docs/latest/ingestion/input-sources/index.html | 8 +-
docs/latest/ingestion/kafka-ingestion/index.html | 16 +-
docs/latest/ingestion/kinesis-ingestion/index.html | 8 +-
.../ingestion/native-batch-firehose/index.html | 4 +-
.../ingestion/native-batch-simple-task/index.html | 4 +-
docs/latest/ingestion/native-batch/index.html | 13 +-
docs/latest/ingestion/partitioning/index.html | 10 +-
docs/latest/ingestion/rollup/index.html | 6 +-
docs/latest/ingestion/schema-design/index.html | 8 +-
docs/latest/ingestion/schema-model/index.html | 4 +-
.../ingestion/standalone-realtime/index.html | 4 +-
docs/latest/ingestion/streaming/index.html | 4 +-
docs/latest/ingestion/supervisor/index.html | 26 +-
docs/latest/ingestion/tasks/index.html | 24 +-
docs/latest/ingestion/tranquility/index.html | 4 +-
docs/latest/misc/papers-and-talks/index.html | 4 +-
docs/latest/multi-stage-query/concepts/index.html | 4 +-
docs/latest/multi-stage-query/examples/index.html | 4 +-
docs/latest/multi-stage-query/index.html | 4 +-
.../multi-stage-query/known-issues/index.html | 4 +-
docs/latest/multi-stage-query/reference/index.html | 8 +-
docs/latest/multi-stage-query/security/index.html | 4 +-
docs/latest/operations/alerts/index.html | 6 +-
docs/latest/operations/auth-ldap/index.html | 6 +-
docs/latest/operations/auth/index.html | 6 +-
.../operations/basic-cluster-tuning/index.html | 25 +-
.../operations/clean-metadata-store/index.html | 38 +-
.../operations/deep-storage-migration/index.html | 6 +-
docs/latest/operations/dump-segment/index.html | 8 +-
docs/latest/operations/durable-storage/index.html | 6 +-
.../operations/dynamic-config-provider/index.html | 6 +-
docs/latest/operations/export-metadata/index.html | 6 +-
.../latest/operations/high-availability/index.html | 6 +-
docs/latest/operations/http-compression/index.html | 6 +-
.../operations/insert-segment-to-db/index.html | 6 +-
docs/latest/operations/java/index.html | 6 +-
docs/latest/operations/kubernetes/index.html | 4 +-
.../operations/metadata-migration/index.html | 8 +-
docs/latest/operations/metrics/index.html | 29 +-
.../operations/migrate-from-firehose/index.html | 8 +-
docs/latest/operations/mixed-workloads/index.html | 18 +-
docs/latest/operations/other-hadoop/index.html | 133 +-----
.../latest/operations/password-provider/index.html | 6 +-
docs/latest/operations/pull-deps/index.html | 31 +-
docs/latest/operations/request-logging/index.html | 6 +-
docs/latest/operations/reset-cluster/index.html | 6 +-
docs/latest/operations/rolling-updates/index.html | 6 +-
.../operations/rule-configuration/index.html | 6 +-
.../latest/operations/security-overview/index.html | 6 +-
.../operations/security-user-auth/index.html | 6 +-
.../operations/segment-optimization/index.html | 8 +-
docs/latest/operations/single-server/index.html | 6 +-
docs/latest/operations/tls-support/index.html | 6 +-
.../operations/use_sbt_to_build_fat_jar/index.html | 23 +-
docs/latest/operations/web-console/index.html | 6 +-
docs/latest/querying/aggregations/index.html | 4 +-
docs/latest/querying/arrays/index.html | 4 +-
docs/latest/querying/caching/index.html | 4 +-
docs/latest/querying/dart/index.html | 4 +-
docs/latest/querying/datasource/index.html | 4 +-
.../querying/datasourcemetadataquery/index.html | 4 +-
docs/latest/querying/dimensionspecs/index.html | 4 +-
docs/latest/querying/filters/index.html | 4 +-
docs/latest/querying/geo/index.html | 8 +-
docs/latest/querying/granularities/index.html | 6 +-
docs/latest/querying/groupbyquery/index.html | 21 +-
docs/latest/querying/having/index.html | 4 +-
docs/latest/querying/hll-old/index.html | 4 +-
docs/latest/querying/index.html | 4 +-
docs/latest/querying/joins/index.html | 4 +-
.../querying/kafka-extraction-namespace/index.html | 4 +-
docs/latest/querying/limitspec/index.html | 4 +-
.../querying/lookups-cached-global/index.html | 4 +-
docs/latest/querying/lookups/index.html | 4 +-
docs/latest/querying/math-expr/index.html | 4 +-
.../querying/multi-value-dimensions/index.html | 4 +-
docs/latest/querying/multitenancy/index.html | 7 +-
docs/latest/querying/nested-columns/index.html | 4 +-
docs/latest/querying/post-aggregations/index.html | 4 +-
docs/latest/querying/projections/index.html | 6 +-
.../querying/query-context-reference/index.html | 6 +-
docs/latest/querying/query-context/index.html | 11 +-
docs/latest/querying/query-deep-storage/index.html | 4 +-
docs/latest/querying/query-execution/index.html | 4 +-
docs/latest/querying/query-processing/index.html | 4 +-
docs/latest/querying/scan-query/index.html | 4 +-
docs/latest/querying/searchquery/index.html | 4 +-
.../querying/segmentmetadataquery/index.html | 4 +-
docs/latest/querying/select-query/index.html | 4 +-
docs/latest/querying/sorting-orders/index.html | 4 +-
docs/latest/querying/sql-aggregations/index.html | 4 +-
.../latest/querying/sql-array-functions/index.html | 4 +-
docs/latest/querying/sql-data-types/index.html | 4 +-
docs/latest/querying/sql-functions/index.html | 4 +-
docs/latest/querying/sql-json-functions/index.html | 4 +-
.../latest/querying/sql-metadata-tables/index.html | 19 +-
.../sql-multivalue-string-functions/index.html | 4 +-
docs/latest/querying/sql-operators/index.html | 4 +-
docs/latest/querying/sql-query-context/index.html | 4 +-
docs/latest/querying/sql-scalar/index.html | 4 +-
docs/latest/querying/sql-translation/index.html | 4 +-
.../querying/sql-window-functions/index.html | 4 +-
docs/latest/querying/sql/index.html | 6 +-
docs/latest/querying/timeboundaryquery/index.html | 4 +-
docs/latest/querying/timeseriesquery/index.html | 4 +-
docs/latest/querying/tips-good-queries/index.html | 4 +-
docs/latest/querying/topnmetricspec/index.html | 4 +-
docs/latest/querying/topnquery/index.html | 6 +-
docs/latest/querying/troubleshooting/index.html | 4 +-
docs/latest/querying/using-caching/index.html | 4 +-
docs/latest/querying/virtual-columns/index.html | 4 +-
.../release-info/migr-ansi-sql-null/index.html | 4 +-
.../release-info/migr-front-coded-dict/index.html | 21 +-
docs/latest/release-info/migr-mvd-array/index.html | 4 +-
.../release-info/migr-subquery-limit/index.html | 4 +-
.../latest/release-info/migration-guide/index.html | 4 +-
docs/latest/release-info/release-notes/index.html | 13 +-
docs/latest/release-info/upgrade-notes/index.html | 9 +-
docs/latest/tutorials/cluster/index.html | 37 +-
docs/latest/tutorials/docker/index.html | 14 +-
docs/latest/tutorials/index.html | 22 +-
.../tutorials/tutorial-append-data/index.html | 6 +-
.../tutorials/tutorial-batch-hadoop/index.html | 98 +---
.../tutorials/tutorial-batch-native/index.html | 6 +-
docs/latest/tutorials/tutorial-batch/index.html | 6 +-
.../tutorials/tutorial-compaction/index.html | 6 +-
.../tutorials/tutorial-delete-data/index.html | 6 +-
docs/latest/tutorials/tutorial-extern/index.html | 6 +-
.../tutorials/tutorial-ingestion-spec/index.html | 11 +-
docs/latest/tutorials/tutorial-jdbc/index.html | 8 +-
docs/latest/tutorials/tutorial-kafka/index.html | 8 +-
.../tutorials/tutorial-kerberos-hadoop/index.html | 27 +-
.../latest/tutorials/tutorial-latest-by/index.html | 6 +-
.../tutorials/tutorial-msq-convert-spec/index.html | 6 +-
.../tutorials/tutorial-msq-extern/index.html | 6 +-
.../tutorial-query-deep-storage/index.html | 6 +-
docs/latest/tutorials/tutorial-query/index.html | 6 +-
.../latest/tutorials/tutorial-retention/index.html | 6 +-
docs/latest/tutorials/tutorial-rollup/index.html | 6 +-
.../tutorials/tutorial-sketches-theta/index.html | 6 +-
docs/latest/tutorials/tutorial-sql-null/index.html | 4 +-
.../tutorials/tutorial-sql-query-view/index.html | 6 +-
.../latest/tutorials/tutorial-transform/index.html | 6 +-
.../tutorials/tutorial-unnest-arrays/index.html | 6 +-
.../tutorials/tutorial-update-data/index.html | 6 +-
downloads/index.html | 14 +-
druid-powered/index.html | 4 +-
faq/index.html | 4 +-
index.html | 6 +-
js/version.js | 14 +-
libraries/index.html | 4 +-
licensing/index.html | 4 +-
lunr-index-1776461158069.json | 1 +
lunr-index-1776461205521.json | 1 +
lunr-index.json | 2 +-
search-doc-1776461158069.json | 1 +
search-doc-1776461205521.json | 1 +
search-doc.json | 2 +-
sitemap.xml | 2 +-
technology/index.html | 4 +-
use-cases/index.html | 4 +-
1291 files changed, 10878 insertions(+), 5765 deletions(-)
diff --git a/404.html b/404.html
index d289bbd96..e46721e46 100644
--- a/404.html
+++ b/404.html
@@ -5,8 +5,8 @@
<meta name="generator" content="Docusaurus v3.7.0">
<title data-rh="true">Page Not Found | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/404.html"><meta d [...]
<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.9232225e.js" defer="defer"></script>
+<script src="/assets/js/main.1776e851.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/assets/css/styles.985b7036.css b/assets/css/styles.985b7036.css
new file mode 100644
index 000000000..5f13da360
--- /dev/null
+++ b/assets/css/styles.985b7036.css
@@ -0,0 +1 @@
+.card,kbd{background-color:#fff}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}html,pre code,table tr{background-color:transparent}.alert,table th{background-color:inherit}a code,pre,table td,table th{color:inherit}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color .2 [...]
\ No newline at end of file
diff --git a/assets/js/01019b7b.499df2f1.js b/assets/js/01019b7b.499df2f1.js
new file mode 100644
index 000000000..055ab682b
--- /dev/null
+++ b/assets/js/01019b7b.499df2f1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7357],{9326:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>a,contentTitle:()=>d,default:()=>h,frontMatter:()=>t,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"tutorials/cluster","title":"Clustered deployment","description":"\x3c!--","source":"@site/docs/latest/tutorials/cluster.md","sourceDirName":"tutorials","slug":"/tutorials/cluster","permalink":"/docs/latest/tutorials/cluster","draft":false,"unlisted":false,"tags":[],"version": [...]
\ No newline at end of file
diff --git a/assets/js/0121958c.bac387cc.js b/assets/js/0121958c.bac387cc.js
new file mode 100644
index 000000000..0b7da88f1
--- /dev/null
+++ b/assets/js/0121958c.bac387cc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8048],{28453:(e,s,t)=>{t.d(s,{R:()=>a,x:()=>o});var n=t(96540);const r={},i=n.createContext(r);function a(e){const s=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),n.createElement(i.Provider,{value:s},e.children)}},46686:(e,s,t)=>{t.r(s),t.d(s,{as [...]
\ No newline at end of file
diff --git a/assets/js/01286a6a.b9b82b1f.js b/assets/js/01286a6a.b9b82b1f.js
new file mode 100644
index 000000000..8d9fe7bd3
--- /dev/null
+++ b/assets/js/01286a6a.b9b82b1f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9980],{28453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>c});var o=n(96540);const s={},r=o.createContext(s);function a(e){const t=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),o.createElement(r.Provider,{value:t},e.children)}},66340:(e,t,n)=>{n.r(t),n.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/029322d6.1d57b2b9.js b/assets/js/029322d6.1d57b2b9.js
new file mode 100644
index 000000000..93d1bd1b3
--- /dev/null
+++ b/assets/js/029322d6.1d57b2b9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1795],{28453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>o});var t=s(96540);const i={},r=t.createContext(i);function d(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),t.createElement(r.Provider,{value:n},e.children)}},72259:(e,n,s)=>{s.r(n),s.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/03206f80.11d0c1e3.js b/assets/js/03206f80.11d0c1e3.js
new file mode 100644
index 000000000..c267e5958
--- /dev/null
+++ b/assets/js/03206f80.11d0c1e3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7806],{13770:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"querying/query-execution","title":"Query execution","description":"\x3c!--","source":"@site/docs/37.0.0/querying/query-execution.md","sourceDirName":"querying","slug":"/querying/query-execution","permalink":"/docs/37.0.0/querying/query-execution","draft":false,"unlisted":fal [...]
\ No newline at end of file
diff --git a/assets/js/05bce26a.4c04200c.js b/assets/js/05bce26a.4c04200c.js
new file mode 100644
index 000000000..b6d5549d5
--- /dev/null
+++ b/assets/js/05bce26a.4c04200c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8985],{28453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>d});var o=n(96540);const s={},a=o.createContext(s);function i(e){const t=o.useContext(a);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),o.createElement(a.Provider,{value:t},e.children)}},49393:(e,t,n)=>{n.r(t),n.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/0604fc11.5fac6314.js b/assets/js/0604fc11.5fac6314.js
new file mode 100644
index 000000000..46bbecee7
--- /dev/null
+++ b/assets/js/0604fc11.5fac6314.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1066],{5094:(e,t,a)=>{a.d(t,{A:()=>s});const s=a.p+"assets/images/tutorial-kafka-data-loader-08-d9ba2317e15b6ef9c5462777c9607599.png"},12266:(e,t,a)=>{a.d(t,{A:()=>s});const s=a.p+"assets/images/tutorial-kafka-data-loader-04-7d140b6240d194151ff0c65dbb00a1ca.png"},27369:(e,t,a)=>{a.d(t,{A:()=>s});const s=a.p+"assets/images/tutorial-kafka-data-loader-10-6a55a1befc9900c50ed7f8f3f14071ed.png"},28453:(e,t,a)=>{a.d(t,{R:()=>r,x:()=> [...]
\ No newline at end of file
diff --git a/assets/js/0805fa5b.09e05407.js b/assets/js/0805fa5b.09e05407.js
new file mode 100644
index 000000000..3c472d6dd
--- /dev/null
+++ b/assets/js/0805fa5b.09e05407.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9976],{28453:(e,n,i)=>{i.d(n,{R:()=>d,x:()=>c});var t=i(96540);const r={},s=t.createContext(r);function d(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),t.createElement(s.Provider,{value:n},e.children)}},92535:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/09d767c3.9a3857db.js b/assets/js/09d767c3.9a3857db.js
new file mode 100644
index 000000000..6bc641619
--- /dev/null
+++ b/assets/js/09d767c3.9a3857db.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3718],{28453:(e,r,n)=>{n.d(r,{R:()=>d,x:()=>c});var s=n(96540);const t={},i=s.createContext(t);function d(e){const r=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function c(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),s.createElement(i.Provider,{value:r},e.children)}},61527:(e,r,n)=>{n.r(r),n.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/0b432fa0.24628107.js b/assets/js/0b432fa0.24628107.js
new file mode 100644
index 000000000..300bdb447
--- /dev/null
+++ b/assets/js/0b432fa0.24628107.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[861],{28453:(e,r,o)=>{o.d(r,{R:()=>i,x:()=>a});var n=o(96540);const s={},t=n.createContext(s);function i(e){const r=n.useContext(t);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function a(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),n.createElement(t.Provider,{value:r},e.children)}},99202:(e,r,o)=>{o.r(r),o.d(r,{ass [...]
\ No newline at end of file
diff --git a/assets/js/0bfd5047.3141383f.js b/assets/js/0bfd5047.3141383f.js
new file mode 100644
index 000000000..544bef828
--- /dev/null
+++ b/assets/js/0bfd5047.3141383f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5555],{28453:(e,n,i)=>{i.d(n,{R:()=>t,x:()=>c});var s=i(96540);const r={},o=s.createContext(r);function t(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:t(e.components),s.createElement(o.Provider,{value:n},e.children)}},89602:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/0c83841d.00b491a9.js b/assets/js/0c83841d.00b491a9.js
new file mode 100644
index 000000000..5be0e4c73
--- /dev/null
+++ b/assets/js/0c83841d.00b491a9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1724],{28453:(e,s,n)=>{n.d(s,{R:()=>o,x:()=>a});var t=n(96540);const i={},r=t.createContext(i);function o(e){const s=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function a(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),t.createElement(r.Provider,{value:s},e.children)}},79978:(e,s,n)=>{n.r(s),n.d(s,{as [...]
\ No newline at end of file
diff --git a/assets/js/0ddfffdf.cbbb7efc.js b/assets/js/0ddfffdf.cbbb7efc.js
new file mode 100644
index 000000000..f7dfb532c
--- /dev/null
+++ b/assets/js/0ddfffdf.cbbb7efc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4683],{28453:(e,t,a)=>{a.d(t,{R:()=>n,x:()=>o});var s=a(96540);const r={},i=s.createContext(r);function n(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:n(e.components),s.createElement(i.Provider,{value:t},e.children)}},51088:(e,t,a)=>{a.r(t),a.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/0e1d85c5.f4ed46f2.js b/assets/js/0e1d85c5.f4ed46f2.js
new file mode 100644
index 000000000..c06dbee4d
--- /dev/null
+++ b/assets/js/0e1d85c5.f4ed46f2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8752],{28453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>s});var t=i(96540);const r={},a=t.createContext(r);function o(e){const n=t.useContext(a);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),t.createElement(a.Provider,{value:n},e.children)}},72100:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/0ed5ea13.04289f8c.js b/assets/js/0ed5ea13.04289f8c.js
new file mode 100644
index 000000000..e09856e0b
--- /dev/null
+++ b/assets/js/0ed5ea13.04289f8c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[41],{28453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>r});var o=t(96540);const a={},i=o.createContext(a);function s(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),o.createElement(i.Provider,{value:n},e.children)}},89405:(e,n,t)=>{t.r(n),t.d(n,{asse [...]
\ No newline at end of file
diff --git a/assets/js/0ef91942.a4e2121c.js b/assets/js/0ef91942.a4e2121c.js
new file mode 100644
index 000000000..32f3bac91
--- /dev/null
+++ b/assets/js/0ef91942.a4e2121c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1313],{28453:(e,n,o)=>{o.d(n,{R:()=>s,x:()=>c});var t=o(96540);const i={},a=t.createContext(i);function s(e){const n=t.useContext(a);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),t.createElement(a.Provider,{value:n},e.children)}},62761:(e,n,o)=>{o.d(n,{A:()=>t}) [...]
\ No newline at end of file
diff --git a/assets/js/0f0fe4a1.6b14d446.js b/assets/js/0f0fe4a1.6b14d446.js
new file mode 100644
index 000000000..b468940bd
--- /dev/null
+++ b/assets/js/0f0fe4a1.6b14d446.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1110],{28453:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>d});var i=s(96540);const t={},r=i.createContext(t);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),i.createElement(r.Provider,{value:n},e.children)}},44982:(e,n,s)=>{s.r(n),s.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/0fa4abc7.99c59904.js b/assets/js/0fa4abc7.99c59904.js
new file mode 100644
index 000000000..fe4abda94
--- /dev/null
+++ b/assets/js/0fa4abc7.99c59904.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8181],{28453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>c});var s=n(96540);const i={},r=s.createContext(i);function a(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),s.createElement(r.Provider,{value:t},e.children)}},75715:(e,t,n)=>{n.r(t),n.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/1105704f.a8177b17.js b/assets/js/1105704f.a8177b17.js
new file mode 100644
index 000000000..b3ac4c3c4
--- /dev/null
+++ b/assets/js/1105704f.a8177b17.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6831],{638:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"link","label":"Introduction to Apache Druid","href":"/docs/37.0.0/design/","docId":"design/index","unlisted":false},{"type":"category","label":"Getting started","items":[{"type":"link","label":"Singl [...]
\ No newline at end of file
diff --git a/assets/js/12d97def.dd798d82.js b/assets/js/12d97def.dd798d82.js
new file mode 100644
index 000000000..1f89bb44f
--- /dev/null
+++ b/assets/js/12d97def.dd798d82.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6995],{1903:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"ingestion/kinesis-ingestion","title":"Amazon Kinesis ingestion","description":"\x3c!--","source":"@site/docs/latest/ingestion/kinesis-ingestion.md","sourceDirName":"ingestion","slug":"/ingestion/kinesis-ingestion","permalink":"/docs/latest/ingestion/kinesis-ingestion","draft" [...]
\ No newline at end of file
diff --git a/assets/js/13ec796f.b3c8f69c.js b/assets/js/13ec796f.b3c8f69c.js
new file mode 100644
index 000000000..830b18151
--- /dev/null
+++ b/assets/js/13ec796f.b3c8f69c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3371],{28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>c});var r=t(96540);const i={},s=r.createContext(i);function o(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),r.createElement(s.Provider,{value:n},e.children)}},29628:(e,n,t)=>{t.d(n,{A:()=>r}) [...]
\ No newline at end of file
diff --git a/assets/js/147ce3c4.1cd02089.js b/assets/js/147ce3c4.1cd02089.js
new file mode 100644
index 000000000..94830fe8a
--- /dev/null
+++ b/assets/js/147ce3c4.1cd02089.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2871],{21589:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>a,frontMatter:()=>d,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"ingestion/input-sources","title":"Input sources","description":"\x3c!--","source":"@site/docs/37.0.0/ingestion/input-sources.md","sourceDirName":"ingestion","slug":"/ingestion/input-sources","permalink":"/docs/37.0.0/ingestion/input-sources","draft":false,"unlisted":false,"t [...]
\ No newline at end of file
diff --git a/assets/js/147fd7c7.62bce2aa.js b/assets/js/147fd7c7.62bce2aa.js
new file mode 100644
index 000000000..10419e359
--- /dev/null
+++ b/assets/js/147fd7c7.62bce2aa.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6502],{28453:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>o});var i=n(96540);const a={},s=i.createContext(a);function r(e){const t=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),i.createElement(s.Provider,{value:t},e.children)}},61889:(e,t,n)=>{n.r(t),n.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/14d41493.77da0810.js b/assets/js/14d41493.77da0810.js
new file mode 100644
index 000000000..2a7cbcc0b
--- /dev/null
+++ b/assets/js/14d41493.77da0810.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7455],{28453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>i});var s=n(96540);const r={},o=s.createContext(r);function a(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),s.createElement(o.Provider,{value:t},e.children)}},75775:(e,t,n)=>{n.r(t),n.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/169f08d2.4b518cc6.js b/assets/js/169f08d2.4b518cc6.js
new file mode 100644
index 000000000..044e48df3
--- /dev/null
+++ b/assets/js/169f08d2.4b518cc6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7869],{27675:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/indexing_service-e985270b9e0e342af71c0673407e5673.png"},28453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>t});var i=s(96540);const r={},d=i.createContext(r);function a(e){const n=i.useContext(d);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r) [...]
\ No newline at end of file
diff --git a/assets/js/1773e92f.934d6984.js b/assets/js/1773e92f.934d6984.js
new file mode 100644
index 000000000..40425c6b8
--- /dev/null
+++ b/assets/js/1773e92f.934d6984.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3911],{5119:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/tutorial-quickstart-01-55397fb67d2b63fa55d39770575a846f.png"},19844:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/tutorial-quickstart-02-02e231b09af60b9b3e84a66bf3742b49.png"},28453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>o});var i=t(96540);const r={},s=i.createContext(r);function a(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof [...]
\ No newline at end of file
diff --git a/assets/js/180c7d3d.a2c03d1f.js b/assets/js/180c7d3d.a2c03d1f.js
new file mode 100644
index 000000000..21b8742bc
--- /dev/null
+++ b/assets/js/180c7d3d.a2c03d1f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4627],{28453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>r});var a=n(96540);const o={},i=a.createContext(o);function s(e){const t=a.useContext(i);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),a.createElement(i.Provider,{value:t},e.children)}},64987:(e,t,n)=>{n.r(t),n.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/1981460b.cd212836.js b/assets/js/1981460b.cd212836.js
new file mode 100644
index 000000000..067a2cf92
--- /dev/null
+++ b/assets/js/1981460b.cd212836.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3804],{28453:(e,o,n)=>{n.d(o,{R:()=>r,x:()=>d});var s=n(96540);const t={},i=s.createContext(t);function r(e){const o=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function d(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),s.createElement(i.Provider,{value:o},e.children)}},80862:(e,o,n)=>{n.r(o),n.d(o,{as [...]
\ No newline at end of file
diff --git a/assets/js/1a239e8f.96e31598.js b/assets/js/1a239e8f.96e31598.js
new file mode 100644
index 000000000..7cfdc041b
--- /dev/null
+++ b/assets/js/1a239e8f.96e31598.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3324],{28453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>r});var s=n(96540);const o={},i=s.createContext(o);function a(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),s.createElement(i.Provider,{value:t},e.children)}},83916:(e,t,n)=>{n.r(t),n.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/1b80b59d.691dcd3f.js b/assets/js/1b80b59d.691dcd3f.js
new file mode 100644
index 000000000..47a5c6707
--- /dev/null
+++ b/assets/js/1b80b59d.691dcd3f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6358],{28453:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>l});var r=t(96540);const s={},a=r.createContext(s);function i(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(a.Provider,{value:n},e.children)}},65537:(e,n,t)=>{t.d(n,{A:()=>T}) [...]
\ No newline at end of file
diff --git a/assets/js/1c6ec3f0.bbb45872.js b/assets/js/1c6ec3f0.bbb45872.js
new file mode 100644
index 000000000..291ebc0e0
--- /dev/null
+++ b/assets/js/1c6ec3f0.bbb45872.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9332],{26656:(e,t,i)=>{i.d(t,{A:()=>n});const n=i.p+"assets/images/druid-timeline-1eb095729ad3c5084dc7ff60aad39421.png"},28453:(e,t,i)=>{i.d(t,{R:()=>r,x:()=>o});var n=i(96540);const s={},a=n.createContext(s);function r(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e [...]
\ No newline at end of file
diff --git a/assets/js/1d411934.024ecade.js b/assets/js/1d411934.024ecade.js
new file mode 100644
index 000000000..8c7ddba2b
--- /dev/null
+++ b/assets/js/1d411934.024ecade.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7466],{28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>s});var r=t(96540);const a={},i=r.createContext(a);function o(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),r.createElement(i.Provider,{value:n},e.children)}},86152:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/1d5c3a27.f56891d6.js b/assets/js/1d5c3a27.f56891d6.js
new file mode 100644
index 000000000..116aa617d
--- /dev/null
+++ b/assets/js/1d5c3a27.f56891d6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2045],{3902:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>h,frontMatter:()=>c,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"data-management/manual-compaction","title":"Manual compaction","description":"\x3c!--","source":"@site/docs/37.0.0/data-management/manual-compaction.md","sourceDirName":"data-management","slug":"/data-management/manual-compaction","permalink":"/docs/37.0.0/data-management/man [...]
\ No newline at end of file
diff --git a/assets/js/1d603960.998a6f29.js b/assets/js/1d603960.998a6f29.js
new file mode 100644
index 000000000..9cf14d4b2
--- /dev/null
+++ b/assets/js/1d603960.998a6f29.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6820],{6167:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>i,default:()=>u,frontMatter:()=>c,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"operations/reset-cluster","title":"reset-cluster tool","description":"\x3c!--","source":"@site/docs/37.0.0/operations/reset-cluster.md","sourceDirName":"operations","slug":"/operations/reset-cluster","permalink":"/docs/37.0.0/operations/reset-cluster","draft":false,"unlisted" [...]
\ No newline at end of file
diff --git a/assets/js/1dd1d0e3.462e5b00.js b/assets/js/1dd1d0e3.462e5b00.js
new file mode 100644
index 000000000..70ca1da51
--- /dev/null
+++ b/assets/js/1dd1d0e3.462e5b00.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5865],{28453:(e,n,r)=>{r.d(n,{R:()=>d,x:()=>c});var s=r(96540);const i={},l=s.createContext(i);function d(e){const n=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),s.createElement(l.Provider,{value:n},e.children)}},44075:(e,n,r)=>{r.r(n),r.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/21c6245e.bea565fd.js b/assets/js/21c6245e.bea565fd.js
new file mode 100644
index 000000000..47ee6920b
--- /dev/null
+++ b/assets/js/21c6245e.bea565fd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6075],{28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>d});var a=t(96540);const i={},s=a.createContext(i);function o(e){const n=a.useContext(s);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),a.createElement(s.Provider,{value:n},e.children)}},97781:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/231e0e4d.ee9ca30d.js b/assets/js/231e0e4d.ee9ca30d.js
new file mode 100644
index 000000000..ffab12485
--- /dev/null
+++ b/assets/js/231e0e4d.ee9ca30d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4209],{28453:(e,r,t)=>{t.d(r,{R:()=>s,x:()=>a});var n=t(96540);const i={},o=n.createContext(i);function s(e){const r=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function a(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),n.createElement(o.Provider,{value:r},e.children)}},51591:(e,r,t)=>{t.r(r),t.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/2334.e3e4d8cb.js b/assets/js/2334.e3e4d8cb.js
new file mode 100644
index 000000000..652854319
--- /dev/null
+++ b/assets/js/2334.e3e4d8cb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2334],{697:(e,n,t)=>{t.d(n,{T:()=>r.T});var r=t(37981)},9703:(e,n,t)=>{t.d(n,{A:()=>u});var r=t(88496),o=t(92049),i=t(53098);const u=function(e){return"string"==typeof e||!(0,o.A)(e)&&(0,i.A)(e)&&"[object String]"==(0,r.A)(e)}},16145:(e,n,t)=>{t.d(n,{A:()=>c});var r=t(23958),o=t(38446),i=t(27422);const u=function(e){return function(n,t,u){var a=Object(n);if(!(0,o.A)(n)){var s=(0,r.A)(t,3);n=(0,i.A)(n),t=function(e){return s(a[ [...]
\ No newline at end of file
diff --git a/assets/js/236e2666.cf929c6d.js b/assets/js/236e2666.cf929c6d.js
new file mode 100644
index 000000000..6c59b2e5f
--- /dev/null
+++ b/assets/js/236e2666.cf929c6d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4669],{28453:(e,r,s)=>{s.d(r,{R:()=>o,x:()=>d});var t=s(96540);const n={},i=t.createContext(n);function o(e){const r=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function d(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:o(e.components),t.createElement(i.Provider,{value:r},e.children)}},95663:(e,r,s)=>{s.r(r),s.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/2677d7b8.b95f4e4b.js b/assets/js/2677d7b8.b95f4e4b.js
new file mode 100644
index 000000000..f3de69a4a
--- /dev/null
+++ b/assets/js/2677d7b8.b95f4e4b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2800],{28453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>o});var i=t(96540);const r={},a=i.createContext(r);function s(e){const n=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),i.createElement(a.Provider,{value:n},e.children)}},62846:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/26810935.209398ef.js b/assets/js/26810935.209398ef.js
new file mode 100644
index 000000000..d7ae892dd
--- /dev/null
+++ b/assets/js/26810935.209398ef.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1259],{22407:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"development/extensions-contrib/druid-exact-count-bitmap","title":"Exact Count Bitmap","description":"\x3c!--","source":"@site/docs/37.0.0/development/extensions-contrib/druid-exact-count-bitmap.md","sourceDirName":"development/extensions-contrib","slug":"/development/extensi [...]
\ No newline at end of file
diff --git a/assets/js/26ed7dd1.2e889882.js b/assets/js/26ed7dd1.2e889882.js
new file mode 100644
index 000000000..465646902
--- /dev/null
+++ b/assets/js/26ed7dd1.2e889882.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5828],{28453:(e,s,t)=>{t.d(s,{R:()=>r,x:()=>l});var n=t(96540);const o={},a=n.createContext(o);function r(e){const s=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),n.createElement(a.Provider,{value:s},e.children)}},74976:(e,s,t)=>{t.r(s),t.d(s,{as [...]
\ No newline at end of file
diff --git a/assets/js/274a38ba.cf8e49af.js b/assets/js/274a38ba.cf8e49af.js
new file mode 100644
index 000000000..93a7f0f09
--- /dev/null
+++ b/assets/js/274a38ba.cf8e49af.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6301],{13656:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>a,contentTitle:()=>d,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"ingestion/index","title":"Ingestion overview","description":"\x3c!--","source":"@site/docs/latest/ingestion/index.md","sourceDirName":"ingestion","slug":"/ingestion/","permalink":"/docs/latest/ingestion/","draft":false,"unlisted":false,"tags":[],"version":"current","frontMat [...]
\ No newline at end of file
diff --git a/assets/js/292ba8e7.18f93fb9.js b/assets/js/292ba8e7.18f93fb9.js
new file mode 100644
index 000000000..14d9a4142
--- /dev/null
+++ b/assets/js/292ba8e7.18f93fb9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[947],{28453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>o});var t=s(96540);const i={},r=t.createContext(i);function d(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),t.createElement(r.Provider,{value:n},e.children)}},79692:(e,n,s)=>{s.r(n),s.d(n,{ass [...]
\ No newline at end of file
diff --git a/assets/js/293487cb.9ecb147c.js b/assets/js/293487cb.9ecb147c.js
new file mode 100644
index 000000000..a4785db3b
--- /dev/null
+++ b/assets/js/293487cb.9ecb147c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[361],{28453:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>d});var i=s(96540);const t={},r=i.createContext(t);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),i.createElement(r.Provider,{value:n},e.children)}},43029:(e,n,s)=>{s.r(n),s.d(n,{ass [...]
\ No newline at end of file
diff --git a/assets/js/298bd804.55d3fae9.js b/assets/js/298bd804.55d3fae9.js
new file mode 100644
index 000000000..afbc16185
--- /dev/null
+++ b/assets/js/298bd804.55d3fae9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8078],{28453:(e,t,r)=>{r.d(t,{R:()=>a,x:()=>i});var s=r(96540);const n={},o=s.createContext(n);function a(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),s.createElement(o.Provider,{value:t},e.children)}},53892:(e,t,r)=>{r.r(t),r.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/2c1d8538.706204d9.js b/assets/js/2c1d8538.706204d9.js
new file mode 100644
index 000000000..a2ad6881c
--- /dev/null
+++ b/assets/js/2c1d8538.706204d9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5089],{28453:(e,r,t)=>{t.d(r,{R:()=>n,x:()=>i});var o=t(96540);const s={},a=o.createContext(s);function n(e){const r=o.useContext(a);return o.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:n(e.components),o.createElement(a.Provider,{value:r},e.children)}},80069:(e,r,t)=>{t.r(r),t.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/2cd80ed8.4cbfa7f3.js b/assets/js/2cd80ed8.4cbfa7f3.js
new file mode 100644
index 000000000..e0db37deb
--- /dev/null
+++ b/assets/js/2cd80ed8.4cbfa7f3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3019],{28453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>l});var o=s(96540);const r={},i=o.createContext(r);function t(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:t(e.components),o.createElement(i.Provider,{value:n},e.children)}},95247:(e,n,s)=>{s.r(n),s.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/2ded85e5.46495113.js b/assets/js/2ded85e5.46495113.js
new file mode 100644
index 000000000..86583fa47
--- /dev/null
+++ b/assets/js/2ded85e5.46495113.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1953],{25702:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>p,frontMatter:()=>r,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"operations/migrate-from-firehose","title":"Migrate from firehose to input source ingestion (legacy)","description":"\x3c!--","source":"@site/docs/37.0.0/operations/migrate-from-firehose-ingestion.md","sourceDirName":"operations","slug":"/operations/migrate-from-firehose","pe [...]
\ No newline at end of file
diff --git a/assets/js/2fbe7d8e.c2b63b24.js b/assets/js/2fbe7d8e.c2b63b24.js
new file mode 100644
index 000000000..2cff54a7d
--- /dev/null
+++ b/assets/js/2fbe7d8e.c2b63b24.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5392],{28453:(e,n,r)=>{r.d(n,{R:()=>l,x:()=>a});var s=r(96540);const i={},t=s.createContext(i);function l(e){const n=s.useContext(t);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:l(e.components),s.createElement(t.Provider,{value:n},e.children)}},82279:(e,n,r)=>{r.r(n),r.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/304690d0.3b8b5a5c.js b/assets/js/304690d0.3b8b5a5c.js
new file mode 100644
index 000000000..977f7f1e2
--- /dev/null
+++ b/assets/js/304690d0.3b8b5a5c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6935],{28453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>l});var s=t(96540);const i={},o=s.createContext(i);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:n},e.children)}},91853:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/30caca7b.547df741.js b/assets/js/30caca7b.547df741.js
new file mode 100644
index 000000000..b992f16de
--- /dev/null
+++ b/assets/js/30caca7b.547df741.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5297],{28453:(e,r,n)=>{n.d(r,{R:()=>d,x:()=>c});var s=n(96540);const i={},t=s.createContext(i);function d(e){const r=s.useContext(t);return s.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function c(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),s.createElement(t.Provider,{value:r},e.children)}},52147:(e,r,n)=>{n.r(r),n.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/311bd1fe.d899689e.js b/assets/js/311bd1fe.d899689e.js
new file mode 100644
index 000000000..5f15859e8
--- /dev/null
+++ b/assets/js/311bd1fe.d899689e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4596],{28453:(e,t,i)=>{i.d(t,{R:()=>a,x:()=>o});var n=i(96540);const s={},r=n.createContext(s);function a(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),n.createElement(r.Provider,{value:t},e.children)}},64785:(e,t,i)=>{i.r(t),i.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/31a41724.41c17dfb.js b/assets/js/31a41724.41c17dfb.js
new file mode 100644
index 000000000..fcb267ac9
--- /dev/null
+++ b/assets/js/31a41724.41c17dfb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4986],{26837:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>a,contentTitle:()=>c,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"querying/query-processing","title":"Query processing","description":"\x3c!--","source":"@site/docs/37.0.0/querying/query-processing.md","sourceDirName":"querying","slug":"/querying/query-processing","permalink":"/docs/37.0.0/querying/query-processing","draft":false,"unlisted [...]
\ No newline at end of file
diff --git a/assets/js/31d1e189.2b3e251f.js b/assets/js/31d1e189.2b3e251f.js
new file mode 100644
index 000000000..36c5a31d4
--- /dev/null
+++ b/assets/js/31d1e189.2b3e251f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1613],{28453:(e,t,s)=>{s.d(t,{R:()=>i,x:()=>o});var r=s(96540);const n={},d=r.createContext(n);function i(e){const t=r.useContext(d);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:i(e.components),r.createElement(d.Provider,{value:t},e.children)}},60795:(e,t,s)=>{s.r(t),s.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/328099ed.c2c3800e.js b/assets/js/328099ed.c2c3800e.js
new file mode 100644
index 000000000..4e49832de
--- /dev/null
+++ b/assets/js/328099ed.c2c3800e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8365],{28453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>a});var s=t(96540);const i={},d=s.createContext(i);function r(e){const n=s.useContext(d);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(d.Provider,{value:n},e.children)}},99017:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/32b3b4cb.70817b38.js b/assets/js/32b3b4cb.70817b38.js
new file mode 100644
index 000000000..89318f356
--- /dev/null
+++ b/assets/js/32b3b4cb.70817b38.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1548],{28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>l});var i=t(96540);const s={},a=i.createContext(s);function o(e){const n=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(a.Provider,{value:n},e.children)}},45803:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/3337a722.4a142402.js b/assets/js/3337a722.4a142402.js
new file mode 100644
index 000000000..c67dd06b5
--- /dev/null
+++ b/assets/js/3337a722.4a142402.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8195],{28453:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>s});var r=t(96540);const o={},a=r.createContext(o);function i(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),r.createElement(a.Provider,{value:n},e.children)}},39918:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/3624.a4fd1a30.js b/assets/js/3624.a4fd1a30.js
new file mode 100644
index 000000000..254e9b721
--- /dev/null
+++ b/assets/js/3624.a4fd1a30.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3624],{2634:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n){for(var r=-1,e=null==t?0:t.length,o=0,c=[];++r<e;){var u=t[r];n(u,r,t)&&(c[o++]=u)}return c}},6240:(t,n,r)=>{r.d(n,{A:()=>c});var e=r(79841),o=r(38446);const c=function(t,n){return function(r,e){if(null==r)return r;if(!(0,o.A)(r))return t(r,e);for(var c=r.length,u=n?c:-1,a=Object(r);(n?u--:++u<c)&&!1!==e(a[u],u,a););return r}}(e.A)},7819:(t,n,r)=>{r.d(n,{A:()=>A});va [...]
\ No newline at end of file
diff --git a/assets/js/36497d9a.5dbd369b.js b/assets/js/36497d9a.5dbd369b.js
new file mode 100644
index 000000000..d400cdd9d
--- /dev/null
+++ b/assets/js/36497d9a.5dbd369b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6866],{28453:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>c});var r=s(96540);const t={},i=r.createContext(t);function o(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),r.createElement(i.Provider,{value:n},e.children)}},34616:(e,n,s)=>{s.r(n),s.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/36759ffb.a15e32f2.js b/assets/js/36759ffb.a15e32f2.js
new file mode 100644
index 000000000..015f7a356
--- /dev/null
+++ b/assets/js/36759ffb.a15e32f2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6141],{28453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>c});var t=i(96540);const l={},d=t.createContext(l);function o(e){const n=t.useContext(d);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:o(e.components),t.createElement(d.Provider,{value:n},e.children)}},49258:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/381afd34.4ca01fc4.js b/assets/js/381afd34.4ca01fc4.js
new file mode 100644
index 000000000..4bec2d6eb
--- /dev/null
+++ b/assets/js/381afd34.4ca01fc4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[739],{28453:(e,s,n)=>{n.d(s,{R:()=>d,x:()=>o});var i=n(96540);const r={},t=i.createContext(r);function d(e){const s=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(t.Provider,{value:s},e.children)}},30974:(e,s,n)=>{n.r(s),n.d(s,{ass [...]
\ No newline at end of file
diff --git a/assets/js/384bae41.dbe52df4.js b/assets/js/384bae41.dbe52df4.js
new file mode 100644
index 000000000..be73df6e6
--- /dev/null
+++ b/assets/js/384bae41.dbe52df4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3575],{28453:(e,s,t)=>{t.d(s,{R:()=>o,x:()=>d});var n=t(96540);const r={},i=n.createContext(r);function o(e){const s=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function d(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),n.createElement(i.Provider,{value:s},e.children)}},28554:(e,s,t)=>{t.r(s),t.d(s,{as [...]
\ No newline at end of file
diff --git a/assets/js/3942b62f.61cf69d6.js b/assets/js/3942b62f.61cf69d6.js
new file mode 100644
index 000000000..53cf4cec9
--- /dev/null
+++ b/assets/js/3942b62f.61cf69d6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4213],{28453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>d});var s=i(96540);const t={},r=s.createContext(t);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),s.createElement(r.Provider,{value:n},e.children)}},66936:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/3b1bc22c.2aca2a51.js b/assets/js/3b1bc22c.2aca2a51.js
new file mode 100644
index 000000000..da8e0028b
--- /dev/null
+++ b/assets/js/3b1bc22c.2aca2a51.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5639],{28453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>o});var a=t(96540);const i={},s=a.createContext(i);function r(e){const n=a.useContext(s);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),a.createElement(s.Provider,{value:n},e.children)}},48885:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/3ba5c2fc.5b28e1ec.js b/assets/js/3ba5c2fc.5b28e1ec.js
new file mode 100644
index 000000000..5f5e6588c
--- /dev/null
+++ b/assets/js/3ba5c2fc.5b28e1ec.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8108],{28453:(e,r,i)=>{i.d(r,{R:()=>o,x:()=>a});var t=i(96540);const n={},s=t.createContext(n);function o(e){const r=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function a(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:o(e.components),t.createElement(s.Provider,{value:r},e.children)}},49070:(e,r,i)=>{i.r(r),i.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/3be3ed08.4b81cf90.js b/assets/js/3be3ed08.4b81cf90.js
new file mode 100644
index 000000000..50c8286af
--- /dev/null
+++ b/assets/js/3be3ed08.4b81cf90.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2927],{28453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>a});var i=n(96540);const r={},s=i.createContext(r);function o(e){const t=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),i.createElement(s.Provider,{value:t},e.children)}},31369:(e,t,n)=>{n.d(t,{A:()=>i}) [...]
\ No newline at end of file
diff --git a/assets/js/3c1a9b2e.6628715a.js b/assets/js/3c1a9b2e.6628715a.js
new file mode 100644
index 000000000..f681998cd
--- /dev/null
+++ b/assets/js/3c1a9b2e.6628715a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2173],{2024:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/druid-column-types-0cd9a011b4cc2b4d05f93b3b31a7e735.png"},28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>r});var s=t(96540);const i={},a=s.createContext(i);function o(e){const n=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i [...]
\ No newline at end of file
diff --git a/assets/js/3c7ec4d5.c69ec836.js b/assets/js/3c7ec4d5.c69ec836.js
new file mode 100644
index 000000000..2633bd158
--- /dev/null
+++ b/assets/js/3c7ec4d5.c69ec836.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[749],{28453:(e,r,n)=>{n.d(r,{R:()=>s,x:()=>a});var t=n(96540);const i={},o=t.createContext(i);function s(e){const r=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function a(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),t.createElement(o.Provider,{value:r},e.children)}},80884:(e,r,n)=>{n.r(r),n.d(r,{ass [...]
\ No newline at end of file
diff --git a/assets/js/3ce7adbc.8bf95b30.js b/assets/js/3ce7adbc.8bf95b30.js
new file mode 100644
index 000000000..6fc7678fd
--- /dev/null
+++ b/assets/js/3ce7adbc.8bf95b30.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5475],{28453:(e,n,i)=>{i.d(n,{R:()=>a,x:()=>o});var t=i(96540);const r={},s=t.createContext(r);function a(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),t.createElement(s.Provider,{value:n},e.children)}},28743:(e,n,i)=>{i.d(n,{A:()=>t}) [...]
\ No newline at end of file
diff --git a/assets/js/3f0a7e22.429615ad.js b/assets/js/3f0a7e22.429615ad.js
new file mode 100644
index 000000000..b2240bc66
--- /dev/null
+++ b/assets/js/3f0a7e22.429615ad.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2277],{28453:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>o});var i=n(96540);const d={},s=i.createContext(d);function r(e){const t=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:r(e.components),i.createElement(s.Provider,{value:t},e.children)}},85483:(e,t,n)=>{n.r(t),n.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/3f445504.9f7d4c48.js b/assets/js/3f445504.9f7d4c48.js
new file mode 100644
index 000000000..d55a9b072
--- /dev/null
+++ b/assets/js/3f445504.9f7d4c48.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1186],{13287:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>a,contentTitle:()=>d,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"development/extensions-core/mysql","title":"MySQL metadata store","description":"\x3c!--","source":"@site/docs/37.0.0/development/extensions-core/mysql.md","sourceDirName":"development/extensions-core","slug":"/development/extensions-core/mysql","permalink":"/docs/37.0.0/dev [...]
\ No newline at end of file
diff --git a/assets/js/3f5566d7.5dcc0c92.js b/assets/js/3f5566d7.5dcc0c92.js
new file mode 100644
index 000000000..1562c4096
--- /dev/null
+++ b/assets/js/3f5566d7.5dcc0c92.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3305],{28453:(e,r,t)=>{t.d(r,{R:()=>o,x:()=>d});var i=t(96540);const s={},n=i.createContext(s);function o(e){const r=i.useContext(n);return i.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function d(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(n.Provider,{value:r},e.children)}},38844:(e,r,t)=>{t.r(r),t.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/3f5acf1e.0bee3697.js b/assets/js/3f5acf1e.0bee3697.js
new file mode 100644
index 000000000..fcdb7451b
--- /dev/null
+++ b/assets/js/3f5acf1e.0bee3697.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3291],{28453:(e,t,a)=>{a.d(t,{R:()=>o,x:()=>c});var n=a(96540);const s={},i=n.createContext(s);function o(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),n.createElement(i.Provider,{value:t},e.children)}},60099:(e,t,a)=>{a.r(t),a.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/3f835f19.1ef25451.js b/assets/js/3f835f19.1ef25451.js
new file mode 100644
index 000000000..94651296d
--- /dev/null
+++ b/assets/js/3f835f19.1ef25451.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[584],{26194:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>o,contentTitle:()=>i,default:()=>h,frontMatter:()=>d,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"api-reference/legacy-metadata-api","title":"Legacy metadata API","description":"\x3c!--","source":"@site/docs/37.0.0/api-reference/legacy-metadata-api.md","sourceDirName":"api-reference","slug":"/api-reference/legacy-metadata-api","permalink":"/docs/37.0.0/api-reference/legac [...]
\ No newline at end of file
diff --git a/assets/js/4059bc98.38149bac.js b/assets/js/4059bc98.38149bac.js
new file mode 100644
index 000000000..346d2d467
--- /dev/null
+++ b/assets/js/4059bc98.38149bac.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1799],{28453:(e,n,r)=>{r.d(n,{R:()=>l,x:()=>t});var a=r(96540);const i={},s=a.createContext(i);function l(e){const n=a.useContext(s);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:l(e.components),a.createElement(s.Provider,{value:n},e.children)}},91127:(e,n,r)=>{r.r(n),r.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/40d22985.f1574e46.js b/assets/js/40d22985.f1574e46.js
new file mode 100644
index 000000000..fa9f7717f
--- /dev/null
+++ b/assets/js/40d22985.f1574e46.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1307],{28453:(e,t,s)=>{s.d(t,{R:()=>i,x:()=>o});var n=s(96540);const d={},r=n.createContext(d);function i(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:i(e.components),n.createElement(r.Provider,{value:t},e.children)}},51463:(e,t,s)=>{s.r(t),s.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/412ee224.50a4d74a.js b/assets/js/412ee224.50a4d74a.js
new file mode 100644
index 000000000..f566a9146
--- /dev/null
+++ b/assets/js/412ee224.50a4d74a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7722],{28453:(e,s,d)=>{d.d(s,{R:()=>n,x:()=>c});var r=d(96540);const i={},t=r.createContext(i);function n(e){const s=r.useContext(t);return r.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:n(e.components),r.createElement(t.Provider,{value:s},e.children)}},42055:(e,s,d)=>{d.r(s),d.d(s,{as [...]
\ No newline at end of file
diff --git a/assets/js/414403c6.36294ffe.js b/assets/js/414403c6.36294ffe.js
new file mode 100644
index 000000000..ade1900e5
--- /dev/null
+++ b/assets/js/414403c6.36294ffe.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8230],{28453:(e,s,n)=>{n.d(s,{R:()=>d,x:()=>o});var i=n(96540);const r={},t=i.createContext(r);function d(e){const s=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(t.Provider,{value:s},e.children)}},44102:(e,s,n)=>{n.r(s),n.d(s,{as [...]
\ No newline at end of file
diff --git a/assets/js/41b6636f.efd7e838.js b/assets/js/41b6636f.efd7e838.js
new file mode 100644
index 000000000..09e3e37cc
--- /dev/null
+++ b/assets/js/41b6636f.efd7e838.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2283],{28453:(e,n,i)=>{i.d(n,{R:()=>l,x:()=>r});var t=i(96540);const s={},a=t.createContext(s);function l(e){const n=t.useContext(a);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),t.createElement(a.Provider,{value:n},e.children)}},55238:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/4206.67c565fc.js b/assets/js/4206.67c565fc.js
new file mode 100644
index 000000000..a49650b8c
--- /dev/null
+++ b/assets/js/4206.67c565fc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4206],{61825:(e,t,a)=>{a.d(t,{diagram:()=>b});var i=a(63933),n=a(8159),l=a(77286),r=a(10009),s=a(78731),o=a(20007),c=r.UI.pie,p={sections:new Map,showData:!1,config:c},d=p.sections,g=p.showData,u=structuredClone(c),h=(0,r.K2)((()=>structuredClone(u)),"getConfig"),m=(0,r.K2)((()=>{d=new Map,g=p.showData,(0,r.IU)()}),"clear"),f=(0,r.K2)((({label:e,value:t})=>{d.has(e)||(d.set(e,t),r.Rm.debug(`added new section: ${e}, with value: [...]
\ No newline at end of file
diff --git a/assets/js/43476833.d381c9eb.js b/assets/js/43476833.d381c9eb.js
new file mode 100644
index 000000000..48f0347ca
--- /dev/null
+++ b/assets/js/43476833.d381c9eb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[775],{2619:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>d,metadata:()=>t,toc:()=>o});const t=JSON.parse('{"id":"querying/sql-operators","title":"Druid SQL Operators","description":"\x3c!--","source":"@site/docs/37.0.0/querying/sql-operators.md","sourceDirName":"querying","slug":"/querying/sql-operators","permalink":"/docs/37.0.0/querying/sql-operators","draft":false,"unlisted":false,"ta [...]
\ No newline at end of file
diff --git a/assets/js/43c5580d.2f2f2f0e.js b/assets/js/43c5580d.2f2f2f0e.js
new file mode 100644
index 000000000..035034f9d
--- /dev/null
+++ b/assets/js/43c5580d.2f2f2f0e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1007],{28453:(e,s,i)=>{i.d(s,{R:()=>t,x:()=>a});var n=i(96540);const r={},o=n.createContext(r);function t(e){const s=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function a(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:t(e.components),n.createElement(o.Provider,{value:s},e.children)}},81686:(e,s,i)=>{i.r(s),i.d(s,{as [...]
\ No newline at end of file
diff --git a/assets/js/43cc406c.a40b9d1a.js b/assets/js/43cc406c.a40b9d1a.js
new file mode 100644
index 000000000..40be0fcef
--- /dev/null
+++ b/assets/js/43cc406c.a40b9d1a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8927],{28453:(e,r,n)=>{n.d(r,{R:()=>a,x:()=>o});var t=n(96540);const s={},i=t.createContext(s);function a(e){const r=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function o(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),t.createElement(i.Provider,{value:r},e.children)}},46093:(e,r,n)=>{n.r(r),n.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/43f7e6c9.93cc58b3.js b/assets/js/43f7e6c9.93cc58b3.js
new file mode 100644
index 000000000..30097cb36
--- /dev/null
+++ b/assets/js/43f7e6c9.93cc58b3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6888],{28453:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>i});var s=n(96540);const a={},o=s.createContext(a);function r(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),s.createElement(o.Provider,{value:t},e.children)}},54229:(e,t,n)=>{n.r(t),n.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/44566a88.52cbdbc3.js b/assets/js/44566a88.52cbdbc3.js
new file mode 100644
index 000000000..9fd86c62a
--- /dev/null
+++ b/assets/js/44566a88.52cbdbc3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1693],{28453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>l});var s=t(96540);const a={},i=s.createContext(a);function r(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),s.createElement(i.Provider,{value:n},e.children)}},65537:(e,n,t)=>{t.d(n,{A:()=>T}) [...]
\ No newline at end of file
diff --git a/assets/js/445bf8fb.83daab5a.js b/assets/js/445bf8fb.83daab5a.js
new file mode 100644
index 000000000..bbb337360
--- /dev/null
+++ b/assets/js/445bf8fb.83daab5a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8104],{6538:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>h,frontMatter:()=>r,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"development/extensions-contrib/iceberg","title":"Iceberg extension","description":"\x3c!--","source":"@site/docs/latest/development/extensions-contrib/iceberg.md","sourceDirName":"development/extensions-contrib","slug":"/development/extensions-contrib/iceberg","permalink":"/d [...]
\ No newline at end of file
diff --git a/assets/js/44c54f77.d92f1911.js b/assets/js/44c54f77.d92f1911.js
new file mode 100644
index 000000000..ba959d393
--- /dev/null
+++ b/assets/js/44c54f77.d92f1911.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6295],{19185:(n,e,t)=>{t.r(e),t.d(e,{assets:()=>o,contentTitle:()=>a,default:()=>u,frontMatter:()=>l,metadata:()=>d,toc:()=>r});const d=JSON.parse('{"id":"operations/dump-segment","title":"dump-segment tool","description":"\x3c!--","source":"@site/docs/37.0.0/operations/dump-segment.md","sourceDirName":"operations","slug":"/operations/dump-segment","permalink":"/docs/37.0.0/operations/dump-segment","draft":false,"unlisted":fal [...]
\ No newline at end of file
diff --git a/assets/js/45512dc1.6323c17f.js b/assets/js/45512dc1.6323c17f.js
new file mode 100644
index 000000000..43c2e6c1f
--- /dev/null
+++ b/assets/js/45512dc1.6323c17f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1466],{28453:(e,n,i)=>{i.d(n,{R:()=>r,x:()=>a});var t=i(96540);const o={},s=t.createContext(o);function r(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),t.createElement(s.Provider,{value:n},e.children)}},97115:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/4644c7b4.c34762bb.js b/assets/js/4644c7b4.c34762bb.js
new file mode 100644
index 000000000..6ef2934a5
--- /dev/null
+++ b/assets/js/4644c7b4.c34762bb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6653],{28453:(e,s,r)=>{r.d(s,{R:()=>d,x:()=>o});var i=r(96540);const n={},t=i.createContext(n);function d(e){const s=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:d(e.components),i.createElement(t.Provider,{value:s},e.children)}},78501:(e,s,r)=>{r.r(s),r.d(s,{as [...]
\ No newline at end of file
diff --git a/assets/js/46e64815.84666734.js b/assets/js/46e64815.84666734.js
new file mode 100644
index 000000000..71ded67b6
--- /dev/null
+++ b/assets/js/46e64815.84666734.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5466],{18789:(e,s,n)=>{n.d(s,{A:()=>t});const t=n.p+"assets/images/web-console-03-data-loader-2-6eb770d4034261a96b968deb305f1258.png"},24578:(e,s,n)=>{n.d(s,{A:()=>t});const t=n.p+"assets/images/web-console-13-lookups-337b7e84ed82f5580448a5ba083f91c1.png"},25631:(e,s,n)=>{n.d(s,{A:()=>t});const t=n.p+"assets/images/web-console-06-segments-2a1f30ad959f3af6b5bbe9818f29674d.png"},27507:(e,s,n)=>{n.d(s,{A:()=>t});const t=n.p+"asse [...]
\ No newline at end of file
diff --git a/assets/js/491b243c.aefcce2e.js b/assets/js/491b243c.aefcce2e.js
new file mode 100644
index 000000000..00d4d1e9f
--- /dev/null
+++ b/assets/js/491b243c.aefcce2e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4243],{19612:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"tutorials/tutorial-query-deep-storage","title":"Tutorial: Query from deep storage","description":"\x3c!--","source":"@site/docs/37.0.0/tutorials/tutorial-query-deep-storage.md","sourceDirName":"tutorials","slug":"/tutorials/tutorial-query-deep-storage","permalink":"/docs/37. [...]
\ No newline at end of file
diff --git a/assets/js/49fe2b93.f3cf6869.js b/assets/js/49fe2b93.f3cf6869.js
new file mode 100644
index 000000000..f790d5f80
--- /dev/null
+++ b/assets/js/49fe2b93.f3cf6869.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9409],{28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>l});var i=t(96540);const r={},s=i.createContext(r);function o(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),i.createElement(s.Provider,{value:n},e.children)}},31490:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/4a060e30.aadb34a1.js b/assets/js/4a060e30.aadb34a1.js
new file mode 100644
index 000000000..7c9a8471d
--- /dev/null
+++ b/assets/js/4a060e30.aadb34a1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3248],{28453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>o});var i=n(96540);const r={},a=i.createContext(r);function s(e){const t=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),i.createElement(a.Provider,{value:t},e.children)}},71857:(e,t,n)=>{n.r(t),n.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/4a883549.b1d93110.js b/assets/js/4a883549.b1d93110.js
new file mode 100644
index 000000000..0d0ab4d7f
--- /dev/null
+++ b/assets/js/4a883549.b1d93110.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9836],{28453:(e,d,i)=>{i.d(d,{R:()=>c,x:()=>l});var n=i(96540);const s={},r=n.createContext(s);function c(e){const d=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(d):{...d,...e}}),[d,e])}function l(e){let d;return d=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),n.createElement(r.Provider,{value:d},e.children)}},67735:(e,d,i)=>{i.r(d),i.d(d,{as [...]
\ No newline at end of file
diff --git a/assets/js/4dba972c.63e91e8c.js b/assets/js/4dba972c.63e91e8c.js
new file mode 100644
index 000000000..879e5d615
--- /dev/null
+++ b/assets/js/4dba972c.63e91e8c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[69],{28453:(e,n,a)=>{a.d(n,{R:()=>i,x:()=>o});var t=a(96540);const s={},r=t.createContext(s);function i(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),t.createElement(r.Provider,{value:n},e.children)}},45664:(e,n,a)=>{a.r(n),a.d(n,{asse [...]
\ No newline at end of file
diff --git a/assets/js/4fe819b1.eb1f6ba3.js b/assets/js/4fe819b1.eb1f6ba3.js
new file mode 100644
index 000000000..94f60d322
--- /dev/null
+++ b/assets/js/4fe819b1.eb1f6ba3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9743],{28453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>l});var i=s(96540);const r={},t=i.createContext(r);function a(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(t.Provider,{value:n},e.children)}},65537:(e,n,s)=>{s.d(n,{A:()=>y}) [...]
\ No newline at end of file
diff --git a/assets/js/5062cedc.fa54a486.js b/assets/js/5062cedc.fa54a486.js
new file mode 100644
index 000000000..62877aeb7
--- /dev/null
+++ b/assets/js/5062cedc.fa54a486.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1963],{28453:(e,i,n)=>{n.d(i,{R:()=>t,x:()=>c});var r=n(96540);const s={},a=r.createContext(s);function t(e){const i=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function c(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),r.createElement(a.Provider,{value:i},e.children)}},95873:(e,i,n)=>{n.r(i),n.d(i,{as [...]
\ No newline at end of file
diff --git a/assets/js/51e623d9.e11f71f8.js b/assets/js/51e623d9.e11f71f8.js
new file mode 100644
index 000000000..4388b2d95
--- /dev/null
+++ b/assets/js/51e623d9.e11f71f8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3380],{2448:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"link","label":"Introduction to Apache Druid","href":"/docs/latest/design/","docId":"design/index","unlisted":false},{"type":"category","label":"Getting started","items":[{"type":"link","label":"Sing [...]
\ No newline at end of file
diff --git a/assets/js/51fe9e1c.a45c4057.js b/assets/js/51fe9e1c.a45c4057.js
new file mode 100644
index 000000000..3893272b9
--- /dev/null
+++ b/assets/js/51fe9e1c.a45c4057.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5840],{18703:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>d,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"querying/math-expr","title":"Expressions","description":"\x3c!--","source":"@site/docs/37.0.0/querying/math-expr.md","sourceDirName":"querying","slug":"/querying/math-expr","permalink":"/docs/37.0.0/querying/math-expr","draft":false,"unlisted":false,"tags":[],"version":"curr [...]
\ No newline at end of file
diff --git a/assets/js/52327944.5be98e2d.js b/assets/js/52327944.5be98e2d.js
new file mode 100644
index 000000000..a81644c3e
--- /dev/null
+++ b/assets/js/52327944.5be98e2d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3185],{9283:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>d,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"tutorials/tutorial-batch","title":"Load a file","description":"\x3c!--","source":"@site/docs/37.0.0/tutorials/tutorial-batch.md","sourceDirName":"tutorials","slug":"/tutorials/tutorial-batch","permalink":"/docs/37.0.0/tutorials/tutorial-batch","draft":false,"unlisted":false," [...]
\ No newline at end of file
diff --git a/assets/js/52a44e3b.1b9609ac.js b/assets/js/52a44e3b.1b9609ac.js
new file mode 100644
index 000000000..1529588e6
--- /dev/null
+++ b/assets/js/52a44e3b.1b9609ac.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7235],{28453:(e,t,a)=>{a.d(t,{R:()=>n,x:()=>o});var s=a(96540);const r={},i=s.createContext(r);function n(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:n(e.components),s.createElement(i.Provider,{value:t},e.children)}},46201:(e,t,a)=>{a.r(t),a.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/52b6c25c.3043972f.js b/assets/js/52b6c25c.3043972f.js
new file mode 100644
index 000000000..c03fdd86e
--- /dev/null
+++ b/assets/js/52b6c25c.3043972f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3685],{28453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var o=t(96540);const s={},i=o.createContext(s);function r(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),o.createElement(i.Provider,{value:n},e.children)}},54907:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/55e202dc.4a4c414c.js b/assets/js/55e202dc.4a4c414c.js
new file mode 100644
index 000000000..54f315f01
--- /dev/null
+++ b/assets/js/55e202dc.4a4c414c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7153],{14940:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>d,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"configuration/index","title":"Configuration reference","description":"\x3c!--","source":"@site/docs/latest/configuration/index.md","sourceDirName":"configuration","slug":"/configuration/","permalink":"/docs/latest/configuration/","draft":false,"unlisted":false,"tags":[],"ver [...]
\ No newline at end of file
diff --git a/assets/js/5670b262.e0885ac0.js b/assets/js/5670b262.e0885ac0.js
new file mode 100644
index 000000000..b23a4de62
--- /dev/null
+++ b/assets/js/5670b262.e0885ac0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9947],{28453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>r});var o=t(96540);const s={},i=o.createContext(s);function a(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),o.createElement(i.Provider,{value:n},e.children)}},99268:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/5676ccf5.d844f738.js b/assets/js/5676ccf5.d844f738.js
new file mode 100644
index 000000000..49eeef5ea
--- /dev/null
+++ b/assets/js/5676ccf5.d844f738.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2720],{28453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>a});var s=t(96540);const r={},i=s.createContext(r);function l(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:l(e.components),s.createElement(i.Provider,{value:n},e.children)}},28776:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/5743b375.d90d6c3e.js b/assets/js/5743b375.d90d6c3e.js
new file mode 100644
index 000000000..601e11e99
--- /dev/null
+++ b/assets/js/5743b375.d90d6c3e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[885],{28453:(e,n,r)=>{r.d(n,{R:()=>t,x:()=>a});var i=r(96540);const o={},s=i.createContext(o);function t(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:t(e.components),i.createElement(s.Provider,{value:n},e.children)}},31701:(e,n,r)=>{r.r(n),r.d(n,{ass [...]
\ No newline at end of file
diff --git a/assets/js/576b1a2a.67fc94c6.js b/assets/js/576b1a2a.67fc94c6.js
new file mode 100644
index 000000000..7bb9ae832
--- /dev/null
+++ b/assets/js/576b1a2a.67fc94c6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8786],{14126:(e,o,t)=>{t.r(o),t.d(o,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>s,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"development/extensions-core/google","title":"Google Cloud Storage","description":"\x3c!--","source":"@site/docs/37.0.0/development/extensions-core/google.md","sourceDirName":"development/extensions-core","slug":"/development/extensions-core/google","permalink":"/docs/37.0.0/ [...]
\ No newline at end of file
diff --git a/assets/js/57d6d98d.56075b27.js b/assets/js/57d6d98d.56075b27.js
new file mode 100644
index 000000000..29a6f8c96
--- /dev/null
+++ b/assets/js/57d6d98d.56075b27.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9300],{28453:(e,n,i)=>{i.d(n,{R:()=>d,x:()=>l});var s=i(96540);const r={},t=s.createContext(r);function d(e){const n=s.useContext(t);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),s.createElement(t.Provider,{value:n},e.children)}},63210:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/5812196f.7e75f97b.js b/assets/js/5812196f.7e75f97b.js
new file mode 100644
index 000000000..42ef5571b
--- /dev/null
+++ b/assets/js/5812196f.7e75f97b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9111],{28453:(e,n,t)=>{t.d(n,{R:()=>d,x:()=>a});var r=t(96540);const s={},i=r.createContext(s);function d(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:d(e.components),r.createElement(i.Provider,{value:n},e.children)}},52943:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/58932e72.c874d229.js b/assets/js/58932e72.c874d229.js
new file mode 100644
index 000000000..472873261
--- /dev/null
+++ b/assets/js/58932e72.c874d229.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2744],{28453:(e,r,n)=>{n.d(r,{R:()=>o,x:()=>d});var t=n(96540);const s={},i=t.createContext(s);function o(e){const r=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function d(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),t.createElement(i.Provider,{value:r},e.children)}},60342:(e,r,n)=>{n.r(r),n.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/59e0cce2.8d1ceb8e.js b/assets/js/59e0cce2.8d1ceb8e.js
new file mode 100644
index 000000000..7e33918f3
--- /dev/null
+++ b/assets/js/59e0cce2.8d1ceb8e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[865],{4675:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>a,contentTitle:()=>o,default:()=>h,frontMatter:()=>s,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"development/extensions-contrib/kafka-emitter","title":"Kafka Emitter","description":"\x3c!--","source":"@site/docs/37.0.0/development/extensions-contrib/kafka-emitter.md","sourceDirName":"development/extensions-contrib","slug":"/development/extensions-contrib/kafka-emitter","p [...]
\ No newline at end of file
diff --git a/assets/js/5b78a75f.33a0dcf4.js b/assets/js/5b78a75f.33a0dcf4.js
new file mode 100644
index 000000000..4b1073d77
--- /dev/null
+++ b/assets/js/5b78a75f.33a0dcf4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5334],{28453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>a});var o=t(96540);const i={},r=o.createContext(i);function s(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),o.createElement(r.Provider,{value:n},e.children)}},77978:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/5bb43612.18f3f147.js b/assets/js/5bb43612.18f3f147.js
new file mode 100644
index 000000000..69849dfa6
--- /dev/null
+++ b/assets/js/5bb43612.18f3f147.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4526],{28453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>o});var i=t(96540);const s={},a=i.createContext(s);function r(e){const n=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),i.createElement(a.Provider,{value:n},e.children)}},48939:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/5c53aeba.8300a25c.js b/assets/js/5c53aeba.8300a25c.js
new file mode 100644
index 000000000..2cbda7b89
--- /dev/null
+++ b/assets/js/5c53aeba.8300a25c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9082],{17335:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>a,contentTitle:()=>d,default:()=>h,frontMatter:()=>i,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"design/deep-storage","title":"Deep storage","description":"\x3c!--","source":"@site/docs/37.0.0/design/deep-storage.md","sourceDirName":"design","slug":"/design/deep-storage","permalink":"/docs/37.0.0/design/deep-storage","draft":false,"unlisted":false,"tags":[],"version":"c [...]
\ No newline at end of file
diff --git a/assets/js/5c5d54c9.50b6f0b3.js b/assets/js/5c5d54c9.50b6f0b3.js
new file mode 100644
index 000000000..0e8a04ac7
--- /dev/null
+++ b/assets/js/5c5d54c9.50b6f0b3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1783],{28453:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>o});var s=n(96540);const i={},a=s.createContext(i);function r(e){const t=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(a.Provider,{value:t},e.children)}},56931:(e,t,n)=>{n.r(t),n.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/5c645a65.1be0bfa1.js b/assets/js/5c645a65.1be0bfa1.js
new file mode 100644
index 000000000..e1dc28871
--- /dev/null
+++ b/assets/js/5c645a65.1be0bfa1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[384],{28453:(e,n,d)=>{d.d(n,{R:()=>c,x:()=>t});var i=d(96540);const r={},s=i.createContext(r);function c(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),i.createElement(s.Provider,{value:n},e.children)}},60400:(e,n,d)=>{d.r(n),d.d(n,{ass [...]
\ No newline at end of file
diff --git a/assets/js/5c65dac8.defa1202.js b/assets/js/5c65dac8.defa1202.js
new file mode 100644
index 000000000..8bb29f4f6
--- /dev/null
+++ b/assets/js/5c65dac8.defa1202.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5516],{28453:(e,o,n)=>{n.d(o,{R:()=>r,x:()=>d});var s=n(96540);const t={},i=s.createContext(t);function r(e){const o=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function d(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),s.createElement(i.Provider,{value:o},e.children)}},30389:(e,o,n)=>{n.r(o),n.d(o,{as [...]
\ No newline at end of file
diff --git a/assets/js/5c6b5050.77eae1ad.js b/assets/js/5c6b5050.77eae1ad.js
new file mode 100644
index 000000000..fa09723d6
--- /dev/null
+++ b/assets/js/5c6b5050.77eae1ad.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6127],{28453:(e,t,s)=>{s.d(t,{R:()=>o,x:()=>c});var n=s(96540);const i={},a=n.createContext(i);function o(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),n.createElement(a.Provider,{value:t},e.children)}},86497:(e,t,s)=>{s.r(t),s.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/5c82576d.d8da3c80.js b/assets/js/5c82576d.d8da3c80.js
new file mode 100644
index 000000000..6e970ce85
--- /dev/null
+++ b/assets/js/5c82576d.d8da3c80.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[695],{28453:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>l});var r=s(96540);const a={},t=r.createContext(a);function i(e){const n=r.useContext(t);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),r.createElement(t.Provider,{value:n},e.children)}},29569:(e,n,s)=>{s.r(n),s.d(n,{ass [...]
\ No newline at end of file
diff --git a/assets/js/5d2f3c78.8957f2f7.js b/assets/js/5d2f3c78.8957f2f7.js
new file mode 100644
index 000000000..5d4bd5de6
--- /dev/null
+++ b/assets/js/5d2f3c78.8957f2f7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4175],{28453:(e,r,o)=>{o.d(r,{R:()=>t,x:()=>a});var n=o(96540);const s={},i=n.createContext(s);function t(e){const r=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function a(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),n.createElement(i.Provider,{value:r},e.children)}},79265:(e,r,o)=>{o.r(r),o.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/5d9eeb2f.a52b7fc5.js b/assets/js/5d9eeb2f.a52b7fc5.js
new file mode 100644
index 000000000..82d7c7568
--- /dev/null
+++ b/assets/js/5d9eeb2f.a52b7fc5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7935],{28453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>o});var t=s(96540);const i={},r=t.createContext(i);function a(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),t.createElement(r.Provider,{value:n},e.children)}},88645:(e,n,s)=>{s.r(n),s.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/5dacb00c.aa85fb47.js b/assets/js/5dacb00c.aa85fb47.js
new file mode 100644
index 000000000..00874fcaa
--- /dev/null
+++ b/assets/js/5dacb00c.aa85fb47.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5281],{28453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>s});var r=n(96540);const o={},a=r.createContext(o);function i(e){const t=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),r.createElement(a.Provider,{value:t},e.children)}},70805:(e,t,n)=>{n.r(t),n.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/5e4ecab4.aee1a876.js b/assets/js/5e4ecab4.aee1a876.js
new file mode 100644
index 000000000..e567abdd4
--- /dev/null
+++ b/assets/js/5e4ecab4.aee1a876.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[38],{121:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>c,contentTitle:()=>a,default:()=>h,frontMatter:()=>s,metadata:()=>i,toc:()=>d});const i=JSON.parse('{"id":"operations/auth-ldap","title":"Configure LDAP authentication","description":"\x3c!--","source":"@site/docs/37.0.0/operations/auth-ldap.md","sourceDirName":"operations","slug":"/operations/auth-ldap","permalink":"/docs/37.0.0/operations/auth-ldap","draft":false,"unlisted":false," [...]
\ No newline at end of file
diff --git a/assets/js/5ff9c08d.c0687ca6.js b/assets/js/5ff9c08d.c0687ca6.js
new file mode 100644
index 000000000..0a0216863
--- /dev/null
+++ b/assets/js/5ff9c08d.c0687ca6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3288],{28453:(e,n,r)=>{r.d(n,{R:()=>l,x:()=>o});var i=r(96540);const s={},t=i.createContext(s);function l(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),i.createElement(t.Provider,{value:n},e.children)}},57943:(e,n,r)=>{r.r(n),r.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/604078af.04e8a828.js b/assets/js/604078af.04e8a828.js
new file mode 100644
index 000000000..243216f58
--- /dev/null
+++ b/assets/js/604078af.04e8a828.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5061],{28453:(e,i,t)=>{t.d(i,{R:()=>d,x:()=>c});var r=t(96540);const n={},s=r.createContext(n);function d(e){const i=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function c(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:d(e.components),r.createElement(s.Provider,{value:i},e.children)}},49487:(e,i,t)=>{t.r(i),t.d(i,{as [...]
\ No newline at end of file
diff --git a/assets/js/6042bd00.31bbee1e.js b/assets/js/6042bd00.31bbee1e.js
new file mode 100644
index 000000000..cfa6c7da2
--- /dev/null
+++ b/assets/js/6042bd00.31bbee1e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8793],{28453:(e,r,s)=>{s.d(r,{R:()=>d,x:()=>a});var t=s(96540);const n={},o=t.createContext(n);function d(e){const r=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function a(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:d(e.components),t.createElement(o.Provider,{value:r},e.children)}},93915:(e,r,s)=>{s.r(r),s.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/61176328.a4be27c9.js b/assets/js/61176328.a4be27c9.js
new file mode 100644
index 000000000..7f95d0f87
--- /dev/null
+++ b/assets/js/61176328.a4be27c9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4983],{28453:(e,n,r)=>{r.d(n,{R:()=>i,x:()=>l});var a=r(96540);const t={},s=a.createContext(t);function i(e){const n=a.useContext(s);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),a.createElement(s.Provider,{value:n},e.children)}},73555:(e,n,r)=>{r.r(n),r.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/615c06f6.5f8d7994.js b/assets/js/615c06f6.5f8d7994.js
new file mode 100644
index 000000000..e130c4e69
--- /dev/null
+++ b/assets/js/615c06f6.5f8d7994.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9990],{4165:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>d,contentTitle:()=>a,default:()=>c,frontMatter:()=>o,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"querying/groupbyquery","title":"GroupBy queries","description":"\x3c!--","source":"@site/docs/latest/querying/groupbyquery.md","sourceDirName":"querying","slug":"/querying/groupbyquery","permalink":"/docs/latest/querying/groupbyquery","draft":false,"unlisted":false,"tags":[], [...]
\ No newline at end of file
diff --git a/assets/js/616221e8.c2128a63.js b/assets/js/616221e8.c2128a63.js
new file mode 100644
index 000000000..008985a6f
--- /dev/null
+++ b/assets/js/616221e8.c2128a63.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9040],{28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var r=t(96540);const s={},i=r.createContext(s);function o(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(i.Provider,{value:n},e.children)}},91066:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/628a7ce5.d90d0334.js b/assets/js/628a7ce5.d90d0334.js
new file mode 100644
index 000000000..ad8ed364a
--- /dev/null
+++ b/assets/js/628a7ce5.d90d0334.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4706],{28453:(e,s,t)=>{t.d(s,{R:()=>o,x:()=>d});var i=t(96540);const n={},r=i.createContext(n);function o(e){const s=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function d(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:o(e.components),i.createElement(r.Provider,{value:s},e.children)}},32203:(e,s,t)=>{t.d(s,{A:()=>i}) [...]
\ No newline at end of file
diff --git a/assets/js/62b028eb.d87bf862.js b/assets/js/62b028eb.d87bf862.js
new file mode 100644
index 000000000..535a42f5f
--- /dev/null
+++ b/assets/js/62b028eb.d87bf862.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1974],{4312:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>i,contentTitle:()=>c,default:()=>p,frontMatter:()=>r,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"development/extensions-contrib/cassandra","title":"Apache Cassandra","description":"\x3c!--","source":"@site/docs/37.0.0/development/extensions-contrib/cassandra.md","sourceDirName":"development/extensions-contrib","slug":"/development/extensions-contrib/cassandra","permalink [...]
\ No newline at end of file
diff --git a/assets/js/62fd7da7.f46cefd6.js b/assets/js/62fd7da7.f46cefd6.js
new file mode 100644
index 000000000..3f2cc8b4a
--- /dev/null
+++ b/assets/js/62fd7da7.f46cefd6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7228],{22281:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>r,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"development/extensions-contrib/influx","title":"InfluxDB Line Protocol Input Format","description":"\x3c!--","source":"@site/docs/latest/development/extensions-contrib/influx.md","sourceDirName":"development/extensions-contrib","slug":"/development/extensions-contrib/influx" [...]
\ No newline at end of file
diff --git a/assets/js/6446e1f5.da7117bc.js b/assets/js/6446e1f5.da7117bc.js
new file mode 100644
index 000000000..8fe39bf00
--- /dev/null
+++ b/assets/js/6446e1f5.da7117bc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7122],{28453:(e,r,i)=>{i.d(r,{R:()=>c,x:()=>d});var n=i(96540);const t={},s=n.createContext(t);function c(e){const r=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function d(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:c(e.components),n.createElement(s.Provider,{value:r},e.children)}},58074:(e,r,i)=>{i.r(r),i.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/65125a37.27876328.js b/assets/js/65125a37.27876328.js
new file mode 100644
index 000000000..bd23e7a43
--- /dev/null
+++ b/assets/js/65125a37.27876328.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1101],{2250:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>d,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"api-reference/data-management-api","title":"Data management API","description":"\x3c!--","source":"@site/docs/37.0.0/api-reference/data-management-api.md","sourceDirName":"api-reference","slug":"/api-reference/data-management-api","permalink":"/docs/37.0.0/api-reference/data- [...]
\ No newline at end of file
diff --git a/assets/js/65299766.7d9636bc.js b/assets/js/65299766.7d9636bc.js
new file mode 100644
index 000000000..9daccd580
--- /dev/null
+++ b/assets/js/65299766.7d9636bc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1743],{28453:(e,i,n)=>{n.d(i,{R:()=>o,x:()=>a});var t=n(96540);const s={},r=t.createContext(s);function o(e){const i=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function a(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),t.createElement(r.Provider,{value:i},e.children)}},99891:(e,i,n)=>{n.r(i),n.d(i,{as [...]
\ No newline at end of file
diff --git a/assets/js/6580fbe1.43c5c6f3.js b/assets/js/6580fbe1.43c5c6f3.js
new file mode 100644
index 000000000..0975a0334
--- /dev/null
+++ b/assets/js/6580fbe1.43c5c6f3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2226],{7797:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"querying/hll-old","title":"Cardinality/HyperUnique aggregators","description":"\x3c!--","source":"@site/docs/37.0.0/querying/hll-old.md","sourceDirName":"querying","slug":"/querying/hll-old","permalink":"/docs/37.0.0/querying/hll-old","draft":false,"unlisted":false,"tags":[], [...]
\ No newline at end of file
diff --git a/assets/js/66178e07.43d93bc2.js b/assets/js/66178e07.43d93bc2.js
new file mode 100644
index 000000000..903a2aca1
--- /dev/null
+++ b/assets/js/66178e07.43d93bc2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6633],{20360:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>h,frontMatter:()=>l,metadata:()=>s,toc:()=>o});const s=JSON.parse('{"id":"querying/filters","title":"Query filters","description":"\x3c!--","source":"@site/docs/37.0.0/querying/filters.md","sourceDirName":"querying","slug":"/querying/filters","permalink":"/docs/37.0.0/querying/filters","draft":false,"unlisted":false,"tags":[],"version":"current"," [...]
\ No newline at end of file
diff --git a/assets/js/673e1d72.b31092f9.js b/assets/js/673e1d72.b31092f9.js
new file mode 100644
index 000000000..a857f07d2
--- /dev/null
+++ b/assets/js/673e1d72.b31092f9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[346],{28453:(e,i,n)=>{n.d(i,{R:()=>o,x:()=>a});var r=n(96540);const t={},s=r.createContext(t);function o(e){const i=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function a(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),r.createElement(s.Provider,{value:i},e.children)}},38302:(e,i,n)=>{n.r(i),n.d(i,{ass [...]
\ No newline at end of file
diff --git a/assets/js/6749.dc0c545b.js b/assets/js/6749.dc0c545b.js
new file mode 100644
index 000000000..5c97f2eb1
--- /dev/null
+++ b/assets/js/6749.dc0c545b.js
@@ -0,0 +1,2 @@
+/*! For license information please see 6749.dc0c545b.js.LICENSE.txt */
+(self.webpackChunk=self.webpackChunk||[]).push([[6749],{241:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});const n=r(41917).A.Symbol},1282:(t,e,r)=>{"use strict";r.d(e,{DA:()=>k,IU:()=>D,U:()=>E,U7:()=>we,U_:()=>_e,Zk:()=>h,aP:()=>be,gh:()=>ve,lC:()=>d,on:()=>Ce});var n=r(64532),i=r(33115),a=r(62255),o=r(8159),s=r(10009),l=r(20007),c=r(29893),h=(0,s.K2)((async(t,e,r)=>{let n;const i=e.useHtmlLabels||(0,s._3)((0,s.D7)()?.htmlLabels);n=r||"node default";const c=t.insert("g").attr("class",n).attr( [...]
\ No newline at end of file
diff --git a/assets/js/6749.dc0c545b.js.LICENSE.txt b/assets/js/6749.dc0c545b.js.LICENSE.txt
new file mode 100644
index 000000000..6f7ee2a5d
--- /dev/null
+++ b/assets/js/6749.dc0c545b.js.LICENSE.txt
@@ -0,0 +1,9 @@
+/*! @license DOMPurify 3.2.4 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.4/LICENSE */
+
+/*! Bundled license information:
+
+js-yaml/dist/js-yaml.mjs:
+ (*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT *)
+*/
+
+/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
diff --git a/assets/js/6865240a.359014e4.js b/assets/js/6865240a.359014e4.js
new file mode 100644
index 000000000..530407672
--- /dev/null
+++ b/assets/js/6865240a.359014e4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8297],{22860:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>r,contentTitle:()=>c,default:()=>p,frontMatter:()=>s,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"data-management/automatic-compaction","title":"Automatic compaction","description":"\x3c!--","source":"@site/docs/latest/data-management/automatic-compaction.md","sourceDirName":"data-management","slug":"/data-management/automatic-compaction","permalink":"/docs/latest/data-m [...]
\ No newline at end of file
diff --git a/assets/js/687f781f.c5c34263.js b/assets/js/687f781f.c5c34263.js
new file mode 100644
index 000000000..1c32e0622
--- /dev/null
+++ b/assets/js/687f781f.c5c34263.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9470],{5119:(e,i,r)=>{r.d(i,{A:()=>n});const n=r.p+"assets/images/tutorial-quickstart-01-55397fb67d2b63fa55d39770575a846f.png"},28453:(e,i,r)=>{r.d(i,{R:()=>s,x:()=>c});var n=r(96540);const o={},t=n.createContext(o);function s(e){const i=n.useContext(t);return n.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function c(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.componen [...]
\ No newline at end of file
diff --git a/assets/js/688a6cad.3844e939.js b/assets/js/688a6cad.3844e939.js
new file mode 100644
index 000000000..c1893cd87
--- /dev/null
+++ b/assets/js/688a6cad.3844e939.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2258],{28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>l});var s=t(96540);const i={},r=s.createContext(i);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(r.Provider,{value:n},e.children)}},45843:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/68b12977.86e9c2e0.js b/assets/js/68b12977.86e9c2e0.js
new file mode 100644
index 000000000..c0e3f1d7b
--- /dev/null
+++ b/assets/js/68b12977.86e9c2e0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7511],{28453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>a});var s=t(96540);const o={},i=s.createContext(o);function r(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(i.Provider,{value:n},e.children)}},74496:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/697768d1.e6d564a3.js b/assets/js/697768d1.e6d564a3.js
new file mode 100644
index 000000000..a3d80a8ad
--- /dev/null
+++ b/assets/js/697768d1.e6d564a3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2941],{10504:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>o,contentTitle:()=>a,default:()=>d,frontMatter:()=>t,metadata:()=>i,toc:()=>h});const i=JSON.parse('{"id":"querying/caching","title":"Query caching","description":"Describes Apache Druid per-segment and whole-query cache types. Identifies services where you can enable caching and suggestions for caching strategy.","source":"@site/docs/37.0.0/querying/caching.md","sourceDirName":" [...]
\ No newline at end of file
diff --git a/assets/js/6c62c6c7.128e2e82.js b/assets/js/6c62c6c7.128e2e82.js
new file mode 100644
index 000000000..2a094dc12
--- /dev/null
+++ b/assets/js/6c62c6c7.128e2e82.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6575],{24269:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"ingestion/kafka-ingestion","title":"Apache Kafka ingestion","description":"Overview of the Kafka indexing service for Druid. Includes example supervisor specs to help you get started.","source":"@site/docs/latest/ingestion/kafka-ingestion.md","sourceDirName":"ingestion","slu [...]
\ No newline at end of file
diff --git a/assets/js/6c6924f2.ed183ee0.js b/assets/js/6c6924f2.ed183ee0.js
new file mode 100644
index 000000000..b2f41c77d
--- /dev/null
+++ b/assets/js/6c6924f2.ed183ee0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4771],{27529:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"comparisons/druid-vs-kudu","title":"Apache Druid vs Kudu","description":"\x3c!--","source":"@site/docs/37.0.0/comparisons/druid-vs-kudu.md","sourceDirName":"comparisons","slug":"/comparisons/druid-vs-kudu","permalink":"/docs/37.0.0/comparisons/druid-vs-kudu","draft":false,"u [...]
\ No newline at end of file
diff --git a/assets/js/6d3f71d7.196a871c.js b/assets/js/6d3f71d7.196a871c.js
new file mode 100644
index 000000000..98626936e
--- /dev/null
+++ b/assets/js/6d3f71d7.196a871c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1825],{28453:(e,n,i)=>{i.d(n,{R:()=>t,x:()=>l});var r=i(96540);const s={},a=r.createContext(s);function t(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),r.createElement(a.Provider,{value:n},e.children)}},29468:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/6edec6bb.59b1b7a9.js b/assets/js/6edec6bb.59b1b7a9.js
new file mode 100644
index 000000000..23e5dc2ef
--- /dev/null
+++ b/assets/js/6edec6bb.59b1b7a9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9662],{28453:(e,r,o)=>{o.d(r,{R:()=>a,x:()=>d});var i=o(96540);const n={},t=i.createContext(n);function a(e){const r=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function d(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),i.createElement(t.Provider,{value:r},e.children)}},69394:(e,r,o)=>{o.r(r),o.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/708e1ea9.ed2f8b91.js b/assets/js/708e1ea9.ed2f8b91.js
new file mode 100644
index 000000000..f0492387e
--- /dev/null
+++ b/assets/js/708e1ea9.ed2f8b91.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6235],{24438:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"design/metadata-storage","title":"Metadata storage","description":"\x3c!--","source":"@site/docs/37.0.0/design/metadata-storage.md","sourceDirName":"design","slug":"/design/metadata-storage","permalink":"/docs/37.0.0/design/metadata-storage","draft":false,"unlisted":false,"t [...]
\ No newline at end of file
diff --git a/assets/js/715ef334.f6547c15.js b/assets/js/715ef334.f6547c15.js
new file mode 100644
index 000000000..dcf38ee48
--- /dev/null
+++ b/assets/js/715ef334.f6547c15.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8557],{14404:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"tutorials/tutorial-msq-extern","title":"Load files with SQL-based ingestion","description":"How to generate a query that references externally hosted data","source":"@site/docs/37.0.0/tutorials/tutorial-msq-extern.md","sourceDirName":"tutorials","slug":"/tutorials/tutorial-m [...]
\ No newline at end of file
diff --git a/assets/js/7178b9b6.bb71c02f.js b/assets/js/7178b9b6.bb71c02f.js
new file mode 100644
index 000000000..743ed9af2
--- /dev/null
+++ b/assets/js/7178b9b6.bb71c02f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9053],{28453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>l});var i=n(96540);const s={},r=i.createContext(s);function o(e){const t=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(r.Provider,{value:t},e.children)}},41996:(e,t,n)=>{n.r(t),n.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/71de5257.83527348.js b/assets/js/71de5257.83527348.js
new file mode 100644
index 000000000..2de39b42e
--- /dev/null
+++ b/assets/js/71de5257.83527348.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[127],{28453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>o});var r=s(96540);const i={},t=r.createContext(i);function d(e){const n=r.useContext(t);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),r.createElement(t.Provider,{value:n},e.children)}},31171:(e,n,s)=>{s.r(n),s.d(n,{ass [...]
\ No newline at end of file
diff --git a/assets/js/72871454.a312cad2.js b/assets/js/72871454.a312cad2.js
new file mode 100644
index 000000000..af5ff661a
--- /dev/null
+++ b/assets/js/72871454.a312cad2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9815],{28453:(e,n,r)=>{r.d(n,{R:()=>d,x:()=>o});var t=r(96540);const i={},s=t.createContext(i);function d(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),t.createElement(s.Provider,{value:n},e.children)}},65537:(e,n,r)=>{r.d(n,{A:()=>b}) [...]
\ No newline at end of file
diff --git a/assets/js/72b74cf4.03bc2c80.js b/assets/js/72b74cf4.03bc2c80.js
new file mode 100644
index 000000000..e977ef587
--- /dev/null
+++ b/assets/js/72b74cf4.03bc2c80.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8908],{28453:(e,n,i)=>{i.d(n,{R:()=>r,x:()=>o});var t=i(96540);const a={},s=t.createContext(a);function r(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),t.createElement(s.Provider,{value:n},e.children)}},34724:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/72ca7c8a.9529bd5b.js b/assets/js/72ca7c8a.9529bd5b.js
new file mode 100644
index 000000000..6151ed520
--- /dev/null
+++ b/assets/js/72ca7c8a.9529bd5b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5803],{28453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>o});var r=s(96540);const i={},t=r.createContext(i);function d(e){const n=r.useContext(t);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),r.createElement(t.Provider,{value:n},e.children)}},88989:(e,n,s)=>{s.r(n),s.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/7377efa6.1c10a24e.js b/assets/js/7377efa6.1c10a24e.js
new file mode 100644
index 000000000..3d35c299b
--- /dev/null
+++ b/assets/js/7377efa6.1c10a24e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1823],{28453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>a});var t=i(96540);const s={},r=t.createContext(s);function o(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),t.createElement(r.Provider,{value:n},e.children)}},78345:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/74fed1cd.0382378f.js b/assets/js/74fed1cd.0382378f.js
new file mode 100644
index 000000000..1c618faf4
--- /dev/null
+++ b/assets/js/74fed1cd.0382378f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2341],{28453:(e,n,o)=>{o.d(n,{R:()=>s,x:()=>l});var t=o(96540);const r={},i=t.createContext(r);function s(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),t.createElement(i.Provider,{value:n},e.children)}},60655:(e,n,o)=>{o.r(n),o.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/7668f2ea.b2200b4c.js b/assets/js/7668f2ea.b2200b4c.js
new file mode 100644
index 000000000..eb251072a
--- /dev/null
+++ b/assets/js/7668f2ea.b2200b4c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4896],{28453:(e,t,o)=>{o.d(t,{R:()=>r,x:()=>d});var n=o(96540);const s={},i=n.createContext(s);function r(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),n.createElement(i.Provider,{value:t},e.children)}},30367:(e,t,o)=>{o.r(t),o.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/76930b1e.8a8e4cc3.js b/assets/js/76930b1e.8a8e4cc3.js
new file mode 100644
index 000000000..e13bf34f8
--- /dev/null
+++ b/assets/js/76930b1e.8a8e4cc3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1672],{28453:(e,i,r)=>{r.d(i,{R:()=>s,x:()=>l});var t=r(96540);const n={},o=t.createContext(n);function s(e){const i=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function l(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:s(e.components),t.createElement(o.Provider,{value:i},e.children)}},47315:(e,i,r)=>{r.r(i),r.d(i,{as [...]
\ No newline at end of file
diff --git a/assets/js/769d5196.c5b7d37e.js b/assets/js/769d5196.c5b7d37e.js
new file mode 100644
index 000000000..623ab7445
--- /dev/null
+++ b/assets/js/769d5196.c5b7d37e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4016],{22308:(e,n,t)=>{t.d(n,{A:()=>r});const r=t.p+"assets/images/spectator-histogram-size-comparison-665af4720d1b302515a31f758b824f26.png"},28453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>o});var r=t(96540);const i={},s=r.createContext(i);function a(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.compone [...]
\ No newline at end of file
diff --git a/assets/js/7721f12a.ce89f87a.js b/assets/js/7721f12a.ce89f87a.js
new file mode 100644
index 000000000..cde0ec621
--- /dev/null
+++ b/assets/js/7721f12a.ce89f87a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[866],{28453:(e,n,i)=>{i.d(n,{R:()=>d,x:()=>s});var o=i(96540);const r={},t=o.createContext(r);function d(e){const n=o.useContext(t);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),o.createElement(t.Provider,{value:n},e.children)}},81595:(e,n,i)=>{i.r(n),i.d(n,{ass [...]
\ No newline at end of file
diff --git a/assets/js/785005b4.94b248dd.js b/assets/js/785005b4.94b248dd.js
new file mode 100644
index 000000000..56db78a21
--- /dev/null
+++ b/assets/js/785005b4.94b248dd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5186],{11775:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>o,contentTitle:()=>a,default:()=>h,frontMatter:()=>d,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"ingestion/native-batch","title":"JSON-based batch","description":"\x3c!--","source":"@site/docs/37.0.0/ingestion/native-batch.md","sourceDirName":"ingestion","slug":"/ingestion/native-batch","permalink":"/docs/37.0.0/ingestion/native-batch","draft":false,"unlisted":false,"ta [...]
\ No newline at end of file
diff --git a/assets/js/794c6791.3c42732d.js b/assets/js/794c6791.3c42732d.js
new file mode 100644
index 000000000..330293550
--- /dev/null
+++ b/assets/js/794c6791.3c42732d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4883],{28453:(e,n,l)=>{l.d(n,{R:()=>s,x:()=>a});var r=l(96540);const i={},t=r.createContext(i);function s(e){const n=r.useContext(t);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),r.createElement(t.Provider,{value:n},e.children)}},31858:(e,n,l)=>{l.r(n),l.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/7a0ffe1e.1960af4c.js b/assets/js/7a0ffe1e.1960af4c.js
new file mode 100644
index 000000000..198a472c3
--- /dev/null
+++ b/assets/js/7a0ffe1e.1960af4c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3664],{28453:(e,r,s)=>{s.d(r,{R:()=>o,x:()=>d});var t=s(96540);const n={},i=t.createContext(n);function o(e){const r=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function d(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:o(e.components),t.createElement(i.Provider,{value:r},e.children)}},95993:(e,r,s)=>{s.r(r),s.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/7b6ad2fb.6a744144.js b/assets/js/7b6ad2fb.6a744144.js
new file mode 100644
index 000000000..4b50fccf9
--- /dev/null
+++ b/assets/js/7b6ad2fb.6a744144.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2397],{28453:(e,i,r)=>{r.d(i,{R:()=>o,x:()=>l});var t=r(96540);const a={},n=t.createContext(a);function o(e){const i=t.useContext(n);return t.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function l(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),t.createElement(n.Provider,{value:i},e.children)}},84634:(e,i,r)=>{r.r(i),r.d(i,{as [...]
\ No newline at end of file
diff --git a/assets/js/7c46e323.42105de5.js b/assets/js/7c46e323.42105de5.js
new file mode 100644
index 000000000..e538e1095
--- /dev/null
+++ b/assets/js/7c46e323.42105de5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[402],{28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>l});var i=t(96540);const r={},s=i.createContext(r);function o(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),i.createElement(s.Provider,{value:n},e.children)}},42383:(e,n,t)=>{t.r(n),t.d(n,{ass [...]
\ No newline at end of file
diff --git a/assets/js/7ef358d2.9445533c.js b/assets/js/7ef358d2.9445533c.js
new file mode 100644
index 000000000..30b991eda
--- /dev/null
+++ b/assets/js/7ef358d2.9445533c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[635],{28453:(e,n,r)=>{r.d(n,{R:()=>d,x:()=>o});var t=r(96540);const i={},s=t.createContext(i);function d(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),t.createElement(s.Provider,{value:n},e.children)}},29323:(e,n,r)=>{r.r(n),r.d(n,{ass [...]
\ No newline at end of file
diff --git a/assets/js/7f7990e2.e7570699.js b/assets/js/7f7990e2.e7570699.js
new file mode 100644
index 000000000..f2643d4eb
--- /dev/null
+++ b/assets/js/7f7990e2.e7570699.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3218],{28453:(e,s,t)=>{t.d(s,{R:()=>r,x:()=>l});var n=t(96540);const o={},a=n.createContext(o);function r(e){const s=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),n.createElement(a.Provider,{value:s},e.children)}},62652:(e,s,t)=>{t.r(s),t.d(s,{as [...]
\ No newline at end of file
diff --git a/assets/js/8229aea1.ca3d4cb8.js b/assets/js/8229aea1.ca3d4cb8.js
new file mode 100644
index 000000000..a1fcc0006
--- /dev/null
+++ b/assets/js/8229aea1.ca3d4cb8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[150],{6380:(e,i,r)=>{r.r(i),r.d(i,{assets:()=>d,contentTitle:()=>a,default:()=>c,frontMatter:()=>s,metadata:()=>o,toc:()=>u});const o=JSON.parse('{"id":"release-info/migration-guide","title":"Migration guides","description":"How to migrate from legacy features to get the most from Druid updates","source":"@site/docs/37.0.0/release-info/migration-guide.md","sourceDirName":"release-info","slug":"/release-info/migration-guide","p [...]
\ No newline at end of file
diff --git a/assets/js/82512c0e.3cc93a2d.js b/assets/js/82512c0e.3cc93a2d.js
new file mode 100644
index 000000000..eadeeb235
--- /dev/null
+++ b/assets/js/82512c0e.3cc93a2d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5235],{7013:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>u,frontMatter:()=>s,metadata:()=>a,toc:()=>l});const a=JSON.parse('{"id":"comparisons/druid-vs-sql-on-hadoop","title":"Apache Druid vs SQL-on-Hadoop","description":"\x3c!--","source":"@site/docs/37.0.0/comparisons/druid-vs-sql-on-hadoop.md","sourceDirName":"comparisons","slug":"/comparisons/druid-vs-sql-on-hadoop","permalink":"/docs/37.0.0/comparis [...]
\ No newline at end of file
diff --git a/assets/js/83539817.409a43c5.js b/assets/js/83539817.409a43c5.js
new file mode 100644
index 000000000..26e9384e7
--- /dev/null
+++ b/assets/js/83539817.409a43c5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4351],{28453:(e,t,s)=>{s.d(t,{R:()=>i,x:()=>o});var n=s(96540);const d={},r=n.createContext(d);function i(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:i(e.components),n.createElement(r.Provider,{value:t},e.children)}},40540:(e,t,s)=>{s.r(t),s.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/83593c6b.c36c2288.js b/assets/js/83593c6b.c36c2288.js
new file mode 100644
index 000000000..a3676ee1b
--- /dev/null
+++ b/assets/js/83593c6b.c36c2288.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6420],{28453:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>l});var t=i(96540);const a={},r=t.createContext(a);function s(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),t.createElement(r.Provider,{value:n},e.children)}},81244:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/83f7537e.6aac601f.js b/assets/js/83f7537e.6aac601f.js
new file mode 100644
index 000000000..37ad38e5b
--- /dev/null
+++ b/assets/js/83f7537e.6aac601f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9337],{28453:(e,s,n)=>{n.d(s,{R:()=>d,x:()=>o});var i=n(96540);const r={},t=i.createContext(r);function d(e){const s=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(t.Provider,{value:s},e.children)}},57020:(e,s,n)=>{n.r(s),n.d(s,{as [...]
\ No newline at end of file
diff --git a/assets/js/841b8634.b53b6447.js b/assets/js/841b8634.b53b6447.js
new file mode 100644
index 000000000..433909721
--- /dev/null
+++ b/assets/js/841b8634.b53b6447.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3601],{28453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>o});var i=n(96540);const r={},a=i.createContext(r);function s(e){const t=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),i.createElement(a.Provider,{value:t},e.children)}},69899:(e,t,n)=>{n.r(t),n.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/8456bec1.4079b1fc.js b/assets/js/8456bec1.4079b1fc.js
new file mode 100644
index 000000000..9a7f14d1d
--- /dev/null
+++ b/assets/js/8456bec1.4079b1fc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7953],{28453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>a});var s=t(96540);const o={},i=s.createContext(o);function r(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(i.Provider,{value:n},e.children)}},79776:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/84b3150d.01a92ec8.js b/assets/js/84b3150d.01a92ec8.js
new file mode 100644
index 000000000..9a3920269
--- /dev/null
+++ b/assets/js/84b3150d.01a92ec8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1396],{28453:(e,r,i)=>{i.d(r,{R:()=>d,x:()=>o});var s=i(96540);const t={},n=s.createContext(t);function d(e){const r=s.useContext(n);return s.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function o(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),s.createElement(n.Provider,{value:r},e.children)}},90071:(e,r,i)=>{i.r(r),i.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/850b8f96.379a36fd.js b/assets/js/850b8f96.379a36fd.js
new file mode 100644
index 000000000..228196274
--- /dev/null
+++ b/assets/js/850b8f96.379a36fd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6327],{28453:(e,s,i)=>{i.d(s,{R:()=>t,x:()=>a});var n=i(96540);const r={},o=n.createContext(r);function t(e){const s=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function a(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:t(e.components),n.createElement(o.Provider,{value:s},e.children)}},86622:(e,s,i)=>{i.r(s),i.d(s,{as [...]
\ No newline at end of file
diff --git a/assets/js/85450b9e.f1e21873.js b/assets/js/85450b9e.f1e21873.js
new file mode 100644
index 000000000..d41cff4bf
--- /dev/null
+++ b/assets/js/85450b9e.f1e21873.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6811],{27661:(e,i,t)=>{t.r(i),t.d(i,{assets:()=>l,contentTitle:()=>o,default:()=>c,frontMatter:()=>r,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"design/storage","title":"Storage overview","description":"\x3c!--","source":"@site/docs/37.0.0/design/storage.md","sourceDirName":"design","slug":"/design/storage","permalink":"/docs/37.0.0/design/storage","draft":false,"unlisted":false,"tags":[],"version":"current","frontMa [...]
\ No newline at end of file
diff --git a/assets/js/869889a5.3ab3e92f.js b/assets/js/869889a5.3ab3e92f.js
new file mode 100644
index 000000000..061d7eea3
--- /dev/null
+++ b/assets/js/869889a5.3ab3e92f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4881],{28453:(e,t,s)=>{s.d(t,{R:()=>o,x:()=>c});var n=s(96540);const a={},r=n.createContext(a);function o(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),n.createElement(r.Provider,{value:t},e.children)}},48999:(e,t,s)=>{s.r(t),s.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/86f503e8.eded591a.js b/assets/js/86f503e8.eded591a.js
new file mode 100644
index 000000000..c536ff831
--- /dev/null
+++ b/assets/js/86f503e8.eded591a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2738],{28453:(t,e,r)=>{r.d(e,{R:()=>s,x:()=>a});var o=r(96540);const n={},i=o.createContext(n);function s(t){const e=o.useContext(i);return o.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(n):t.components||n:s(t.components),o.createElement(i.Provider,{value:e},t.children)}},35363:(t,e,r)=>{r.d(e,{A:()=>i}) [...]
\ No newline at end of file
diff --git a/assets/js/8764.d922765b.js b/assets/js/8764.d922765b.js
new file mode 100644
index 000000000..52a234c9a
--- /dev/null
+++ b/assets/js/8764.d922765b.js
@@ -0,0 +1 @@
+(self.webpackChunk=self.webpackChunk||[]).push([[8764],{23143:function(t){var e;e=function(){return function(t){var e={};function i(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=t,i.c=e,i.i=function(t){return t},i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i [...]
\ No newline at end of file
diff --git a/assets/js/8916e4db.616992f5.js b/assets/js/8916e4db.616992f5.js
new file mode 100644
index 000000000..ae5c9708b
--- /dev/null
+++ b/assets/js/8916e4db.616992f5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2106],{28453:(e,s,n)=>{n.d(s,{R:()=>o,x:()=>i});var t=n(96540);const r={},d=t.createContext(r);function o(e){const s=t.useContext(d);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function i(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),t.createElement(d.Provider,{value:s},e.children)}},60484:(e,s,n)=>{n.r(s),n.d(s,{as [...]
\ No newline at end of file
diff --git a/assets/js/8adf3ad1.c9823605.js b/assets/js/8adf3ad1.c9823605.js
new file mode 100644
index 000000000..18c2f92fe
--- /dev/null
+++ b/assets/js/8adf3ad1.c9823605.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8857],{28453:(e,n,t)=>{t.d(n,{R:()=>d,x:()=>l});var s=t(96540);const i={},r=s.createContext(i);function d(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),s.createElement(r.Provider,{value:n},e.children)}},70877:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/8b26a265.b78d6128.js b/assets/js/8b26a265.b78d6128.js
new file mode 100644
index 000000000..0a5985aa0
--- /dev/null
+++ b/assets/js/8b26a265.b78d6128.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1427],{9663:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>d,metadata:()=>s,toc:()=>a});const s=JSON.parse('{"id":"querying/geo","title":"Spatial filters","description":"\x3c!--","source":"@site/docs/37.0.0/querying/geo.md","sourceDirName":"querying","slug":"/querying/geo","permalink":"/docs/37.0.0/querying/geo","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{" [...]
\ No newline at end of file
diff --git a/assets/js/8bf2051c.de48314e.js b/assets/js/8bf2051c.de48314e.js
new file mode 100644
index 000000000..b42d60f60
--- /dev/null
+++ b/assets/js/8bf2051c.de48314e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9668],{28453:(e,t,r)=>{r.d(t,{R:()=>o,x:()=>d});var s=r(96540);const i={},n=s.createContext(i);function o(e){const t=s.useContext(n);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(n.Provider,{value:t},e.children)}},84920:(e,t,r)=>{r.r(t),r.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/8c391981.e8ae4b74.js b/assets/js/8c391981.e8ae4b74.js
new file mode 100644
index 000000000..993b095f4
--- /dev/null
+++ b/assets/js/8c391981.e8ae4b74.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5167],{28453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>o});var i=t(96540);const r={},a=i.createContext(r);function s(e){const n=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),i.createElement(a.Provider,{value:n},e.children)}},96729:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/8e848799.81e865f8.js b/assets/js/8e848799.81e865f8.js
new file mode 100644
index 000000000..198561a07
--- /dev/null
+++ b/assets/js/8e848799.81e865f8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1631],{28453:(e,t,s)=>{s.d(t,{R:()=>d,x:()=>o});var n=s(96540);const i={},r=n.createContext(i);function d(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),n.createElement(r.Provider,{value:t},e.children)}},42428:(e,t,s)=>{s.r(t),s.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/9088aabc.f1ea7a43.js b/assets/js/9088aabc.f1ea7a43.js
new file mode 100644
index 000000000..19ef354f7
--- /dev/null
+++ b/assets/js/9088aabc.f1ea7a43.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8667],{28453:(e,r,i)=>{i.d(r,{R:()=>a,x:()=>o});var n=i(96540);const t={},s=n.createContext(t);function a(e){const r=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function o(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:a(e.components),n.createElement(s.Provider,{value:r},e.children)}},32903:(e,r,i)=>{i.r(r),i.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/918cc096.a019befc.js b/assets/js/918cc096.a019befc.js
new file mode 100644
index 000000000..3b419f743
--- /dev/null
+++ b/assets/js/918cc096.a019befc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7782],{28453:(e,s,t)=>{t.d(s,{R:()=>d,x:()=>i});var n=t(96540);const o={},r=n.createContext(o);function d(e){const s=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function i(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:d(e.components),n.createElement(r.Provider,{value:s},e.children)}},46815:(e,s,t)=>{t.r(s),t.d(s,{as [...]
\ No newline at end of file
diff --git a/assets/js/91b79396.8db8942e.js b/assets/js/91b79396.8db8942e.js
new file mode 100644
index 000000000..2dc214cbd
--- /dev/null
+++ b/assets/js/91b79396.8db8942e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5389],{28453:(e,n,s)=>{s.d(n,{R:()=>c,x:()=>d});var t=s(96540);const r={},i=t.createContext(r);function c(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),t.createElement(i.Provider,{value:n},e.children)}},57535:(e,n,s)=>{s.r(n),s.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/925afb30.71b1e7bc.js b/assets/js/925afb30.71b1e7bc.js
new file mode 100644
index 000000000..30373f8db
--- /dev/null
+++ b/assets/js/925afb30.71b1e7bc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6701],{28187:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>n,toc:()=>a});const n=JSON.parse('{"id":"querying/select-query","title":"Select queries","description":"\x3c!--","source":"@site/docs/37.0.0/querying/select-query.md","sourceDirName":"querying","slug":"/querying/select-query","permalink":"/docs/37.0.0/querying/select-query","draft":false,"unlisted":false,"tags":[], [...]
\ No newline at end of file
diff --git a/assets/js/925b2855.f3434d03.js b/assets/js/925b2855.f3434d03.js
new file mode 100644
index 000000000..ecc39db85
--- /dev/null
+++ b/assets/js/925b2855.f3434d03.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7243],{28453:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>a});var d=t(96540);const r={},s=d.createContext(r);function i(e){const n=d.useContext(s);return d.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),d.createElement(s.Provider,{value:n},e.children)}},52949:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/945892f2.5996310f.js b/assets/js/945892f2.5996310f.js
new file mode 100644
index 000000000..133a62d09
--- /dev/null
+++ b/assets/js/945892f2.5996310f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8238],{7207:(e,r,i)=>{i.r(r),i.d(r,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"development/extensions-core/druid-basic-security","title":"Basic Security","description":"\x3c!--","source":"@site/docs/latest/development/extensions-core/druid-basic-security.md","sourceDirName":"development/extensions-core","slug":"/development/extensions-core/druid-basic-s [...]
\ No newline at end of file
diff --git a/assets/js/955ad32b.cc92b4fc.js b/assets/js/955ad32b.cc92b4fc.js
new file mode 100644
index 000000000..d57c0a6ec
--- /dev/null
+++ b/assets/js/955ad32b.cc92b4fc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4856],{5477:(e,r,i)=>{i.r(r),i.d(r,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"operations/mixed-workloads","title":"Configure Druid for mixed workloads","description":"\x3c!--","source":"@site/docs/37.0.0/operations/mixed-workloads.md","sourceDirName":"operations","slug":"/operations/mixed-workloads","permalink":"/docs/37.0.0/operations/mixed-workloads" [...]
\ No newline at end of file
diff --git a/assets/js/95998a7b.4e43e6a4.js b/assets/js/95998a7b.4e43e6a4.js
new file mode 100644
index 000000000..00b735fbd
--- /dev/null
+++ b/assets/js/95998a7b.4e43e6a4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4517],{28453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>l});var i=t(96540);const s={},r=i.createContext(s);function a(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),i.createElement(r.Provider,{value:n},e.children)}},73394:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/95f22674.3ceb6012.js b/assets/js/95f22674.3ceb6012.js
new file mode 100644
index 000000000..d89f50af0
--- /dev/null
+++ b/assets/js/95f22674.3ceb6012.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5136],{28453:(e,t,s)=>{s.d(t,{R:()=>n,x:()=>c});var d=s(96540);const r={},i=d.createContext(r);function n(e){const t=d.useContext(i);return d.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:n(e.components),d.createElement(i.Provider,{value:t},e.children)}},41344:(e,t,s)=>{s.r(t),s.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/96880511.eccdc35f.js b/assets/js/96880511.eccdc35f.js
new file mode 100644
index 000000000..b5b0c9b0d
--- /dev/null
+++ b/assets/js/96880511.eccdc35f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[149],{28453:(e,s,t)=>{t.d(s,{R:()=>a,x:()=>c});var n=t(96540);const i={},r=n.createContext(i);function a(e){const s=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),n.createElement(r.Provider,{value:s},e.children)}},60158:(e,s,t)=>{t.r(s),t.d(s,{ass [...]
\ No newline at end of file
diff --git a/assets/js/9783bc11.d02c13c7.js b/assets/js/9783bc11.d02c13c7.js
new file mode 100644
index 000000000..8091d2401
--- /dev/null
+++ b/assets/js/9783bc11.d02c13c7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7635],{10360:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>o});const s=JSON.parse('{"id":"querying/timeseriesquery","title":"Timeseries queries","description":"\x3c!--","source":"@site/docs/37.0.0/querying/timeseriesquery.md","sourceDirName":"querying","slug":"/querying/timeseriesquery","permalink":"/docs/37.0.0/querying/timeseriesquery","draft":false,"unlisted": [...]
\ No newline at end of file
diff --git a/assets/js/987d4acf.11dc39db.js b/assets/js/987d4acf.11dc39db.js
new file mode 100644
index 000000000..b4b4ff67c
--- /dev/null
+++ b/assets/js/987d4acf.11dc39db.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3375],{28453:(e,r,n)=>{n.d(r,{R:()=>o,x:()=>d});var i=n(96540);const s={},t=i.createContext(s);function o(e){const r=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function d(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(t.Provider,{value:r},e.children)}},71108:(e,r,n)=>{n.r(r),n.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/992deef6.0de76a66.js b/assets/js/992deef6.0de76a66.js
new file mode 100644
index 000000000..f6c9ea359
--- /dev/null
+++ b/assets/js/992deef6.0de76a66.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1673],{28453:(e,r,n)=>{n.d(r,{R:()=>a,x:()=>o});var i=n(96540);const s={},t=i.createContext(s);function a(e){const r=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function o(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),i.createElement(t.Provider,{value:r},e.children)}},74759:(e,r,n)=>{n.r(r),n.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/9992ecad.3a706305.js b/assets/js/9992ecad.3a706305.js
new file mode 100644
index 000000000..3456c8e92
--- /dev/null
+++ b/assets/js/9992ecad.3a706305.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7499],{28453:(e,r,t)=>{t.d(r,{R:()=>o,x:()=>d});var n=t(96540);const i={},s=n.createContext(i);function o(e){const r=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function d(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),n.createElement(s.Provider,{value:r},e.children)}},48707:(e,r,t)=>{t.r(r),t.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/99d91b5a.47af32cc.js b/assets/js/99d91b5a.47af32cc.js
new file mode 100644
index 000000000..dc1a5c320
--- /dev/null
+++ b/assets/js/99d91b5a.47af32cc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5752],{28453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>r});var a=n(96540);const s={},i=a.createContext(s);function l(e){const t=a.useContext(i);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),a.createElement(i.Provider,{value:t},e.children)}},41862:(e,t,n)=>{n.r(t),n.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/9b6ed38a.73bd363a.js b/assets/js/9b6ed38a.73bd363a.js
new file mode 100644
index 000000000..d87a01645
--- /dev/null
+++ b/assets/js/9b6ed38a.73bd363a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5807],{26026:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"querying/topnquery","title":"TopN queries","description":"\x3c!--","source":"@site/docs/37.0.0/querying/topnquery.md","sourceDirName":"querying","slug":"/querying/topnquery","permalink":"/docs/37.0.0/querying/topnquery","draft":false,"unlisted":false,"tags":[],"version":"cur [...]
\ No newline at end of file
diff --git a/assets/js/9c4e476f.b9d1af69.js b/assets/js/9c4e476f.b9d1af69.js
new file mode 100644
index 000000000..1c5bf4085
--- /dev/null
+++ b/assets/js/9c4e476f.b9d1af69.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7442],{18590:(e,r,i)=>{i.r(r),i.d(r,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>s,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"design/extensions-contrib/dropwizard","title":"Dropwizard metrics emitter","description":"\x3c!--","source":"@site/docs/37.0.0/design/extensions-contrib/dropwizard.md","sourceDirName":"design/extensions-contrib","slug":"/design/extensions-contrib/dropwizard","permalink":"/do [...]
\ No newline at end of file
diff --git a/assets/js/9c962748.8a10c099.js b/assets/js/9c962748.8a10c099.js
new file mode 100644
index 000000000..667210370
--- /dev/null
+++ b/assets/js/9c962748.8a10c099.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3263],{28453:(e,n,i)=>{i.d(n,{R:()=>t,x:()=>c});var s=i(96540);const r={},o=s.createContext(r);function t(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:t(e.components),s.createElement(o.Provider,{value:n},e.children)}},30216:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/9cc70f41.28cd1b32.js b/assets/js/9cc70f41.28cd1b32.js
new file mode 100644
index 000000000..91c673584
--- /dev/null
+++ b/assets/js/9cc70f41.28cd1b32.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7326],{28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>r});var i=t(96540);const a={},s=i.createContext(a);function o(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),i.createElement(s.Provider,{value:n},e.children)}},63973:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/9d21bf1b.c26c6b0a.js b/assets/js/9d21bf1b.c26c6b0a.js
new file mode 100644
index 000000000..01e71011d
--- /dev/null
+++ b/assets/js/9d21bf1b.c26c6b0a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9706],{21220:(e,t,a)=>{a.d(t,{A:()=>s});const s=a.p+"assets/images/tutorial-batch-data-loader-015-55d94d89e0b3a4edf0c1e23bc283b6f1.png"},23988:(e,t,a)=>{a.d(t,{A:()=>s});const s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAF8AAAAXCAYAAABtR5P0AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAX6ADAAQAAAABAAAAFwAAAAAdsfvDAAAKwklEQVRoBe1ZeVDV5xU9vKdsArKIoqIoyiayKBFXEGQRUVyqNS5Zamw1M [...]
\ No newline at end of file
diff --git a/assets/js/9dd30c58.689b214f.js b/assets/js/9dd30c58.689b214f.js
new file mode 100644
index 000000000..f14bfb28d
--- /dev/null
+++ b/assets/js/9dd30c58.689b214f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8587],{28453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>o});var s=t(96540);const i={},a=s.createContext(i);function r(e){const n=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(a.Provider,{value:n},e.children)}},60976:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/9ec0a7e0.e22027b7.js b/assets/js/9ec0a7e0.e22027b7.js
new file mode 100644
index 000000000..7a5319b44
--- /dev/null
+++ b/assets/js/9ec0a7e0.e22027b7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3187],{28453:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>o});var s=n(96540);const i={},a=s.createContext(i);function r(e){const t=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(a.Provider,{value:t},e.children)}},75708:(e,t,n)=>{n.r(t),n.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/9ff4b2c8.ba10f98b.js b/assets/js/9ff4b2c8.ba10f98b.js
new file mode 100644
index 000000000..05302a811
--- /dev/null
+++ b/assets/js/9ff4b2c8.ba10f98b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1665],{28453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>a});var r=s(96540);const t={},i=r.createContext(t);function d(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),r.createElement(i.Provider,{value:n},e.children)}},89973:(e,n,s)=>{s.r(n),s.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/a0577ac4.c7bbe99f.js b/assets/js/a0577ac4.c7bbe99f.js
new file mode 100644
index 000000000..14ee20409
--- /dev/null
+++ b/assets/js/a0577ac4.c7bbe99f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[421],{28453:(e,r,n)=>{n.d(r,{R:()=>d,x:()=>c});var s=n(96540);const t={},i=s.createContext(t);function d(e){const r=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function c(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),s.createElement(i.Provider,{value:r},e.children)}},28941:(e,r,n)=>{n.r(r),n.d(r,{ass [...]
\ No newline at end of file
diff --git a/assets/js/a0e4b465.ee8f9d44.js b/assets/js/a0e4b465.ee8f9d44.js
new file mode 100644
index 000000000..f2c05955b
--- /dev/null
+++ b/assets/js/a0e4b465.ee8f9d44.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5130],{17634:(e,n,s)=>{s.d(n,{A:()=>t});const t=s.p+"assets/images/nested-retrieve-json-facaa1be9754d33d32e59c6f2c2d8f73.png"},19546:(e,n,s)=>{s.d(n,{A:()=>t});const t=s.p+"assets/images/nested-group-aggregate-ec3088ac449e81177b38ab9d9c39ec49.png"},23422:(e,n,s)=>{s.d(n,{A:()=>t});const t=s.p+"assets/images/nested-display-data-types-5dd733147ce48db2a498602be5cfc9ec.png"},28453:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>o});var t=s(96540); [...]
\ No newline at end of file
diff --git a/assets/js/a1865104.642fa55f.js b/assets/js/a1865104.642fa55f.js
new file mode 100644
index 000000000..b1170e361
--- /dev/null
+++ b/assets/js/a1865104.642fa55f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3049],{28453:(e,n,o)=>{o.d(n,{R:()=>a,x:()=>d});var t=o(96540);const s={},i=t.createContext(s);function a(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),t.createElement(i.Provider,{value:n},e.children)}},72213:(e,n,o)=>{o.r(n),o.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/a26c1558.7e530130.js b/assets/js/a26c1558.7e530130.js
new file mode 100644
index 000000000..c25473ec5
--- /dev/null
+++ b/assets/js/a26c1558.7e530130.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4418],{13355:(e,n,l)=>{l.r(n),l.d(n,{assets:()=>a,contentTitle:()=>d,default:()=>h,frontMatter:()=>s,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"tutorials/tutorial-sql-null","title":"Null handling tutorial","description":"Introduction to null handling in Druid","source":"@site/docs/37.0.0/tutorials/tutorial-sql-null.md","sourceDirName":"tutorials","slug":"/tutorials/tutorial-sql-null","permalink":"/docs/37.0.0/tutori [...]
\ No newline at end of file
diff --git a/assets/js/a2b99ef3.04e9e248.js b/assets/js/a2b99ef3.04e9e248.js
new file mode 100644
index 000000000..ddd45e247
--- /dev/null
+++ b/assets/js/a2b99ef3.04e9e248.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1590],{28453:(e,s,i)=>{i.d(s,{R:()=>d,x:()=>o});var n=i(96540);const t={},r=n.createContext(t);function d(e){const s=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),n.createElement(r.Provider,{value:s},e.children)}},77507:(e,s,i)=>{i.r(s),i.d(s,{as [...]
\ No newline at end of file
diff --git a/assets/js/a35348eb.fca1960c.js b/assets/js/a35348eb.fca1960c.js
new file mode 100644
index 000000000..534e85199
--- /dev/null
+++ b/assets/js/a35348eb.fca1960c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1346],{28453:(e,r,s)=>{s.d(r,{R:()=>t,x:()=>n});var o=s(96540);const d={},i=o.createContext(d);function t(e){const r=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function n(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:t(e.components),o.createElement(i.Provider,{value:r},e.children)}},82475:(e,r,s)=>{s.r(r),s.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/a37f7d8e.fb9e054e.js b/assets/js/a37f7d8e.fb9e054e.js
new file mode 100644
index 000000000..b7b4f266b
--- /dev/null
+++ b/assets/js/a37f7d8e.fb9e054e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[364],{28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var r=t(96540);const i={},s=r.createContext(i);function o(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),r.createElement(s.Provider,{value:n},e.children)}},59317:(e,n,t)=>{t.r(n),t.d(n,{ass [...]
\ No newline at end of file
diff --git a/assets/js/a736db70.f36baa34.js b/assets/js/a736db70.f36baa34.js
new file mode 100644
index 000000000..0f1136752
--- /dev/null
+++ b/assets/js/a736db70.f36baa34.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2783],{28453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>r});var o=t(96540);const s={},i=o.createContext(s);function a(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),o.createElement(i.Provider,{value:n},e.children)}},49995:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/a75faf06.3be56bda.js b/assets/js/a75faf06.3be56bda.js
new file mode 100644
index 000000000..7441cfabc
--- /dev/null
+++ b/assets/js/a75faf06.3be56bda.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5837],{28453:(e,t,i)=>{i.d(t,{R:()=>s,x:()=>l});var n=i(96540);const d={},r=n.createContext(d);function s(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:s(e.components),n.createElement(r.Provider,{value:t},e.children)}},98276:(e,t,i)=>{i.r(t),i.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/a76df15c.bdeda0a7.js b/assets/js/a76df15c.bdeda0a7.js
new file mode 100644
index 000000000..d81568bc1
--- /dev/null
+++ b/assets/js/a76df15c.bdeda0a7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[606],{28453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>o});var i=s(96540);const r={},t=i.createContext(r);function d(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(t.Provider,{value:n},e.children)}},77118:(e,n,s)=>{s.r(n),s.d(n,{ass [...]
\ No newline at end of file
diff --git a/assets/js/a78e8939.97d16bca.js b/assets/js/a78e8939.97d16bca.js
new file mode 100644
index 000000000..94de40787
--- /dev/null
+++ b/assets/js/a78e8939.97d16bca.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7675],{28453:(e,n,o)=>{o.d(n,{R:()=>c,x:()=>r});var t=o(96540);const s={},i=t.createContext(s);function c(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),t.createElement(i.Provider,{value:n},e.children)}},60624:(e,n,o)=>{o.r(n),o.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/a8dae9bd.468c015f.js b/assets/js/a8dae9bd.468c015f.js
new file mode 100644
index 000000000..00551628b
--- /dev/null
+++ b/assets/js/a8dae9bd.468c015f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8477],{28453:(e,t,n)=>{n.d(t,{R:()=>d,x:()=>l});var s=n(96540);const r={},i=s.createContext(r);function d(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),s.createElement(i.Provider,{value:t},e.children)}},55894:(e,t,n)=>{n.r(t),n.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/a8ec249b.b5f1f41a.js b/assets/js/a8ec249b.b5f1f41a.js
new file mode 100644
index 000000000..873b4095c
--- /dev/null
+++ b/assets/js/a8ec249b.b5f1f41a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2575],{28453:(t,n,e)=>{e.d(n,{R:()=>o,x:()=>a});var i=e(96540);const r={},s=i.createContext(r);function o(t){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof t?t(n):{...n,...t}}),[n,t])}function a(t){let n;return n=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:o(t.components),i.createElement(s.Provider,{value:n},t.children)}},67524:(t,n,e)=>{e.r(n),e.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/a91680d2.68ad35c4.js b/assets/js/a91680d2.68ad35c4.js
new file mode 100644
index 000000000..497f83a25
--- /dev/null
+++ b/assets/js/a91680d2.68ad35c4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7034],{19315:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>h,frontMatter:()=>r,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"development/extensions-core/avro","title":"Apache Avro","description":"\x3c!--","source":"@site/docs/latest/development/extensions-core/avro.md","sourceDirName":"development/extensions-core","slug":"/development/extensions-core/avro","permalink":"/docs/latest/development/ext [...]
\ No newline at end of file
diff --git a/assets/js/aa39dc57.89bcaa79.js b/assets/js/aa39dc57.89bcaa79.js
new file mode 100644
index 000000000..0dc666a3f
--- /dev/null
+++ b/assets/js/aa39dc57.89bcaa79.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5262],{28453:(e,n,i)=>{i.d(n,{R:()=>r,x:()=>o});var s=i(96540);const t={},l=s.createContext(t);function r(e){const n=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),s.createElement(l.Provider,{value:n},e.children)}},68340:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/aac8db6e.707a6c26.js b/assets/js/aac8db6e.707a6c26.js
new file mode 100644
index 000000000..587f533e1
--- /dev/null
+++ b/assets/js/aac8db6e.707a6c26.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5557],{20482:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>c,frontMatter:()=>a,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"design/indexer","title":"Indexer service","description":"\x3c!--","source":"@site/docs/37.0.0/design/indexer.md","sourceDirName":"design","slug":"/design/indexer","permalink":"/docs/37.0.0/design/indexer","draft":false,"unlisted":false,"tags":[],"version":"current","frontMat [...]
\ No newline at end of file
diff --git a/assets/js/ab046938.f0496050.js b/assets/js/ab046938.f0496050.js
new file mode 100644
index 000000000..5d8a374e8
--- /dev/null
+++ b/assets/js/ab046938.f0496050.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[904],{22596:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>h,frontMatter:()=>r,metadata:()=>i,toc:()=>u});const i=JSON.parse('{"id":"api-reference/automatic-compaction-api","title":"Automatic compaction API","description":"\x3c!--","source":"@site/docs/latest/api-reference/automatic-compaction-api.md","sourceDirName":"api-reference","slug":"/api-reference/automatic-compaction-api","permalink":"/docs/latest [...]
\ No newline at end of file
diff --git a/assets/js/ab0664d4.0d855ab5.js b/assets/js/ab0664d4.0d855ab5.js
new file mode 100644
index 000000000..9ff501aec
--- /dev/null
+++ b/assets/js/ab0664d4.0d855ab5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1598],{28453:(e,s,t)=>{t.d(s,{R:()=>o,x:()=>a});var r=t(96540);const n={},i=r.createContext(n);function o(e){const s=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function a(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:o(e.components),r.createElement(i.Provider,{value:s},e.children)}},79535:(e,s,t)=>{t.r(s),t.d(s,{as [...]
\ No newline at end of file
diff --git a/assets/js/ac1efd3f.2b2f66dd.js b/assets/js/ac1efd3f.2b2f66dd.js
new file mode 100644
index 000000000..a01b8bd49
--- /dev/null
+++ b/assets/js/ac1efd3f.2b2f66dd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[720],{28453:(e,i,s)=>{s.d(i,{R:()=>o,x:()=>a});var n=s(96540);const r={},t=n.createContext(r);function o(e){const i=n.useContext(t);return n.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function a(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),n.createElement(t.Provider,{value:i},e.children)}},89604:(e,i,s)=>{s.r(i),s.d(i,{ass [...]
\ No newline at end of file
diff --git a/assets/js/ac8287b1.5aac050c.js b/assets/js/ac8287b1.5aac050c.js
new file mode 100644
index 000000000..cffcdc3de
--- /dev/null
+++ b/assets/js/ac8287b1.5aac050c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5501],{8141:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>d,frontMatter:()=>a,metadata:()=>o,toc:()=>m});const o=JSON.parse('{"id":"operations/segment-optimization","title":"Segment size optimization","description":"\x3c!--","source":"@site/docs/37.0.0/operations/segment-optimization.md","sourceDirName":"operations","slug":"/operations/segment-optimization","permalink":"/docs/37.0.0/operations/segment-opt [...]
\ No newline at end of file
diff --git a/assets/js/ad43a861.71816c3e.js b/assets/js/ad43a861.71816c3e.js
new file mode 100644
index 000000000..a3325c1fb
--- /dev/null
+++ b/assets/js/ad43a861.71816c3e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7543],{28453:(e,n,r)=>{r.d(n,{R:()=>l,x:()=>o});var i=r(96540);const s={},t=i.createContext(s);function l(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),i.createElement(t.Provider,{value:n},e.children)}},49451:(e,n,r)=>{r.r(n),r.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/adac2065.dfc4b13d.js b/assets/js/adac2065.dfc4b13d.js
new file mode 100644
index 000000000..339c80c86
--- /dev/null
+++ b/assets/js/adac2065.dfc4b13d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5769],{28453:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>a});var t=i(96540);const r={},o=t.createContext(r);function s(e){const n=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),t.createElement(o.Provider,{value:n},e.children)}},42556:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/ae5e56be.a37d4768.js b/assets/js/ae5e56be.a37d4768.js
new file mode 100644
index 000000000..183fb56b3
--- /dev/null
+++ b/assets/js/ae5e56be.a37d4768.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2613],{28453:(e,t,r)=>{r.d(t,{R:()=>a,x:()=>d});var n=r(96540);const i={},s=n.createContext(i);function a(e){const t=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),n.createElement(s.Provider,{value:t},e.children)}},65531:(e,t,r)=>{r.r(t),r.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/af6b996e.83884d33.js b/assets/js/af6b996e.83884d33.js
new file mode 100644
index 000000000..a7519e3af
--- /dev/null
+++ b/assets/js/af6b996e.83884d33.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1035],{28453:(e,n,i)=>{i.d(n,{R:()=>d,x:()=>a});var r=i(96540);const o={},t=r.createContext(o);function d(e){const n=r.useContext(t);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:d(e.components),r.createElement(t.Provider,{value:n},e.children)}},80100:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/af851bde.30fc1672.js b/assets/js/af851bde.30fc1672.js
new file mode 100644
index 000000000..b0e2f5551
--- /dev/null
+++ b/assets/js/af851bde.30fc1672.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8327],{14750:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>c,contentTitle:()=>l,default:()=>o,frontMatter:()=>i,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"querying/sql-metadata-tables","title":"SQL metadata tables","description":"\x3c!--","source":"@site/docs/37.0.0/querying/sql-metadata-tables.md","sourceDirName":"querying","slug":"/querying/sql-metadata-tables","permalink":"/docs/37.0.0/querying/sql-metadata-tables","draft": [...]
\ No newline at end of file
diff --git a/assets/js/b093f027.57f89584.js b/assets/js/b093f027.57f89584.js
new file mode 100644
index 000000000..e04377bf8
--- /dev/null
+++ b/assets/js/b093f027.57f89584.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8362],{28453:(e,n,r)=>{r.d(n,{R:()=>a,x:()=>i});var s=r(96540);const t={},l=s.createContext(t);function a(e){const n=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:a(e.components),s.createElement(l.Provider,{value:n},e.children)}},32486:(e,n,r)=>{r.r(n),r.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/b0c79e6c.8c84dce8.js b/assets/js/b0c79e6c.8c84dce8.js
new file mode 100644
index 000000000..3ed1efdb9
--- /dev/null
+++ b/assets/js/b0c79e6c.8c84dce8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5512],{28453:(e,i,r)=>{r.d(i,{R:()=>s,x:()=>c});var n=r(96540);const t={},o=n.createContext(t);function s(e){const i=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function c(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:s(e.components),n.createElement(o.Provider,{value:i},e.children)}},56440:(e,i,r)=>{r.d(i,{A:()=>n}) [...]
\ No newline at end of file
diff --git a/assets/js/b0f66fab.0dc72b5c.js b/assets/js/b0f66fab.0dc72b5c.js
new file mode 100644
index 000000000..7e5b2a381
--- /dev/null
+++ b/assets/js/b0f66fab.0dc72b5c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[72],{20813:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>l,frontMatter:()=>d,metadata:()=>i,toc:()=>a});const i=JSON.parse('{"id":"development/extensions-core/druid-pac4j","title":"Druid pac4j based Security extension","description":"\x3c!--","source":"@site/docs/37.0.0/development/extensions-core/druid-pac4j.md","sourceDirName":"development/extensions-core","slug":"/development/extensions-core/druid-pac4 [...]
\ No newline at end of file
diff --git a/assets/js/b1eac0f6.157bce66.js b/assets/js/b1eac0f6.157bce66.js
new file mode 100644
index 000000000..3d0a7a37b
--- /dev/null
+++ b/assets/js/b1eac0f6.157bce66.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1127],{28453:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>l});var a=n(96540);const s={},i=a.createContext(s);function r(e){const t=a.useContext(i);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),a.createElement(i.Provider,{value:t},e.children)}},69080:(e,t,n)=>{n.r(t),n.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/b25c3a04.8a0d72a1.js b/assets/js/b25c3a04.8a0d72a1.js
new file mode 100644
index 000000000..e07a328a3
--- /dev/null
+++ b/assets/js/b25c3a04.8a0d72a1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8923],{28453:(e,t,i)=>{i.d(t,{R:()=>d,x:()=>o});var r=i(96540);const n={},s=r.createContext(n);function d(e){const t=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:d(e.components),r.createElement(s.Provider,{value:t},e.children)}},88334:(e,t,i)=>{i.r(t),i.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/b2c7e98e.39bfe49e.js b/assets/js/b2c7e98e.39bfe49e.js
new file mode 100644
index 000000000..77e30ecf0
--- /dev/null
+++ b/assets/js/b2c7e98e.39bfe49e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8834],{28453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>r});var s=i(96540);const t={},a=s.createContext(t);function o(e){const n=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),s.createElement(a.Provider,{value:n},e.children)}},57352:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/b2ffdb77.02dfffc6.js b/assets/js/b2ffdb77.02dfffc6.js
new file mode 100644
index 000000000..1941d1a87
--- /dev/null
+++ b/assets/js/b2ffdb77.02dfffc6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1499],{28453:(e,s,t)=>{t.d(s,{R:()=>o,x:()=>i});var a=t(96540);const r={},n=a.createContext(r);function o(e){const s=a.useContext(n);return a.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function i(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),a.createElement(n.Provider,{value:s},e.children)}},90283:(e,s,t)=>{t.r(s),t.d(s,{as [...]
\ No newline at end of file
diff --git a/assets/js/b3dfb1c3.e1393fda.js b/assets/js/b3dfb1c3.e1393fda.js
new file mode 100644
index 000000000..37130d646
--- /dev/null
+++ b/assets/js/b3dfb1c3.e1393fda.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5437],{28453:(e,n,r)=>{r.d(n,{R:()=>d,x:()=>o});var t=r(96540);const s={},i=t.createContext(s);function d(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:d(e.components),t.createElement(i.Provider,{value:n},e.children)}},91079:(e,n,r)=>{r.r(n),r.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/b4aeeb80.983468ad.js b/assets/js/b4aeeb80.983468ad.js
new file mode 100644
index 000000000..7573d8477
--- /dev/null
+++ b/assets/js/b4aeeb80.983468ad.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8814],{28453:(e,n,r)=>{r.d(n,{R:()=>l,x:()=>d});var s=r(96540);const i={},t=s.createContext(i);function l(e){const n=s.useContext(t);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:l(e.components),s.createElement(t.Provider,{value:n},e.children)}},46374:(e,n,r)=>{r.r(n),r.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/b6c51240.fe9b5868.js b/assets/js/b6c51240.fe9b5868.js
new file mode 100644
index 000000000..818a05507
--- /dev/null
+++ b/assets/js/b6c51240.fe9b5868.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8966],{28453:(e,n,i)=>{i.d(n,{R:()=>r,x:()=>a});var s=i(96540);const t={},o=s.createContext(t);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),s.createElement(o.Provider,{value:n},e.children)}},92349:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/b6d922f1.ecccc3ed.js b/assets/js/b6d922f1.ecccc3ed.js
new file mode 100644
index 000000000..cbc143090
--- /dev/null
+++ b/assets/js/b6d922f1.ecccc3ed.js
@@ -0,0 +1 @@
+(self.webpackChunk=self.webpackChunk||[]).push([[4849],{4314:e=>{e.exports.h=[{version:"37.0.0",date:"Apr 17 2026"},{version:"36.0.0",date:"Feb 9 2026"},{version:"35.0.1",date:"Dec 15 2025"}]},28453:(e,r,s)=>{"use strict";s.d(r,{R:()=>n,x:()=>t});var a=s(96540);const i={},d=a.createContext(i);function n(e){const r=a.useContext(d);return a.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function t(e){let r;return r=e.disableParentContext?"function"==typeof e.compo [...]
\ No newline at end of file
diff --git a/assets/js/b736c7cf.192bbd44.js b/assets/js/b736c7cf.192bbd44.js
new file mode 100644
index 000000000..09ec9ff0e
--- /dev/null
+++ b/assets/js/b736c7cf.192bbd44.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7068],{28453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var o=t(96540);const s={},i=o.createContext(s);function r(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),o.createElement(i.Provider,{value:n},e.children)}},93455:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/b7f8364a.a32a2814.js b/assets/js/b7f8364a.a32a2814.js
new file mode 100644
index 000000000..7c5426570
--- /dev/null
+++ b/assets/js/b7f8364a.a32a2814.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7058],{16127:(e,n,s)=>{s.d(n,{A:()=>t});const t=s.p+"assets/images/tutorial-sql-auto-queries-eb62d0f4f2bb563fddf353a7afbd18a2.png"},28453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>a});var t=s(96540);const r={},i=t.createContext(r);function l(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.comp [...]
\ No newline at end of file
diff --git a/assets/js/b8d95f5b.5121d014.js b/assets/js/b8d95f5b.5121d014.js
new file mode 100644
index 000000000..505950f95
--- /dev/null
+++ b/assets/js/b8d95f5b.5121d014.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1192],{28453:(e,s,n)=>{n.d(s,{R:()=>a,x:()=>d});var i=n(96540);const t={},r=i.createContext(t);function a(e){const s=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function d(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:a(e.components),i.createElement(r.Provider,{value:s},e.children)}},79626:(e,s,n)=>{n.r(s),n.d(s,{as [...]
\ No newline at end of file
diff --git a/assets/js/b90eb34a.3ab989cd.js b/assets/js/b90eb34a.3ab989cd.js
new file mode 100644
index 000000000..2b6de6154
--- /dev/null
+++ b/assets/js/b90eb34a.3ab989cd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2877],{28453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>d});var s=n(96540);const r={},i=s.createContext(r);function o(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),s.createElement(i.Provider,{value:t},e.children)}},54696:(e,t,n)=>{n.r(t),n.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/b924275e.1f3eabb2.js b/assets/js/b924275e.1f3eabb2.js
new file mode 100644
index 000000000..75909cabf
--- /dev/null
+++ b/assets/js/b924275e.1f3eabb2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2077],{28453:(e,s,n)=>{n.d(s,{R:()=>o,x:()=>a});var t=n(96540);const i={},r=t.createContext(i);function o(e){const s=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function a(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),t.createElement(r.Provider,{value:s},e.children)}},46699:(e,s,n)=>{n.r(s),n.d(s,{as [...]
\ No newline at end of file
diff --git a/assets/js/b964b515.3d862665.js b/assets/js/b964b515.3d862665.js
new file mode 100644
index 000000000..92698d0b1
--- /dev/null
+++ b/assets/js/b964b515.3d862665.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3888],{7276:(e,t,a)=>{a.d(t,{A:()=>s});const s=a.p+"assets/images/tutorial-kafka-data-loader-10-6a55a1befc9900c50ed7f8f3f14071ed.png"},7700:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"tutorials/tutorial-kafka","title":"Load streaming data from Apache Kafka","description":"\x3c!--","source":"@site/docs/latest/tutorials/tutorial-kaf [...]
\ No newline at end of file
diff --git a/assets/js/bae77381.7007129f.js b/assets/js/bae77381.7007129f.js
new file mode 100644
index 000000000..95d0c26df
--- /dev/null
+++ b/assets/js/bae77381.7007129f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6779],{28453:(e,n,c)=>{c.d(n,{R:()=>t,x:()=>s});var r=c(96540);const i={},o=r.createContext(i);function t(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),r.createElement(o.Provider,{value:n},e.children)}},91037:(e,n,c)=>{c.r(n),c.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/bb2e1240.4d63c9bc.js b/assets/js/bb2e1240.4d63c9bc.js
new file mode 100644
index 000000000..1915688ef
--- /dev/null
+++ b/assets/js/bb2e1240.4d63c9bc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9741],{28453:(e,n,i)=>{i.d(n,{R:()=>d,x:()=>s});var o=i(96540);const t={},r=o.createContext(t);function d(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),o.createElement(r.Provider,{value:n},e.children)}},59571:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/bb8edb1f.7b151052.js b/assets/js/bb8edb1f.7b151052.js
new file mode 100644
index 000000000..e1bf136a3
--- /dev/null
+++ b/assets/js/bb8edb1f.7b151052.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9014],{403:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/tutorial-theta-06-4b588f7737377421937ed369bfe9a94e.png"},24712:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>h,contentTitle:()=>r,default:()=>d,frontMatter:()=>o,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"tutorials/tutorial-sketches-theta","title":"Approximations with Theta sketches","description":"\x3c!--","source":"@site/docs/37.0.0/tutorials/tutorial-sketches- [...]
\ No newline at end of file
diff --git a/assets/js/be40a19d.721d45b1.js b/assets/js/be40a19d.721d45b1.js
new file mode 100644
index 000000000..11f95d73f
--- /dev/null
+++ b/assets/js/be40a19d.721d45b1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5253],{15555:(e,r,s)=>{s.d(r,{A:()=>n});const n=s.p+"assets/images/services-overview-626a864a11edcf4945591a35d4a3814c.png"},24808:(e,r,s)=>{s.d(r,{A:()=>n});const n=s.p+"assets/images/druid-architecture-a2d14e8be60d586632471e97383e406c.svg"},28453:(e,r,s)=>{s.d(r,{R:()=>a,x:()=>t});var n=s(96540);const i={},o=n.createContext(i);function a(e){const r=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(r):{ [...]
\ No newline at end of file
diff --git a/assets/js/be59c4a2.cf186745.js b/assets/js/be59c4a2.cf186745.js
new file mode 100644
index 000000000..b3065d790
--- /dev/null
+++ b/assets/js/be59c4a2.cf186745.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4942],{28453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>a});var s=i(96540);const t={},r=s.createContext(t);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),s.createElement(r.Provider,{value:n},e.children)}},95087:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/bee5d326.07dcce33.js b/assets/js/bee5d326.07dcce33.js
new file mode 100644
index 000000000..1ed9ee361
--- /dev/null
+++ b/assets/js/bee5d326.07dcce33.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9025],{28453:(e,s,r)=>{r.d(s,{R:()=>i,x:()=>l});var t=r(96540);const n={},d=t.createContext(n);function i(e){const s=t.useContext(d);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:i(e.components),t.createElement(d.Provider,{value:s},e.children)}},56935:(e,s,r)=>{r.r(s),r.d(s,{as [...]
\ No newline at end of file
diff --git a/assets/js/bffa185b.32a5518f.js b/assets/js/bffa185b.32a5518f.js
new file mode 100644
index 000000000..6da47da11
--- /dev/null
+++ b/assets/js/bffa185b.32a5518f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2658],{28453:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>l});var t=i(96540);const a={},r=t.createContext(a);function s(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),t.createElement(r.Provider,{value:n},e.children)}},45116:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/c0161e79.e11baa9a.js b/assets/js/c0161e79.e11baa9a.js
new file mode 100644
index 000000000..ba1efae37
--- /dev/null
+++ b/assets/js/c0161e79.e11baa9a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4113],{28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>r});var s=t(96540);const i={},a=s.createContext(i);function o(e){const n=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(a.Provider,{value:n},e.children)}},60451:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/c06e24f0.63911193.js b/assets/js/c06e24f0.63911193.js
new file mode 100644
index 000000000..b9cb06e87
--- /dev/null
+++ b/assets/js/c06e24f0.63911193.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2485],{28453:(e,r,t)=>{t.d(r,{R:()=>a,x:()=>i});var n=t(96540);const o={},s=n.createContext(o);function a(e){const r=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),n.createElement(s.Provider,{value:r},e.children)}},57962:(e,r,t)=>{t.r(r),t.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/c0c3df5b.2e447ce1.js b/assets/js/c0c3df5b.2e447ce1.js
new file mode 100644
index 000000000..a57914d82
--- /dev/null
+++ b/assets/js/c0c3df5b.2e447ce1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7615],{28453:(e,t,a)=>{a.d(t,{R:()=>i,x:()=>d});var r=a(96540);const n={},s=r.createContext(n);function i(e){const t=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:i(e.components),r.createElement(s.Provider,{value:t},e.children)}},61231:(e,t,a)=>{a.r(t),a.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/c23102ef.938bf758.js b/assets/js/c23102ef.938bf758.js
new file mode 100644
index 000000000..2dfb9ff39
--- /dev/null
+++ b/assets/js/c23102ef.938bf758.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7247],{28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var s=t(96540);const i={},r=s.createContext(i);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(r.Provider,{value:n},e.children)}},69695:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/c2ae6274.8e7aafea.js b/assets/js/c2ae6274.8e7aafea.js
new file mode 100644
index 000000000..23ff624a9
--- /dev/null
+++ b/assets/js/c2ae6274.8e7aafea.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1355],{28453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>r});var s=i(96540);const t={},a=s.createContext(t);function o(e){const n=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),s.createElement(a.Provider,{value:n},e.children)}},72681:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/c3a3bae8.de18c6b6.js b/assets/js/c3a3bae8.de18c6b6.js
new file mode 100644
index 000000000..fe00365bf
--- /dev/null
+++ b/assets/js/c3a3bae8.de18c6b6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8197],{28453:(e,o,n)=>{n.d(o,{R:()=>l,x:()=>r});var t=n(96540);const s={},i=t.createContext(s);function l(e){const o=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function r(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),t.createElement(i.Provider,{value:o},e.children)}},47288:(e,o,n)=>{n.r(o),n.d(o,{as [...]
\ No newline at end of file
diff --git a/assets/js/c3e26f49.8b5865bd.js b/assets/js/c3e26f49.8b5865bd.js
new file mode 100644
index 000000000..31602d450
--- /dev/null
+++ b/assets/js/c3e26f49.8b5865bd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9],{28453:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>d});var a=i(96540);const r={},t=a.createContext(r);function s(e){const n=a.useContext(t);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),a.createElement(t.Provider,{value:n},e.children)}},61980:(e,n,i)=>{i.r(n),i.d(n,{asset [...]
\ No newline at end of file
diff --git a/assets/js/c4f5d8e4.88ffac2e.js b/assets/js/c4f5d8e4.88ffac2e.js
new file mode 100644
index 000000000..8acdc7957
--- /dev/null
+++ b/assets/js/c4f5d8e4.88ffac2e.js
@@ -0,0 +1 @@
+(self.webpackChunk=self.webpackChunk||[]).push([[2634],{4314:e=>{e.exports.h=[{version:"37.0.0",date:"Apr 17 2026"},{version:"36.0.0",date:"Feb 9 2026"},{version:"35.0.1",date:"Dec 15 2025"}]},38965:(e,a,i)=>{"use strict";i.r(a),i.d(a,{default:()=>f});var t=i(93237),n=(i(96540),i(74848));function s(e){var a=e.data;return(0,n.jsxs)("div",{className:"druid-feature",children:[(0,n.jsx)("h5",{children:a.title}),(0,n.jsx)("p",{children:a.description})]})}function r(e){var a=e.jsonData;return( [...]
\ No newline at end of file
diff --git a/assets/js/c50b9f9b.c99e33c8.js b/assets/js/c50b9f9b.c99e33c8.js
new file mode 100644
index 000000000..6e577c202
--- /dev/null
+++ b/assets/js/c50b9f9b.c99e33c8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3373],{28453:(e,t,s)=>{s.d(t,{R:()=>o,x:()=>c});var n=s(96540);const i={},r=n.createContext(i);function o(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),n.createElement(r.Provider,{value:t},e.children)}},99221:(e,t,s)=>{s.r(t),s.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/c52ed6a0.96d35f61.js b/assets/js/c52ed6a0.96d35f61.js
new file mode 100644
index 000000000..18d088887
--- /dev/null
+++ b/assets/js/c52ed6a0.96d35f61.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2133],{28453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>o});var i=t(96540);const r={},a=i.createContext(r);function s(e){const n=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),i.createElement(a.Provider,{value:n},e.children)}},93395:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/c763f2fb.7446e9d6.js b/assets/js/c763f2fb.7446e9d6.js
new file mode 100644
index 000000000..c2499037a
--- /dev/null
+++ b/assets/js/c763f2fb.7446e9d6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7256],{28453:(e,s,r)=>{r.d(s,{R:()=>d,x:()=>c});var n=r(96540);const t={},i=n.createContext(t);function d(e){const s=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),n.createElement(i.Provider,{value:s},e.children)}},82055:(e,s,r)=>{r.r(s),r.d(s,{as [...]
\ No newline at end of file
diff --git a/assets/js/c7e5ee20.8fbf22b5.js b/assets/js/c7e5ee20.8fbf22b5.js
new file mode 100644
index 000000000..739eca105
--- /dev/null
+++ b/assets/js/c7e5ee20.8fbf22b5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7811],{28453:(e,n,r)=>{r.d(n,{R:()=>l,x:()=>t});var a=r(96540);const i={},s=a.createContext(i);function l(e){const n=a.useContext(s);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:l(e.components),a.createElement(s.Provider,{value:n},e.children)}},64990:(e,n,r)=>{r.r(n),r.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/c890276d.a99c6a65.js b/assets/js/c890276d.a99c6a65.js
new file mode 100644
index 000000000..5c79fdd17
--- /dev/null
+++ b/assets/js/c890276d.a99c6a65.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5366],{28453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>o});var r=t(96540);const s={},i=r.createContext(s);function a(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(i.Provider,{value:n},e.children)}},67514:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/c93d7cfe.b40d3a74.js b/assets/js/c93d7cfe.b40d3a74.js
new file mode 100644
index 000000000..fadfde979
--- /dev/null
+++ b/assets/js/c93d7cfe.b40d3a74.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5471],{8473:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>a,toc:()=>l});const a=JSON.parse('{"id":"comparisons/druid-vs-redshift","title":"Apache Druid vs Redshift","description":"\x3c!--","source":"@site/docs/37.0.0/comparisons/druid-vs-redshift.md","sourceDirName":"comparisons","slug":"/comparisons/druid-vs-redshift","permalink":"/docs/37.0.0/comparisons/druid-vs-redshif [...]
\ No newline at end of file
diff --git a/assets/js/ca456f99.26a6efbd.js b/assets/js/ca456f99.26a6efbd.js
new file mode 100644
index 000000000..0d31afeff
--- /dev/null
+++ b/assets/js/ca456f99.26a6efbd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1912],{28453:(e,t,s)=>{s.d(t,{R:()=>r,x:()=>i});var n=s(96540);const o={},a=n.createContext(o);function r(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),n.createElement(a.Provider,{value:t},e.children)}},79725:(e,t,s)=>{s.r(t),s.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/cad50069.3be5a480.js b/assets/js/cad50069.3be5a480.js
new file mode 100644
index 000000000..cd396e8b3
--- /dev/null
+++ b/assets/js/cad50069.3be5a480.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6481],{28453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>l});var r=t(96540);const s={},i=r.createContext(s);function a(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(i.Provider,{value:n},e.children)}},88486:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/cb88f4a3.3e4b88b2.js b/assets/js/cb88f4a3.3e4b88b2.js
new file mode 100644
index 000000000..5d3f9c7a8
--- /dev/null
+++ b/assets/js/cb88f4a3.3e4b88b2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5818],{28453:(e,r,s)=>{s.d(r,{R:()=>i,x:()=>n});var o=s(96540);const d={},t=o.createContext(d);function i(e){const r=o.useContext(t);return o.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function n(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:i(e.components),o.createElement(t.Provider,{value:r},e.children)}},83801:(e,r,s)=>{s.r(r),s.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/cc0994d3.ae586357.js b/assets/js/cc0994d3.ae586357.js
new file mode 100644
index 000000000..8f95288d3
--- /dev/null
+++ b/assets/js/cc0994d3.ae586357.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1128],{734:(e,n,t)=>{t.d(n,{A:()=>r});const r=t.p+"assets/images/set-query-context-open-context-dialog-22d66db94d56acfb90083883c3c131e9.png"},9874:(e,n,t)=>{t.d(n,{A:()=>r});const r=t.p+"assets/images/set-query-context-set-context-parameters-ccf3f79f17d340885cdc1ac2abcce475.png"},28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>c});var r=t(96540);const i={},s=r.createContext(i);function o(e){const n=r.useContext(s);return r.useMemo((funct [...]
\ No newline at end of file
diff --git a/assets/js/cc736390.ddcfeb2b.js b/assets/js/cc736390.ddcfeb2b.js
new file mode 100644
index 000000000..4e26164af
--- /dev/null
+++ b/assets/js/cc736390.ddcfeb2b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5237],{28453:(e,r,n)=>{n.d(r,{R:()=>i,x:()=>l});var t=n(96540);const s={},o=t.createContext(s);function i(e){const r=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function l(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),t.createElement(o.Provider,{value:r},e.children)}},63055:(e,r,n)=>{n.r(r),n.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/cc7db43b.6e025c12.js b/assets/js/cc7db43b.6e025c12.js
new file mode 100644
index 000000000..ac2542e43
--- /dev/null
+++ b/assets/js/cc7db43b.6e025c12.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6253],{28453:(e,n,r)=>{r.d(n,{R:()=>t,x:()=>a});var i=r(96540);const o={},s=i.createContext(o);function t(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:t(e.components),i.createElement(s.Provider,{value:n},e.children)}},79131:(e,n,r)=>{r.r(n),r.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/cd22c7ca.4b72da35.js b/assets/js/cd22c7ca.4b72da35.js
new file mode 100644
index 000000000..1aef7fc11
--- /dev/null
+++ b/assets/js/cd22c7ca.4b72da35.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3216],{9533:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/tutorial-batch-submit-task-02-15a3dea57d3cb78f671e65fc6277fdf5.png"},28326:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/tutorial-batch-submit-task-01-fbbf03666cc6ca1078988febc09b8e5e.png"},28453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>d});var i=n(96540);const a={},s=i.createContext(a);function o(e){const t=i.useContext(s);return i.useMemo((function(){return"func [...]
\ No newline at end of file
diff --git a/assets/js/cd9e4e04.639fbc51.js b/assets/js/cd9e4e04.639fbc51.js
new file mode 100644
index 000000000..a6f8dbe5f
--- /dev/null
+++ b/assets/js/cd9e4e04.639fbc51.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4297],{28453:(e,o,t)=>{t.d(o,{R:()=>r,x:()=>d});var n=t(96540);const s={},i=n.createContext(s);function r(e){const o=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function d(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),n.createElement(i.Provider,{value:o},e.children)}},56712:(e,o,t)=>{t.r(o),t.d(o,{as [...]
\ No newline at end of file
diff --git a/assets/js/cdec71b5.adf6c1d0.js b/assets/js/cdec71b5.adf6c1d0.js
new file mode 100644
index 000000000..17374752b
--- /dev/null
+++ b/assets/js/cdec71b5.adf6c1d0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[149],{9376:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>u});const i=JSON.parse('{"id":"api-reference/supervisor-api","title":"Supervisor API","description":"\x3c!--","source":"@site/docs/latest/api-reference/supervisor-api.md","sourceDirName":"api-reference","slug":"/api-reference/supervisor-api","permalink":"/docs/latest/api-reference/supervisor-api","draft":fa [...]
\ No newline at end of file
diff --git a/assets/js/cdf1e8c6.740dc6c5.js b/assets/js/cdf1e8c6.740dc6c5.js
new file mode 100644
index 000000000..cb196c0cd
--- /dev/null
+++ b/assets/js/cdf1e8c6.740dc6c5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8021],{28453:(e,r,n)=>{n.d(r,{R:()=>l,x:()=>t});var a=n(96540);const s={},i=a.createContext(s);function l(e){const r=a.useContext(i);return a.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function t(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),a.createElement(i.Provider,{value:r},e.children)}},84172:(e,r,n)=>{n.r(r),n.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/ce4dff4d.f5ccd0c7.js b/assets/js/ce4dff4d.f5ccd0c7.js
new file mode 100644
index 000000000..d29e4013a
--- /dev/null
+++ b/assets/js/ce4dff4d.f5ccd0c7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6455],{28453:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>o});var s=t(96540);const r={},a=s.createContext(r);function i(e){const n=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),s.createElement(a.Provider,{value:n},e.children)}},97495:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/cef2afce.ae089fba.js b/assets/js/cef2afce.ae089fba.js
new file mode 100644
index 000000000..0407f885f
--- /dev/null
+++ b/assets/js/cef2afce.ae089fba.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9254],{27931:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"development/extensions-contrib/thrift","title":"Thrift","description":"\x3c!--","source":"@site/docs/latest/development/extensions-contrib/thrift.md","sourceDirName":"development/extensions-contrib","slug":"/development/extensions-contrib/thrift","permalink":"/docs/latest/de [...]
\ No newline at end of file
diff --git a/assets/js/cfa30cd1.9b903ec6.js b/assets/js/cfa30cd1.9b903ec6.js
new file mode 100644
index 000000000..ef7f7a008
--- /dev/null
+++ b/assets/js/cfa30cd1.9b903ec6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6626],{28453:(e,t,s)=>{s.d(t,{R:()=>i,x:()=>d});var o=s(96540);const n={},r=o.createContext(n);function i(e){const t=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:i(e.components),o.createElement(r.Provider,{value:t},e.children)}},29973:(e,t,s)=>{s.r(t),s.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/d20373b9.621acd06.js b/assets/js/d20373b9.621acd06.js
new file mode 100644
index 000000000..3b212ba3e
--- /dev/null
+++ b/assets/js/d20373b9.621acd06.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5919],{22908:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"development/overview","title":"Developing on Apache Druid","description":"\x3c!--","source":"@site/docs/37.0.0/development/overview.md","sourceDirName":"development","slug":"/development/overview","permalink":"/docs/37.0.0/development/overview","draft":false,"unlisted":false [...]
\ No newline at end of file
diff --git a/assets/js/d2b98a3d.9ad237fd.js b/assets/js/d2b98a3d.9ad237fd.js
new file mode 100644
index 000000000..1c07a2cfe
--- /dev/null
+++ b/assets/js/d2b98a3d.9ad237fd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8826],{28453:(e,t,o)=>{o.d(t,{R:()=>a,x:()=>i});var r=o(96540);const s={},n=r.createContext(s);function a(e){const t=r.useContext(n);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(n.Provider,{value:t},e.children)}},96804:(e,t,o)=>{o.r(t),o.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/d2d48976.109b7181.js b/assets/js/d2d48976.109b7181.js
new file mode 100644
index 000000000..fb79870c8
--- /dev/null
+++ b/assets/js/d2d48976.109b7181.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9987],{28453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>a});var s=t(96540);const i={},o=s.createContext(i);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:n},e.children)}},93583:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/d410aa55.0cc2abe8.js b/assets/js/d410aa55.0cc2abe8.js
new file mode 100644
index 000000000..68dc967b8
--- /dev/null
+++ b/assets/js/d410aa55.0cc2abe8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3160],{22871:(e,s,i)=>{i.r(s),i.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>m,frontMatter:()=>o,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"ingestion/schema-model","title":"Druid schema model","description":"Introduces concepts of datasources, primary timestamp, dimensions, and metrics.","source":"@site/docs/37.0.0/ingestion/schema-model.md","sourceDirName":"ingestion","slug":"/ingestion/schema-model","permalink [...]
\ No newline at end of file
diff --git a/assets/js/d5af854b.34502dfb.js b/assets/js/d5af854b.34502dfb.js
new file mode 100644
index 000000000..71698b6b2
--- /dev/null
+++ b/assets/js/d5af854b.34502dfb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[828],{19569:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>l,contentTitle:()=>a,default:()=>c,frontMatter:()=>o,metadata:()=>i,toc:()=>u});const i=JSON.parse('{"id":"querying/tips-good-queries","title":"Tips for writing good queries in Druid","description":"\x3c!--","source":"@site/docs/37.0.0/querying/tips-good-queries.md","sourceDirName":"querying","slug":"/querying/tips-good-queries","permalink":"/docs/37.0.0/querying/tips-good-queries [...]
\ No newline at end of file
diff --git a/assets/js/d6226c05.4167a7bc.js b/assets/js/d6226c05.4167a7bc.js
new file mode 100644
index 000000000..9ad7ab70c
--- /dev/null
+++ b/assets/js/d6226c05.4167a7bc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6645],{8920:(e,t,a)=>{a.d(t,{A:()=>s});const s=a.p+"assets/images/tutorial-batch-data-loader-01-6c69bcaeea1649df6343a9b9a9f25780.png"},12869:(e,t,a)=>{a.d(t,{A:()=>s});const s=a.p+"assets/images/tutorial-batch-data-loader-04-fa86ea0f7b9e1790fb2d0db1a05093a8.png"},14383:(e,t,a)=>{a.d(t,{A:()=>s});const s=a.p+"assets/images/tutorial-batch-data-loader-11-e176f4b04d11f4cd667780fef55aceaf.png"},28202:(e,t,a)=>{a.d(t,{A:()=>s});cons [...]
\ No newline at end of file
diff --git a/assets/js/d6b728a0.aaad613d.js b/assets/js/d6b728a0.aaad613d.js
new file mode 100644
index 000000000..b54ee1967
--- /dev/null
+++ b/assets/js/d6b728a0.aaad613d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2441],{28453:(e,r,n)=>{n.d(r,{R:()=>d,x:()=>t});var s=n(96540);const i={},o=s.createContext(i);function d(e){const r=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function t(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),s.createElement(o.Provider,{value:r},e.children)}},46761:(e,r,n)=>{n.r(r),n.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/d721507d.adcb6596.js b/assets/js/d721507d.adcb6596.js
new file mode 100644
index 000000000..81a3e1b5b
--- /dev/null
+++ b/assets/js/d721507d.adcb6596.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1205],{28453:(n,e,t)=>{t.d(e,{R:()=>i,x:()=>a});var d=t(96540);const s={},l=d.createContext(s);function i(n){const e=d.useContext(l);return d.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function a(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(s):n.components||s:i(n.components),d.createElement(l.Provider,{value:e},n.children)}},69713:(n,e,t)=>{t.r(e),t.d(e,{as [...]
\ No newline at end of file
diff --git a/assets/js/d98a46b3.c5674876.js b/assets/js/d98a46b3.c5674876.js
new file mode 100644
index 000000000..65053480d
--- /dev/null
+++ b/assets/js/d98a46b3.c5674876.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8320],{2892:(e,t,n)=>{n.d(t,{A:()=>a});const a=n.p+"assets/images/tutorial-compaction-02-3e62bb856c0c0cf0b318520c7d071bb5.png"},11482:(e,t,n)=>{n.d(t,{A:()=>a});const a=n.p+"assets/images/tutorial-compaction-04-36f7ed804ee7538d35d6fe31da6fbfae.png"},24662:(e,t,n)=>{n.d(t,{A:()=>a});const a=n.p+"assets/images/tutorial-compaction-08-c185270edb96314c1d83efeb308b4bf3.png"},28453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>r});var a=n(96540);co [...]
\ No newline at end of file
diff --git a/assets/js/dad4c253.3757f095.js b/assets/js/dad4c253.3757f095.js
new file mode 100644
index 000000000..ac9b33980
--- /dev/null
+++ b/assets/js/dad4c253.3757f095.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2509],{28453:(e,t,n)=>{n.d(t,{R:()=>c,x:()=>a});var o=n(96540);const s={},r=o.createContext(s);function c(e){const t=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),o.createElement(r.Provider,{value:t},e.children)}},52893:(e,t,n)=>{n.r(t),n.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/dae50bee.f9733df4.js b/assets/js/dae50bee.f9733df4.js
new file mode 100644
index 000000000..42e58ffa0
--- /dev/null
+++ b/assets/js/dae50bee.f9733df4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[536],{28453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>r});var i=n(96540);const o={},s=i.createContext(o);function a(e){const t=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),i.createElement(s.Provider,{value:t},e.children)}},79472:(e,t,n)=>{n.r(t),n.d(t,{ass [...]
\ No newline at end of file
diff --git a/assets/js/db618302.ea238fb8.js b/assets/js/db618302.ea238fb8.js
new file mode 100644
index 000000000..15346592d
--- /dev/null
+++ b/assets/js/db618302.ea238fb8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4039],{23485:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"development/extensions-core/examples","title":"Extension Examples","description":"\x3c!--","source":"@site/docs/37.0.0/development/extensions-core/examples.md","sourceDirName":"development/extensions-core","slug":"/development/extensions-core/examples","permalink":"/docs/37. [...]
\ No newline at end of file
diff --git a/assets/js/dc86ecba.b1a1417e.js b/assets/js/dc86ecba.b1a1417e.js
new file mode 100644
index 000000000..cad8d0d47
--- /dev/null
+++ b/assets/js/dc86ecba.b1a1417e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[865],{12946:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/tutorial-quickstart-04-10eea489c28fe821798a99cd69f18ea6.png"},20138:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/tutorial-quickstart-03-ca6142482a661095586235c8a9327067.png"},28453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>o});var i=n(96540);const r={},s=i.createContext(r);function a(e){const t=i.useContext(s);return i.useMemo((function(){return"function"==typeof [...]
\ No newline at end of file
diff --git a/assets/js/dcd89e6c.bbfbaf7b.js b/assets/js/dcd89e6c.bbfbaf7b.js
new file mode 100644
index 000000000..26eda9cb3
--- /dev/null
+++ b/assets/js/dcd89e6c.bbfbaf7b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6339],{3097:(e,r,i)=>{i.d(r,{A:()=>n});const n=i.p+"assets/images/native-queries-01-9fe30809e74a2183b369dbe491f2d998.png"},28453:(e,r,i)=>{i.d(r,{R:()=>o,x:()=>a});var n=i(96540);const s={},t=n.createContext(s);function o(e){const r=n.useContext(t);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function a(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(s) [...]
\ No newline at end of file
diff --git a/assets/js/dd334811.93bb235d.js b/assets/js/dd334811.93bb235d.js
new file mode 100644
index 000000000..b8183cf50
--- /dev/null
+++ b/assets/js/dd334811.93bb235d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1531],{28453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>r});var o=s(96540);const i={},l=o.createContext(i);function t(e){const n=o.useContext(l);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),o.createElement(l.Provider,{value:n},e.children)}},33765:(e,n,s)=>{s.r(n),s.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/dddb2ffb.b5d41257.js b/assets/js/dddb2ffb.b5d41257.js
new file mode 100644
index 000000000..0c538ca64
--- /dev/null
+++ b/assets/js/dddb2ffb.b5d41257.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1505],{28453:(e,n,i)=>{i.d(n,{R:()=>t,x:()=>d});var r=i(96540);const s={},a=r.createContext(s);function t(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),r.createElement(a.Provider,{value:n},e.children)}},58612:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/debb6838.6827b14d.js b/assets/js/debb6838.6827b14d.js
new file mode 100644
index 000000000..9c96ec5a8
--- /dev/null
+++ b/assets/js/debb6838.6827b14d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5793],{28453:(e,t,i)=>{i.d(t,{R:()=>a,x:()=>o});var s=i(96540);const r={},n=s.createContext(r);function a(e){const t=s.useContext(n);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),s.createElement(n.Provider,{value:t},e.children)}},39867:(e,t,i)=>{i.d(t,{A:()=>s}) [...]
\ No newline at end of file
diff --git a/assets/js/df1b20ff.c978d0ef.js b/assets/js/df1b20ff.c978d0ef.js
new file mode 100644
index 000000000..0249adb8d
--- /dev/null
+++ b/assets/js/df1b20ff.c978d0ef.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4178],{28453:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>c});var r=s(96540);const t={},i=r.createContext(t);function o(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),r.createElement(i.Provider,{value:n},e.children)}},37641:(e,n,s)=>{s.r(n),s.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/df3f8995.a50d1bb5.js b/assets/js/df3f8995.a50d1bb5.js
new file mode 100644
index 000000000..d4ead9813
--- /dev/null
+++ b/assets/js/df3f8995.a50d1bb5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2909],{28453:(n,e,t)=>{t.d(e,{R:()=>s,x:()=>a});var r=t(96540);const i={},o=r.createContext(i);function s(n){const e=r.useContext(o);return r.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function a(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(i):n.components||i:s(n.components),r.createElement(o.Provider,{value:e},n.children)}},45689:(n,e,t)=>{t.r(e),t.d(e,{as [...]
\ No newline at end of file
diff --git a/assets/js/dfd00f41.56cd7a05.js b/assets/js/dfd00f41.56cd7a05.js
new file mode 100644
index 000000000..ee26d08d6
--- /dev/null
+++ b/assets/js/dfd00f41.56cd7a05.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1226],{28453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>l});var t=s(96540);const i={},r=t.createContext(i);function d(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),t.createElement(r.Provider,{value:n},e.children)}},56130:(e,n,s)=>{s.r(n),s.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/e04068f8.c64910fc.js b/assets/js/e04068f8.c64910fc.js
new file mode 100644
index 000000000..a3331c5dd
--- /dev/null
+++ b/assets/js/e04068f8.c64910fc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[908],{18797:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>u,default:()=>h,frontMatter:()=>c,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"querying/projections","title":"Query projections","description":"Speed up your queries by defining projections that pre-aggreate data for you.","source":"@site/docs/latest/querying/projections.md","sourceDirName":"querying","slug":"/querying/projections","permalink":"/docs/la [...]
\ No newline at end of file
diff --git a/assets/js/e0eb764b.39e60d2b.js b/assets/js/e0eb764b.39e60d2b.js
new file mode 100644
index 000000000..c878174ed
--- /dev/null
+++ b/assets/js/e0eb764b.39e60d2b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3072],{27875:(e,r,i)=>{i.r(r),i.d(r,{assets:()=>a,contentTitle:()=>u,default:()=>c,frontMatter:()=>s,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"release-info/migr-subquery-limit","title":"Migration guide: Subquery limit","description":"\x3c!--","source":"@site/docs/37.0.0/release-info/migr-subquery-limit.md","sourceDirName":"release-info","slug":"/release-info/migr-subquery-limit","permalink":"/docs/37.0.0/release-in [...]
\ No newline at end of file
diff --git a/assets/js/e13ba3bd.78fd15ff.js b/assets/js/e13ba3bd.78fd15ff.js
new file mode 100644
index 000000000..42487c0dd
--- /dev/null
+++ b/assets/js/e13ba3bd.78fd15ff.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1780],{28453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>l});var t=i(96540);const r={},s=t.createContext(r);function o(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),t.createElement(s.Provider,{value:n},e.children)}},37243:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/e1bd8ca2.e9d91d9e.js b/assets/js/e1bd8ca2.e9d91d9e.js
new file mode 100644
index 000000000..9d3a8d4ae
--- /dev/null
+++ b/assets/js/e1bd8ca2.e9d91d9e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5165],{28453:(e,t,r)=>{r.d(t,{R:()=>d,x:()=>c});var i=r(96540);const s={},n=i.createContext(s);function d(e){const t=i.useContext(n);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:d(e.components),i.createElement(n.Provider,{value:t},e.children)}},92724:(e,t,r)=>{r.r(t),r.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/e1d3921d.182a5a93.js b/assets/js/e1d3921d.182a5a93.js
new file mode 100644
index 000000000..323be3fd3
--- /dev/null
+++ b/assets/js/e1d3921d.182a5a93.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1756],{28453:(e,r,t)=>{t.d(r,{R:()=>o,x:()=>d});var n=t(96540);const s={},i=n.createContext(s);function o(e){const r=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function d(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),n.createElement(i.Provider,{value:r},e.children)}},87835:(e,r,t)=>{t.r(r),t.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/e25b1e4b.18ecd58b.js b/assets/js/e25b1e4b.18ecd58b.js
new file mode 100644
index 000000000..0f3a304f8
--- /dev/null
+++ b/assets/js/e25b1e4b.18ecd58b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1867],{13091:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>c,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"design/broker","title":"Broker service","description":"\x3c!--","source":"@site/docs/37.0.0/design/broker.md","sourceDirName":"design","slug":"/design/broker","permalink":"/docs/37.0.0/design/broker","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter": [...]
\ No newline at end of file
diff --git a/assets/js/e3609e88.cf7282b0.js b/assets/js/e3609e88.cf7282b0.js
new file mode 100644
index 000000000..b581a2c4b
--- /dev/null
+++ b/assets/js/e3609e88.cf7282b0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5167],{28453:(e,n,i)=>{i.d(n,{R:()=>d,x:()=>o});var s=i(96540);const t={},r=s.createContext(t);function d(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),s.createElement(r.Provider,{value:n},e.children)}},53541:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/e3f5c95b.feaec2ac.js b/assets/js/e3f5c95b.feaec2ac.js
new file mode 100644
index 000000000..fa8c66d81
--- /dev/null
+++ b/assets/js/e3f5c95b.feaec2ac.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2637],{14585:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>j,frontMatter:()=>l,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"querying/datasource","title":"Datasources","description":"\x3c!--","source":"@site/docs/37.0.0/querying/datasource.md","sourceDirName":"querying","slug":"/querying/datasource","permalink":"/docs/37.0.0/querying/datasource","draft":false,"unlisted":false,"tags":[],"version":" [...]
\ No newline at end of file
diff --git a/assets/js/e50229e6.b46ff0b9.js b/assets/js/e50229e6.b46ff0b9.js
new file mode 100644
index 000000000..d994963e6
--- /dev/null
+++ b/assets/js/e50229e6.b46ff0b9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6837],{28183:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>o,frontMatter:()=>a,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"querying/searchquery","title":"Search queries","description":"\x3c!--","source":"@site/docs/37.0.0/querying/searchquery.md","sourceDirName":"querying","slug":"/querying/searchquery","permalink":"/docs/37.0.0/querying/searchquery","draft":false,"unlisted":false,"tags":[],"ver [...]
\ No newline at end of file
diff --git a/assets/js/e55f3a2e.2f1923f6.js b/assets/js/e55f3a2e.2f1923f6.js
new file mode 100644
index 000000000..7904001e0
--- /dev/null
+++ b/assets/js/e55f3a2e.2f1923f6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[331],{28453:(e,n,a)=>{a.d(n,{R:()=>s,x:()=>o});var r=a(96540);const i={},t=r.createContext(i);function s(e){const n=r.useContext(t);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),r.createElement(t.Provider,{value:n},e.children)}},92920:(e,n,a)=>{a.r(n),a.d(n,{ass [...]
\ No newline at end of file
diff --git a/assets/js/e577ad77.1e0e6745.js b/assets/js/e577ad77.1e0e6745.js
new file mode 100644
index 000000000..cf20f0302
--- /dev/null
+++ b/assets/js/e577ad77.1e0e6745.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2642],{28453:(e,s,t)=>{t.d(s,{R:()=>o,x:()=>d});var i=t(96540);const n={},r=i.createContext(n);function o(e){const s=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function d(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:o(e.components),i.createElement(r.Provider,{value:s},e.children)}},30442:(e,s,t)=>{t.d(s,{A:()=>i}) [...]
\ No newline at end of file
diff --git a/assets/js/e5a64ab7.2e5781ef.js b/assets/js/e5a64ab7.2e5781ef.js
new file mode 100644
index 000000000..05d860331
--- /dev/null
+++ b/assets/js/e5a64ab7.2e5781ef.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8596],{28453:(t,e,r)=>{r.d(e,{R:()=>s,x:()=>a});var o=r(96540);const n={},i=o.createContext(n);function s(t){const e=o.useContext(i);return o.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(n):t.components||n:s(t.components),o.createElement(i.Provider,{value:e},t.children)}},35363:(t,e,r)=>{r.d(e,{A:()=>i}) [...]
\ No newline at end of file
diff --git a/assets/js/e646a038.e67fc292.js b/assets/js/e646a038.e67fc292.js
new file mode 100644
index 000000000..eedaccc1f
--- /dev/null
+++ b/assets/js/e646a038.e67fc292.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3850],{10285:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>d,metadata:()=>s,toc:()=>o});const s=JSON.parse('{"id":"data-management/cascading-reindexing","title":"Cascading reindexing","description":"\x3c!--","source":"@site/docs/37.0.0/data-management/cascading-reindexing.md","sourceDirName":"data-management","slug":"/data-management/cascading-reindexing","permalink":"/docs/37.0.0/data-m [...]
\ No newline at end of file
diff --git a/assets/js/e73135aa.c3f4f907.js b/assets/js/e73135aa.c3f4f907.js
new file mode 100644
index 000000000..1d1a3f6b1
--- /dev/null
+++ b/assets/js/e73135aa.c3f4f907.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5833],{28453:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>a});var i=s(96540);const r={},t=i.createContext(r);function o(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),i.createElement(t.Provider,{value:n},e.children)}},29954:(e,n,s)=>{s.r(n),s.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/e7de36fa.f451757a.js b/assets/js/e7de36fa.f451757a.js
new file mode 100644
index 000000000..9fcbc580a
--- /dev/null
+++ b/assets/js/e7de36fa.f451757a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7674],{28453:(e,s,n)=>{n.d(s,{R:()=>d,x:()=>o});var i=n(96540);const r={},t=i.createContext(r);function d(e){const s=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(t.Provider,{value:s},e.children)}},48496:(e,s,n)=>{n.r(s),n.d(s,{as [...]
\ No newline at end of file
diff --git a/assets/js/e827bd0f.b45f8ff8.js b/assets/js/e827bd0f.b45f8ff8.js
new file mode 100644
index 000000000..925fed24e
--- /dev/null
+++ b/assets/js/e827bd0f.b45f8ff8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3545],{16086:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>p,frontMatter:()=>l,metadata:()=>s,toc:()=>u});const s=JSON.parse('{"id":"api-reference/sql-api","title":"Druid SQL API","description":"\x3c!--","source":"@site/docs/37.0.0/api-reference/sql-api.md","sourceDirName":"api-reference","slug":"/api-reference/sql-api","permalink":"/docs/37.0.0/api-reference/sql-api","draft":false,"unlisted":false,"tags" [...]
\ No newline at end of file
diff --git a/assets/js/e83ca267.3dc5394d.js b/assets/js/e83ca267.3dc5394d.js
new file mode 100644
index 000000000..749b1986b
--- /dev/null
+++ b/assets/js/e83ca267.3dc5394d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6974],{28453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>o});var s=n(96540);const a={},r=s.createContext(a);function i(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),s.createElement(r.Provider,{value:t},e.children)}},35030:(e,t,n)=>{n.r(t),n.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/e97eb9e3.46851d87.js b/assets/js/e97eb9e3.46851d87.js
new file mode 100644
index 000000000..eedbf08a5
--- /dev/null
+++ b/assets/js/e97eb9e3.46851d87.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[370],{9096:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/tutorial-deletion-01-891729c30511abdcc26da807fd50122f.png"},28453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>d});var s=n(96540);const a={},i=s.createContext(a);function l(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components( [...]
\ No newline at end of file
diff --git a/assets/js/e983486d.50fa2228.js b/assets/js/e983486d.50fa2228.js
new file mode 100644
index 000000000..c9fae145e
--- /dev/null
+++ b/assets/js/e983486d.50fa2228.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9256],{24113:(e,s,d)=>{d.r(s),d.d(s,{assets:()=>l,contentTitle:()=>c,default:()=>a,frontMatter:()=>n,metadata:()=>r,toc:()=>o});const r=JSON.parse('{"id":"operations/metrics","title":"Metrics","description":"\x3c!--","source":"@site/docs/37.0.0/operations/metrics.md","sourceDirName":"operations","slug":"/operations/metrics","permalink":"/docs/37.0.0/operations/metrics","draft":false,"unlisted":false,"tags":[],"version":"curren [...]
\ No newline at end of file
diff --git a/assets/js/e988a960.91f06266.js b/assets/js/e988a960.91f06266.js
new file mode 100644
index 000000000..14b362ae9
--- /dev/null
+++ b/assets/js/e988a960.91f06266.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1369],{28453:(e,n,r)=>{r.d(n,{R:()=>o,x:()=>i});var s=r(96540);const t={},a=s.createContext(t);function o(e){const n=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),s.createElement(a.Provider,{value:n},e.children)}},65537:(e,n,r)=>{r.d(n,{A:()=>N}) [...]
\ No newline at end of file
diff --git a/assets/js/eaf401e3.274b156b.js b/assets/js/eaf401e3.274b156b.js
new file mode 100644
index 000000000..1e426ed0d
--- /dev/null
+++ b/assets/js/eaf401e3.274b156b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6106],{18713:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"multi-stage-query/known-issues","title":"SQL-based ingestion known issues","description":"\x3c!--","source":"@site/docs/37.0.0/multi-stage-query/known-issues.md","sourceDirName":"multi-stage-query","slug":"/multi-stage-query/known-issues","permalink":"/docs/37.0.0/multi-stag [...]
\ No newline at end of file
diff --git a/assets/js/eb55dcd0.d02f3933.js b/assets/js/eb55dcd0.d02f3933.js
new file mode 100644
index 000000000..fe0fa55ee
--- /dev/null
+++ b/assets/js/eb55dcd0.d02f3933.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6383],{28453:(e,t,n)=>{n.d(t,{R:()=>c,x:()=>i});var r=n(96540);const s={},o=r.createContext(s);function c(e){const t=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),r.createElement(o.Provider,{value:t},e.children)}},34299:(e,t,n)=>{n.r(t),n.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/ebb39d90.844075cb.js b/assets/js/ebb39d90.844075cb.js
new file mode 100644
index 000000000..19f7ea7fa
--- /dev/null
+++ b/assets/js/ebb39d90.844075cb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5099],{28453:(e,r,s)=>{s.d(r,{R:()=>d,x:()=>o});var n=s(96540);const i={},t=n.createContext(i);function d(e){const r=n.useContext(t);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function o(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),n.createElement(t.Provider,{value:r},e.children)}},89880:(e,r,s)=>{s.r(r),s.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/ebc99227.3d9a6a56.js b/assets/js/ebc99227.3d9a6a56.js
new file mode 100644
index 000000000..3f053b89d
--- /dev/null
+++ b/assets/js/ebc99227.3d9a6a56.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9414],{28453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>a});var s=n(96540);const o={},r=s.createContext(o);function i(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:t},e.children)}},46216:(e,t,n)=>{n.r(t),n.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/ee2912af.cb2ba2e2.js b/assets/js/ee2912af.cb2ba2e2.js
new file mode 100644
index 000000000..4d2352743
--- /dev/null
+++ b/assets/js/ee2912af.cb2ba2e2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[222],{28453:(e,n,r)=>{r.d(n,{R:()=>a,x:()=>i});var l=r(96540);const s={},t=l.createContext(s);function a(e){const n=l.useContext(t);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),l.createElement(t.Provider,{value:n},e.children)}},46704:(e,n,r)=>{r.r(n),r.d(n,{ass [...]
\ No newline at end of file
diff --git a/assets/js/ee607251.b35551b5.js b/assets/js/ee607251.b35551b5.js
new file mode 100644
index 000000000..df8a249af
--- /dev/null
+++ b/assets/js/ee607251.b35551b5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8302],{28453:(e,n,i)=>{i.d(n,{R:()=>r,x:()=>a});var s=i(96540);const t={},o=s.createContext(t);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),s.createElement(o.Provider,{value:n},e.children)}},59697:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/f04833a0.9a6ac7ea.js b/assets/js/f04833a0.9a6ac7ea.js
new file mode 100644
index 000000000..0de90bc1a
--- /dev/null
+++ b/assets/js/f04833a0.9a6ac7ea.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6556],{28453:(e,r,o)=>{o.d(r,{R:()=>a,x:()=>d});var i=o(96540);const n={},t=i.createContext(n);function a(e){const r=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function d(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),i.createElement(t.Provider,{value:r},e.children)}},95548:(e,r,o)=>{o.r(r),o.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/f07c3477.c58e8397.js b/assets/js/f07c3477.c58e8397.js
new file mode 100644
index 000000000..19319c076
--- /dev/null
+++ b/assets/js/f07c3477.c58e8397.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9e3],{28453:(e,t,n)=>{n.d(t,{R:()=>d,x:()=>a});var s=n(96540);const i={},r=s.createContext(i);function d(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),s.createElement(r.Provider,{value:t},e.children)}},50683:(e,t,n)=>{n.r(t),n.d(t,{ass [...]
\ No newline at end of file
diff --git a/assets/js/f0a1c229.51cc15e2.js b/assets/js/f0a1c229.51cc15e2.js
new file mode 100644
index 000000000..7d65e6b85
--- /dev/null
+++ b/assets/js/f0a1c229.51cc15e2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4783],{28453:(e,t,r)=>{r.d(t,{R:()=>a,x:()=>i});var s=r(96540);const n={},o=s.createContext(n);function a(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),s.createElement(o.Provider,{value:t},e.children)}},29459:(e,t,r)=>{r.d(t,{A:()=>s}) [...]
\ No newline at end of file
diff --git a/assets/js/f100b489.03bb5723.js b/assets/js/f100b489.03bb5723.js
new file mode 100644
index 000000000..020a9826f
--- /dev/null
+++ b/assets/js/f100b489.03bb5723.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6243],{28453:(e,n,o)=>{o.d(n,{R:()=>t,x:()=>a});var i=o(96540);const s={},r=i.createContext(s);function t(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),i.createElement(r.Provider,{value:n},e.children)}},97677:(e,n,o)=>{o.r(n),o.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/f17034af.f2eb5db9.js b/assets/js/f17034af.f2eb5db9.js
new file mode 100644
index 000000000..bd8c235e2
--- /dev/null
+++ b/assets/js/f17034af.f2eb5db9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1013],{17679:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>c,default:()=>l,frontMatter:()=>r,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"development/extensions-contrib/gce-extensions","title":"GCE Extensions","description":"\x3c!--","source":"@site/docs/37.0.0/development/extensions-contrib/gce-extensions.md","sourceDirName":"development/extensions-contrib","slug":"/development/extensions-contrib/gce-extensio [...]
\ No newline at end of file
diff --git a/assets/js/f18e659a.d2c90da6.js b/assets/js/f18e659a.d2c90da6.js
new file mode 100644
index 000000000..c2fbef45a
--- /dev/null
+++ b/assets/js/f18e659a.d2c90da6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1816],{15770:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"tutorials/tutorial-ingestion-spec","title":"Write an ingestion spec","description":"\x3c!--","source":"@site/docs/37.0.0/tutorials/tutorial-ingestion-spec.md","sourceDirName":"tutorials","slug":"/tutorials/tutorial-ingestion-spec","permalink":"/docs/37.0.0/tutorials/tutorial [...]
\ No newline at end of file
diff --git a/assets/js/f2fac021.234758ed.js b/assets/js/f2fac021.234758ed.js
new file mode 100644
index 000000000..7a7f4d5f8
--- /dev/null
+++ b/assets/js/f2fac021.234758ed.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5806],{28453:(e,s,r)=>{r.d(s,{R:()=>i,x:()=>d});var n=r(96540);const l={},a=n.createContext(l);function i(e){const s=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function d(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:i(e.components),n.createElement(a.Provider,{value:s},e.children)}},65537:(e,s,r)=>{r.d(s,{A:()=>S}) [...]
\ No newline at end of file
diff --git a/assets/js/f33a5121.7d621224.js b/assets/js/f33a5121.7d621224.js
new file mode 100644
index 000000000..fcb68a714
--- /dev/null
+++ b/assets/js/f33a5121.7d621224.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9523],{25990:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>a,toc:()=>l});const a=JSON.parse('{"id":"comparisons/druid-vs-key-value","title":"Apache Druid vs. Key/Value Stores (HBase/Cassandra/OpenTSDB)","description":"\x3c!--","source":"@site/docs/37.0.0/comparisons/druid-vs-key-value.md","sourceDirName":"comparisons","slug":"/comparisons/druid-vs-key-value","permalink":"/ [...]
\ No newline at end of file
diff --git a/assets/js/f53813dc.09baf3b8.js b/assets/js/f53813dc.09baf3b8.js
new file mode 100644
index 000000000..24c43bb6a
--- /dev/null
+++ b/assets/js/f53813dc.09baf3b8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6966],{28453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>a});var i=t(96540);const s={},o=i.createContext(s);function r(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),i.createElement(o.Provider,{value:n},e.children)}},59409:(e,n,t)=>{t.r(n),t.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/f5acae74.ffc4d3e0.js b/assets/js/f5acae74.ffc4d3e0.js
new file mode 100644
index 000000000..37ee9d204
--- /dev/null
+++ b/assets/js/f5acae74.ffc4d3e0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4087],{3176:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>c,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"ingestion/partitioning","title":"Partitioning","description":"Describes time chunk and secondary partitioning in Druid. Provides guidance to choose a secondary partition dimension.","source":"@site/docs/latest/ingestion/partitioning.md","sourceDirName":"ingestion","slug":"/in [...]
\ No newline at end of file
diff --git a/assets/js/f60a8324.908e5520.js b/assets/js/f60a8324.908e5520.js
new file mode 100644
index 000000000..dfc6440ab
--- /dev/null
+++ b/assets/js/f60a8324.908e5520.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1459],{16167:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>h,frontMatter:()=>r,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"development/extensions-core/avro","title":"Apache Avro","description":"\x3c!--","source":"@site/docs/37.0.0/development/extensions-core/avro.md","sourceDirName":"development/extensions-core","slug":"/development/extensions-core/avro","permalink":"/docs/37.0.0/development/ext [...]
\ No newline at end of file
diff --git a/assets/js/f7c0de2e.2223b5d1.js b/assets/js/f7c0de2e.2223b5d1.js
new file mode 100644
index 000000000..2c3a7246d
--- /dev/null
+++ b/assets/js/f7c0de2e.2223b5d1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9705],{28453:(e,t,s)=>{s.d(t,{R:()=>i,x:()=>c});var n=s(96540);const r={},d=n.createContext(r);function i(e){const t=n.useContext(d);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),n.createElement(d.Provider,{value:t},e.children)}},65645:(e,t,s)=>{s.r(t),s.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/f8b35359.d51395b9.js b/assets/js/f8b35359.d51395b9.js
new file mode 100644
index 000000000..409664f18
--- /dev/null
+++ b/assets/js/f8b35359.d51395b9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8122],{28453:(e,n,i)=>{i.d(n,{R:()=>d,x:()=>a});var s=i(96540);const t={},r=s.createContext(t);function d(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),s.createElement(r.Provider,{value:n},e.children)}},31622:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/f8b477e7.5538327e.js b/assets/js/f8b477e7.5538327e.js
new file mode 100644
index 000000000..36f52a078
--- /dev/null
+++ b/assets/js/f8b477e7.5538327e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1197],{48:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"development/extensions-contrib/spectator-histogram","title":"Spectator Histogram module","description":"\x3c!--","source":"@site/docs/37.0.0/development/extensions-contrib/spectator-histogram.md","sourceDirName":"development/extensions-contrib","slug":"/development/extensions-c [...]
\ No newline at end of file
diff --git a/assets/js/fa9362bb.433ea48c.js b/assets/js/fa9362bb.433ea48c.js
new file mode 100644
index 000000000..4a1c33cc4
--- /dev/null
+++ b/assets/js/fa9362bb.433ea48c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5700],{28453:(e,s,t)=>{t.d(s,{R:()=>i,x:()=>c});var d=t(96540);const n={},r=d.createContext(n);function i(e){const s=d.useContext(r);return d.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:i(e.components),d.createElement(r.Provider,{value:s},e.children)}},64016:(e,s,t)=>{t.r(s),t.d(s,{as [...]
\ No newline at end of file
diff --git a/assets/js/fc4d18c8.2ca20ae6.js b/assets/js/fc4d18c8.2ca20ae6.js
new file mode 100644
index 000000000..2432c3fc6
--- /dev/null
+++ b/assets/js/fc4d18c8.2ca20ae6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7868],{28453:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>o});var t=i(96540);const a={},r=t.createContext(a);function s(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),t.createElement(r.Provider,{value:n},e.children)}},50549:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/fc6529ab.8335b8a5.js b/assets/js/fc6529ab.8335b8a5.js
new file mode 100644
index 000000000..5ceb9094a
--- /dev/null
+++ b/assets/js/fc6529ab.8335b8a5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5795],{28453:(e,n,i)=>{i.d(n,{R:()=>c,x:()=>d});var t=i(96540);const s={},r=t.createContext(s);function c(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),t.createElement(r.Provider,{value:n},e.children)}},73158:(e,n,i)=>{i.r(n),i.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/fd2232cb.3a78a53e.js b/assets/js/fd2232cb.3a78a53e.js
new file mode 100644
index 000000000..ce5b0e955
--- /dev/null
+++ b/assets/js/fd2232cb.3a78a53e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6257],{28453:(e,r,t)=>{t.d(r,{R:()=>o,x:()=>d});var i=t(96540);const s={},n=i.createContext(s);function o(e){const r=i.useContext(n);return i.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function d(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(n.Provider,{value:r},e.children)}},68646:(e,r,t)=>{t.r(r),t.d(r,{as [...]
\ No newline at end of file
diff --git a/assets/js/fe0d9665.95048b05.js b/assets/js/fe0d9665.95048b05.js
new file mode 100644
index 000000000..3a3a05ff1
--- /dev/null
+++ b/assets/js/fe0d9665.95048b05.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4270],{28453:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>a});var i=n(96540);const o={},s=i.createContext(o);function r(e){const t=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),i.createElement(s.Provider,{value:t},e.children)}},97612:(e,t,n)=>{n.r(t),n.d(t,{as [...]
\ No newline at end of file
diff --git a/assets/js/ff037e72.c8ad12e4.js b/assets/js/ff037e72.c8ad12e4.js
new file mode 100644
index 000000000..e2433d2c8
--- /dev/null
+++ b/assets/js/ff037e72.c8ad12e4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2827],{28453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>l});var t=s(96540);const r={},i=t.createContext(r);function d(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),t.createElement(i.Provider,{value:n},e.children)}},71741:(e,n,s)=>{s.r(n),s.d(n,{as [...]
\ No newline at end of file
diff --git a/assets/js/main.1776e851.js b/assets/js/main.1776e851.js
new file mode 100644
index 000000000..18a3eb335
--- /dev/null
+++ b/assets/js/main.1776e851.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.1776e851.js.LICENSE.txt */
+(self.webpackChunk=self.webpackChunk||[]).push([[8792],{102:(e,t,n)=>{"use strict";n.d(t,{dV:()=>m,fM:()=>g,_q:()=>p,ZC:()=>f,Be:()=>h});var r=n(3909),o=n(77387);function a(e){return a=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},a(e)}var s=n(63662);function i(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(i=function(){return!!e})()}function l(e){var t="function"==t [...]
\ No newline at end of file
diff --git a/assets/js/main.1776e851.js.LICENSE.txt b/assets/js/main.1776e851.js.LICENSE.txt
new file mode 100644
index 000000000..ae63de0ab
--- /dev/null
+++ b/assets/js/main.1776e851.js.LICENSE.txt
@@ -0,0 +1,71 @@
+/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress
+ * @license MIT */
+
+/*! Bundled license information:
+
+prismjs/prism.js:
+ (**
+ * Prism: Lightweight, robust, elegant syntax highlighting
+ *
+ * @license MIT <https://opensource.org/licenses/MIT>
+ * @author Lea Verou <https://lea.verou.me>
+ * @namespace
+ * @public
+ *)
+*/
+
+/*!***************************************************
+* mark.js v8.11.1
+* https://markjs.io/
+* Copyright (c) 2014–2018, Julian Kühnel
+* Released under the MIT license https://git.io/vwTVl
+*****************************************************/
+
+/**
+ * @license React
+ * react-dom.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * react-jsx-runtime.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * react.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * scheduler.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/** @license React v16.13.1
+ * react-is.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
diff --git a/assets/js/main.25c32051.js b/assets/js/main.25c32051.js
new file mode 100644
index 000000000..31fbaaa94
--- /dev/null
+++ b/assets/js/main.25c32051.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.25c32051.js.LICENSE.txt */
+(self.webpackChunk=self.webpackChunk||[]).push([[8792],{102:(e,t,n)=>{"use strict";n.d(t,{dV:()=>m,fM:()=>g,_q:()=>p,ZC:()=>f,Be:()=>h});var r=n(3909),o=n(77387);function a(e){return a=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},a(e)}var i=n(63662);function s(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(s=function(){return!!e})()}function c(e){var t="function"==t [...]
\ No newline at end of file
diff --git a/assets/js/main.25c32051.js.LICENSE.txt b/assets/js/main.25c32051.js.LICENSE.txt
new file mode 100644
index 000000000..ae63de0ab
--- /dev/null
+++ b/assets/js/main.25c32051.js.LICENSE.txt
@@ -0,0 +1,71 @@
+/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress
+ * @license MIT */
+
+/*! Bundled license information:
+
+prismjs/prism.js:
+ (**
+ * Prism: Lightweight, robust, elegant syntax highlighting
+ *
+ * @license MIT <https://opensource.org/licenses/MIT>
+ * @author Lea Verou <https://lea.verou.me>
+ * @namespace
+ * @public
+ *)
+*/
+
+/*!***************************************************
+* mark.js v8.11.1
+* https://markjs.io/
+* Copyright (c) 2014–2018, Julian Kühnel
+* Released under the MIT license https://git.io/vwTVl
+*****************************************************/
+
+/**
+ * @license React
+ * react-dom.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * react-jsx-runtime.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * react.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * scheduler.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/** @license React v16.13.1
+ * react-is.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
diff --git a/assets/js/runtime~main.7e1f4526.js b/assets/js/runtime~main.7e1f4526.js
new file mode 100644
index 000000000..7acc6ac02
--- /dev/null
+++ b/assets/js/runtime~main.7e1f4526.js
@@ -0,0 +1 @@
+(()=>{"use strict";var e,a,f,b,c={},d={};function r(e){var a=d[e];if(void 0!==a)return a.exports;var f=d[e]={id:e,loaded:!1,exports:{}};return c[e].call(f.exports,f,f.exports,r),f.loaded=!0,f.exports}r.m=c,r.c=d,e=[],r.O=(a,f,b,c)=>{if(!f){var d=1/0;for(i=0;i<e.length;i++){for(var[f,b,c]=e[i],t=!0,o=0;o<f.length;o++)(!1&c||d>=c)&&Object.keys(r.O).every((e=>r.O[e](f[o])))?f.splice(o--,1):(t=!1,c<d&&(d=c));if(t){e.splice(i--,1);var n=b();void 0!==n&&(a=n)}}return a}c=c||0;for(var i=e.lengt [...]
\ No newline at end of file
diff --git a/assets/js/runtime~main.9232225e.js b/assets/js/runtime~main.9232225e.js
new file mode 100644
index 000000000..4d701668c
--- /dev/null
+++ b/assets/js/runtime~main.9232225e.js
@@ -0,0 +1 @@
+(()=>{"use strict";var e,a,c,f,d={},b={};function r(e){var a=b[e];if(void 0!==a)return a.exports;var c=b[e]={id:e,loaded:!1,exports:{}};return d[e].call(c.exports,c,c.exports,r),c.loaded=!0,c.exports}r.m=d,r.c=b,e=[],r.O=(a,c,f,d)=>{if(!c){var b=1/0;for(i=0;i<e.length;i++){for(var[c,f,d]=e[i],t=!0,o=0;o<c.length;o++)(!1&d||b>=d)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,d<b&&(b=d));if(t){e.splice(i--,1);var n=f();void 0!==n&&(a=n)}}return a}d=d||0;for(var i=e.lengt [...]
\ No newline at end of file
diff --git a/blog/index.html b/blog/index.html
index c490f399d..1911a825c 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -5,8 +5,8 @@
<meta name="generator" content="Docusaurus v3.7.0">
<title data-rh="true">Redirecting... | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/blog"><meta data- [...]
<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.9232225e.js" defer="defer"></script>
+<script src="/assets/js/main.1776e851.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/community/cla/index.html b/community/cla/index.html
index 0b9816030..a1c47c1de 100644
--- a/community/cla/index.html
+++ b/community/cla/index.html
@@ -5,8 +5,8 @@
<meta name="generator" content="Docusaurus v3.7.0">
<title data-rh="true">Druid Contributor License Agreement | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache. [...]
<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.9232225e.js" defer="defer"></script>
+<script src="/assets/js/main.1776e851.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/community/index.html b/community/index.html
index b9d5ed08a..62da4d125 100644
--- a/community/index.html
+++ b/community/index.html
@@ -5,8 +5,8 @@
<meta name="generator" content="Docusaurus v3.7.0">
<title data-rh="true">Apache Druid Community | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/community [...]
<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.9232225e.js" defer="defer"></script>
+<script src="/assets/js/main.1776e851.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/community/join-slack/index.html b/community/join-slack/index.html
index 282b8b11b..1d22a0ef0 100644
--- a/community/join-slack/index.html
+++ b/community/join-slack/index.html
@@ -5,8 +5,8 @@
<meta name="generator" content="Docusaurus v3.7.0">
<title data-rh="true">Redirecting... | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/community/join-sl [...]
<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.9232225e.js" defer="defer"></script>
+<script src="/assets/js/main.1776e851.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/docs/37.0.0/api-reference.html/index.html b/docs/37.0.0/api-reference.html/index.html
new file mode 100644
index 000000000..1c315c6f2
--- /dev/null
+++ b/docs/37.0.0/api-reference.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/api-reference/">
+ <link rel="canonical" href="/docs/37.0.0/api-reference/" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/api-reference/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/api-reference/automatic-compaction-api.html/index.html b/docs/37.0.0/api-reference/automatic-compaction-api.html/index.html
new file mode 100644
index 000000000..e2bab6dca
--- /dev/null
+++ b/docs/37.0.0/api-reference/automatic-compaction-api.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/api-reference/automatic-compaction-api">
+ <link rel="canonical" href="/docs/37.0.0/api-reference/automatic-compaction-api" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/api-reference/automatic-compaction-api' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/api-reference/automatic-compaction-api/index.html b/docs/37.0.0/api-reference/automatic-compaction-api/index.html
similarity index 96%
copy from docs/latest/api-reference/automatic-compaction-api/index.html
copy to docs/37.0.0/api-reference/automatic-compaction-api/index.html
index 257009e88..834a24124 100644
--- a/docs/latest/api-reference/automatic-compaction-api/index.html
+++ b/docs/37.0.0/api-reference/automatic-compaction-api/index.html
@@ -3,19 +3,19 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Automatic compaction API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/la [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Automatic compaction API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37 [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
-<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>Experimental</div><div class="admonitionContent_BuS1"><p>Instead of the automatic [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>Experimental</div><div class="admonitionContent_BuS1"><p>Instead of the automatic [...]
<p>In this topic, <code>http://ROUTER_IP:ROUTER_PORT</code> is a placeholder for your Router service address and port. Replace it with the information for your deployment. For example, use <code>http://localhost:8888</code> for quickstart deployments.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="manage-automatic-compaction">Manage automatic compaction<a href="#manage-automatic-compaction" class="hash-link" aria-label="Direct link to Manage automatic compaction" title="Direct link to Manage automatic compaction"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="create-or-update-automatic-compaction-configuration">Create or update automatic compaction configuration<a href="#create-or-update-automatic-compaction-configuration" class="hash-link" aria-label="Direct link to Create or update automatic compaction configuration" title="Direct link to Create or update automatic compaction configuration"></a></h3>
<p>Creates or updates the automatic compaction configuration for a datasource. Pass the automatic compaction as a JSON object in the request body.</p>
-<p>The automatic compaction configuration requires only the <code>dataSource</code> property. Druid fills all other properties with default values if not specified. See <a href="/docs/latest/configuration/#automatic-compaction-dynamic-configuration">Automatic compaction dynamic configuration</a> for configuration details.</p>
+<p>The automatic compaction configuration requires only the <code>dataSource</code> property. Druid fills all other properties with default values if not specified. See <a href="/docs/37.0.0/configuration/#automatic-compaction-dynamic-configuration">Automatic compaction dynamic configuration</a> for configuration details.</p>
<p>Note that this endpoint returns an HTTP <code>200 OK</code> message code even if the datasource name does not exist.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url">URL<a href="#url" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
<p><code>POST</code> <code>/druid/coordinator/v1/config/compaction</code></p>
@@ -201,9 +201,15 @@
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="update-cluster-level-compaction-config">Update cluster-level compaction config<a href="#update-cluster-level-compaction-config" class="hash-link" aria-label="Direct link to Update cluster-level compaction config" title="Direct link to Update cluster-level compaction config"></a></h3>
<p>Updates cluster-level configuration for compaction tasks which applies to all datasources, unless explicitly overridden in the datasource compaction config.
This includes the following fields:</p>
-<table><thead><tr><th>Config</th><th>Description</th><th>Default value</th></tr></thead><tbody><tr><td><code>compactionTaskSlotRatio</code></td><td>Ratio of number of slots taken up by compaction tasks to the number of total task slots across all workers.</td><td>0.1</td></tr><tr><td><code>maxCompactionTaskSlots</code></td><td>Maximum number of task slots that can be taken up by compaction tasks and sub-tasks. Minimum number of task slots available for compaction is 1. When using MSQ eng [...]
+<table><thead><tr><th>Config</th><th>Description</th><th>Default value</th></tr></thead><tbody><tr><td><code>compactionTaskSlotRatio</code></td><td>Ratio of number of slots taken up by compaction tasks to the number of total task slots across all workers.</td><td>0.1</td></tr><tr><td><code>maxCompactionTaskSlots</code></td><td>Maximum number of task slots that can be taken up by compaction tasks and sub-tasks. Minimum number of task slots available for compaction is 1. When using MSQ eng [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="compaction-policy-newestsegmentfirst">Compaction policy <code>newestSegmentFirst</code><a href="#compaction-policy-newestsegmentfirst" class="hash-link" aria-label="Direct link to compaction-policy-newestsegmentfirst" title="Direct link to compaction-policy-newestsegmentfirst"></a></h4>
<table><thead><tr><th>Field</th><th>Description</th><th>Default value</th></tr></thead><tbody><tr><td><code>type</code></td><td>This must always be <code>newestSegmentFirst</code></td><td></td></tr><tr><td><code>priorityDatasource</code></td><td>Datasource to prioritize for compaction. The intervals of this datasource are chosen for compaction before the intervals of any other datasource. Within this datasource, the intervals are prioritized based on the chosen compaction policy.</td><td [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="compaction-policy-mostfragmentedfirst">Compaction policy <code>mostFragmentedFirst</code><a href="#compaction-policy-mostfragmentedfirst" class="hash-link" aria-label="Direct link to compaction-policy-mostfragmentedfirst" title="Direct link to compaction-policy-mostfragmentedfirst"></a></h4>
+<p>This experimental policy prioritizes compaction of intervals with the largest number of small uncompacted segments. It favors cluster stability by reducing segment count over performance of queries on newer intervals.</p>
+<table><thead><tr><th>Field</th><th>Description</th><th>Default value</th></tr></thead><tbody><tr><td><code>type</code></td><td>This must always be <code>mostFragmentedFirst</code></td><td></td></tr><tr><td><code>priorityDatasource</code></td><td>Datasource to prioritize for compaction. The intervals of this datasource are chosen for compaction before the intervals of any other datasource. Within this datasource, the intervals are prioritized based on the chosen compaction policy.</td><t [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="compaction-policy-fixedintervalorder">Compaction policy <code>fixedIntervalOrder</code><a href="#compaction-policy-fixedintervalorder" class="hash-link" aria-label="Direct link to compaction-policy-fixedintervalorder" title="Direct link to compaction-policy-fixedintervalorder"></a></h4>
+<p>This policy specifies the datasources and intervals eligible for compaction and their order. It is primarily used for integration tests.</p>
+<table><thead><tr><th>Field</th><th>Description</th><th>Default value</th></tr></thead><tbody><tr><td><code>type</code></td><td>This must always be <code>fixedIntervalOrder</code></td><td></td></tr><tr><td><code>eligibleCandidates</code></td><td>List of datasource-interval pairs eligible for compaction. Each entry contains <code>datasource</code> (string) and <code>interval</code> (ISO-8601 interval) fields. Compaction processes candidates in the order specified.</td><td>None</td></tr></ [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-8">URL<a href="#url-8" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
<p><code>POST</code> <code>/druid/indexer/v1/compaction/config/cluster</code></p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-8">Responses<a href="#responses-8" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
@@ -250,7 +256,7 @@ This includes all the fields listed in <a href="#update-cluster-level-compaction
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="create-or-update-automatic-compaction-configuration-for-a-datasource">Create or update automatic compaction configuration for a datasource<a href="#create-or-update-automatic-compaction-configuration-for-a-datasource" class="hash-link" aria-label="Direct link to Create or update automatic compaction configuration for a datasource" title="Direct link to Create or update automatic compaction configuration for a datasource"></a></h3>
<p>Creates or updates the automatic compaction configuration for a datasource. Pass the automatic compaction as a JSON object in the request body.</p>
-<p>The automatic compaction configuration requires only the <code>dataSource</code> property. Druid fills all other properties with default values if not specified. See <a href="/docs/latest/configuration/#automatic-compaction-dynamic-configuration">Automatic compaction dynamic configuration</a> for configuration details.</p>
+<p>The automatic compaction configuration requires only the <code>dataSource</code> property. Druid fills all other properties with default values if not specified. See <a href="/docs/37.0.0/configuration/#automatic-compaction-dynamic-configuration">Automatic compaction dynamic configuration</a> for configuration details.</p>
<p>Note that this endpoint returns an HTTP <code>200 OK</code> message code even if the datasource name does not exist.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-12">URL<a href="#url-12" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
<p><code>POST</code> <code>/druid/indexer/v1/compaction/config/datasources/wikipedia_hour</code></p>
@@ -303,6 +309,6 @@ The response payload is in the same format as <a href="#compaction-status-respon
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-request-15">Sample request<a href="#sample-request-15" class="hash-link" aria-label="Direct link to Sample request" title="Direct link to Sample request"></a></h4>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">cURL</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">HTTP</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-backgro [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-15">Sample response<a href="#sample-response-15" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
-<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
+<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/api-reference/data-management-api.html/index.html b/docs/37.0.0/api-reference/data-management-api.html/index.html
new file mode 100644
index 000000000..e73fc9cca
--- /dev/null
+++ b/docs/37.0.0/api-reference/data-management-api.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/api-reference/data-management-api">
+ <link rel="canonical" href="/docs/37.0.0/api-reference/data-management-api" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/api-reference/data-management-api' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/api-reference/data-management-api/index.html b/docs/37.0.0/api-reference/data-management-api/index.html
similarity index 96%
copy from docs/latest/api-reference/data-management-api/index.html
copy to docs/37.0.0/api-reference/data-management-api/index.html
index 1f2bbd0d8..f53bd47e3 100644
--- a/docs/latest/api-reference/data-management-api/index.html
+++ b/docs/37.0.0/api-reference/data-management-api/index.html
@@ -3,13 +3,13 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Data management API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/ [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Data management API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/ [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
This includes information on how to mark segments as used or unused and delete them from Druid.</p>
<p>In this topic, <code>http://ROUTER_IP:ROUTER_PORT</code> is a placeholder for your Router service address and port.
Replace it with the information for your deployment.
@@ -19,8 +19,8 @@ For example, use <code>http://localhost:8888</code> for quickstart deployments.<
<li>Do not use these APIs while an indexing task or kill task is in progress for the same datasource and interval.</li>
</ul></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="segment-management">Segment management<a href="#segment-management" class="hash-link" aria-label="Direct link to Segment management" title="Direct link to Segment management"></a></h2>
-<p>You can mark segments as used by sending POST requests to the datasource, but the Coordinator may subsequently mark segments as unused if they meet any configured <a href="/docs/latest/operations/rule-configuration#drop-rules">drop rules</a>.
-Even if these API requests update segments to used, you still need to configure a <a href="/docs/latest/operations/rule-configuration#load-rules">load rule</a> to load them onto Historical processes.</p>
+<p>You can mark segments as used by sending POST requests to the datasource, but the Coordinator may subsequently mark segments as unused if they meet any configured <a href="/docs/37.0.0/operations/rule-configuration#drop-rules">drop rules</a>.
+Even if these API requests update segments to used, you still need to configure a <a href="/docs/37.0.0/operations/rule-configuration#load-rules">load rule</a> to load them onto Historical processes.</p>
<p>When you use these APIs concurrently with an indexing task or a kill task, the behavior is undefined.
Druid terminates some segments and marks others as used.
Furthermore, it is possible that all segments could be unused, yet an indexing task might still be able to read data from these segments and complete successfully.</p>
@@ -28,8 +28,8 @@ Furthermore, it is possible that all segments could be unused, yet an indexing t
This makes it the single source of truth for segment metadata, thus ensuring a consistent view across the Druid cluster and allowing the Overlord to cache metadata to improve performance.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="segment-ids">Segment IDs<a href="#segment-ids" class="hash-link" aria-label="Direct link to Segment IDs" title="Direct link to Segment IDs"></a></h3>
<p>You must provide segment IDs when using many of the endpoints described in this topic.
-For information on segment IDs, see <a href="/docs/latest/design/segments#segment-identification">Segment identification</a>.
-For information on finding segment IDs in the web console, see <a href="/docs/latest/operations/web-console#segments">Segments</a>.</p>
+For information on segment IDs, see <a href="/docs/37.0.0/design/segments#segment-identification">Segment identification</a>.
+For information on finding segment IDs in the web console, see <a href="/docs/37.0.0/operations/web-console#segments">Segments</a>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="mark-a-single-segment-unused">Mark a single segment unused<a href="#mark-a-single-segment-unused" class="hash-link" aria-label="Direct link to Mark a single segment unused" title="Direct link to Mark a single segment unused"></a></h3>
<p>Marks the state of a segment as unused, using the segment ID.
This is a "soft delete" of the segment from Historicals.
@@ -137,7 +137,7 @@ Check the response payload to get the number of segments actually updated.</p>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="segment-deletion">Segment deletion<a href="#segment-deletion" class="hash-link" aria-label="Direct link to Segment deletion" title="Direct link to Segment deletion"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="permanently-delete-segments">Permanently delete segments<a href="#permanently-delete-segments" class="hash-link" aria-label="Direct link to Permanently delete segments" title="Direct link to Permanently delete segments"></a></h3>
-<p>The DELETE endpoint sends a <a href="/docs/latest/ingestion/tasks">kill task</a> for a given interval and datasource. The interval value is an ISO 8601 string delimited by <code>_</code>. This request permanently deletes all metadata for unused segments and removes them from deep storage.</p>
+<p>The DELETE endpoint sends a <a href="/docs/37.0.0/ingestion/tasks">kill task</a> for a given interval and datasource. The interval value is an ISO 8601 string delimited by <code>_</code>. This request permanently deletes all metadata for unused segments and removes them from deep storage.</p>
<p>Note that this endpoint returns an HTTP <code>200 OK</code> response code even if the datasource doesn't exist.</p>
<p>This endpoint supersedes the deprecated endpoint: <code>DELETE /druid/coordinator/v1/datasources/{datasource}?kill=true&interval={interval}</code></p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-6">URL<a href="#url-6" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
@@ -149,6 +149,6 @@ Check the response payload to get the number of segments actually updated.</p>
<p>The following example sends a kill task to permanently delete segments in the datasource <code>wikipedia_hour</code> from the interval <code>2015-09-12</code> to <code>2015-09-13</code>.</p>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">cURL</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">HTTP</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-backgro [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-6">Sample response<a href="#sample-response-6" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
-<p>A successful request returns an HTTP <code>200 OK</code> and an empty response body.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/latest/api-reference/retention-rules-api"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Retention rules</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/latest/api-reference [...]
+<p>A successful request returns an HTTP <code>200 OK</code> and an empty response body.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/api-reference/retention-rules-api"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Retention rules</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/37.0.0/api-reference [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/api-reference/dynamic-configuration-api.html/index.html b/docs/37.0.0/api-reference/dynamic-configuration-api.html/index.html
new file mode 100644
index 000000000..b245e3f79
--- /dev/null
+++ b/docs/37.0.0/api-reference/dynamic-configuration-api.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/api-reference/dynamic-configuration-api">
+ <link rel="canonical" href="/docs/37.0.0/api-reference/dynamic-configuration-api" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/api-reference/dynamic-configuration-api' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/api-reference/dynamic-configuration-api/index.html b/docs/37.0.0/api-reference/dynamic-configuration-api/index.html
similarity index 63%
copy from docs/latest/api-reference/dynamic-configuration-api/index.html
copy to docs/37.0.0/api-reference/dynamic-configuration-api/index.html
index 1d692e8b0..49c116a04 100644
--- a/docs/latest/api-reference/dynamic-configuration-api/index.html
+++ b/docs/37.0.0/api-reference/dynamic-configuration-api/index.html
@@ -3,19 +3,19 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Dynamic configuration API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/l [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Dynamic configuration API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/3 [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
<p>In this topic, <code>http://ROUTER_IP:ROUTER_PORT</code> is a placeholder for your Router service address and port.
Replace it with the information for your deployment.
For example, use <code>http://localhost:8888</code> for quickstart deployments.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="coordinator-dynamic-configuration">Coordinator dynamic configuration<a href="#coordinator-dynamic-configuration" class="hash-link" aria-label="Direct link to Coordinator dynamic configuration" title="Direct link to Coordinator dynamic configuration"></a></h2>
<p>The Coordinator has dynamic configurations to tune certain behavior on the fly, without requiring a service restart.
-For information on the supported properties, see <a href="/docs/latest/configuration/#dynamic-configuration">Coordinator dynamic configuration</a>.</p>
+For information on the supported properties, see <a href="/docs/37.0.0/configuration/#dynamic-configuration">Coordinator dynamic configuration</a>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-dynamic-configuration">Get dynamic configuration<a href="#get-dynamic-configuration" class="hash-link" aria-label="Direct link to Get dynamic configuration" title="Direct link to Get dynamic configuration"></a></h3>
<p>Retrieves the current Coordinator dynamic configuration. Returns a JSON object with the dynamic configuration properties.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url">URL<a href="#url" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
@@ -29,7 +29,7 @@ For information on the supported properties, see <a href="/docs/latest/configura
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="update-dynamic-configuration">Update dynamic configuration<a href="#update-dynamic-configuration" class="hash-link" aria-label="Direct link to Update dynamic configuration" title="Direct link to Update dynamic configuration"></a></h3>
<p>Submits a JSON-based dynamic configuration spec to the Coordinator.
-For information on the supported properties, see <a href="/docs/latest/configuration/#dynamic-configuration">Dynamic configuration</a>.</p>
+For information on the supported properties, see <a href="/docs/37.0.0/configuration/#dynamic-configuration">Dynamic configuration</a>.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-1">URL<a href="#url-1" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
<p><code>POST</code> <code>/druid/coordinator/v1/config</code></p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="header-parameters">Header parameters<a href="#header-parameters" class="hash-link" aria-label="Direct link to Header parameters" title="Direct link to Header parameters"></a></h4>
@@ -85,27 +85,143 @@ For information on the supported properties, see <a href="/docs/latest/configura
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">cURL</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">HTTP</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-backgro [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-2">Sample response<a href="#sample-response-2" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="broker-dynamic-configuration">Broker dynamic configuration<a href="#broker-dynamic-configuration" class="hash-link" aria-label="Direct link to Broker dynamic configuration" title="Direct link to Broker dynamic configuration"></a></h2>
+<p>Broker dynamic configuration is managed through the Coordinator but consumed by Brokers.
+These settings control broker behavior such as query blocking rules and default query context values.</p>
+<blockquote>
+<p><strong>Note:</strong> Broker dynamic configuration is best-effort. Settings may not be applied in certain
+cases, such as when a Broker has recently started and hasn't received the config yet, or if the
+Broker cannot contact the Coordinator. Brokers poll the configuration periodically (default every
+1 minute) and also receive push updates from the Coordinator for immediate propagation. If a
+setting is critical and must always be applied, use the equivalent static runtime property instead.</p>
+</blockquote>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-broker-dynamic-configuration">Get broker dynamic configuration<a href="#get-broker-dynamic-configuration" class="hash-link" aria-label="Direct link to Get broker dynamic configuration" title="Direct link to Get broker dynamic configuration"></a></h3>
+<p>Retrieves the current Broker dynamic configuration. Returns a JSON object with the dynamic configuration properties.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-3">URL<a href="#url-3" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
+<p><code>GET</code> <code>/druid/coordinator/v1/broker/config</code></p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-3">Responses<a href="#responses-3" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
+<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">200 SUCCESS</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><p><em>Successfully retrieved broker dynamic configuration</em></p></div></div></div>
+<hr>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-request-3">Sample request<a href="#sample-request-3" class="hash-link" aria-label="Direct link to Sample request" title="Direct link to Sample request"></a></h4>
+<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">cURL</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">HTTP</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-backgro [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-3">Sample response<a href="#sample-response-3" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
+<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="update-broker-dynamic-configuration">Update broker dynamic configuration<a href="#update-broker-dynamic-configuration" class="hash-link" aria-label="Direct link to Update broker dynamic configuration" title="Direct link to Update broker dynamic configuration"></a></h3>
+<p>Updates the Broker dynamic configuration.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-4">URL<a href="#url-4" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
+<p><code>POST</code> <code>/druid/coordinator/v1/broker/config</code></p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="header-parameters-1">Header parameters<a href="#header-parameters-1" class="hash-link" aria-label="Direct link to Header parameters" title="Direct link to Header parameters"></a></h4>
+<p>The endpoint supports a set of optional header parameters to populate the audit log information.</p>
+<ul>
+<li>
+<p><code>X-Druid-Author</code></p>
+<ul>
+<li>Type: String</li>
+<li>Author making the config change.</li>
+</ul>
+</li>
+<li>
+<p><code>X-Druid-Comment</code></p>
+<ul>
+<li>Type: String</li>
+<li>Comment describing the change.</li>
+</ul>
+</li>
+</ul>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-4">Responses<a href="#responses-4" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
+<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">200 SUCCESS</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><p><em>Successfully updated configuration</em></p></div></div></div>
+<hr>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-request-4">Sample request<a href="#sample-request-4" class="hash-link" aria-label="Direct link to Sample request" title="Direct link to Sample request"></a></h4>
+<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">cURL</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">HTTP</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-backgro [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-4">Sample response<a href="#sample-response-4" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
+<p>A successful request returns an HTTP <code>200 OK</code> message code and an empty response body.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="broker-dynamic-configuration-properties">Broker dynamic configuration properties<a href="#broker-dynamic-configuration-properties" class="hash-link" aria-label="Direct link to Broker dynamic configuration properties" title="Direct link to Broker dynamic configuration properties"></a></h3>
+<p>The following table shows the dynamic configuration properties for the Broker.</p>
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>queryBlocklist</code></td><td>List of rules to block queries based on datasource, query type, and/or query context parameters. Each rule defines criteria that are combined with AND logic. Blocked queries return an HTTP 403 error. See <a href="#query-blocklist-rules">Query blocklist rules</a> for details.</td><td>none</td></tr><tr><td><code>queryContext</code></td><td>Map of default qu [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="query-blocklist-rules">Query blocklist rules<a href="#query-blocklist-rules" class="hash-link" aria-label="Direct link to Query blocklist rules" title="Direct link to Query blocklist rules"></a></h4>
+<p>Query blocklist rules allow you to block specific queries based on datasource, query type, and/or query context parameters. This feature is useful for preventing expensive or problematic queries from impacting cluster performance.</p>
+<p>Each rule in the <code>queryBlocklist</code> array is a JSON object with the following properties:</p>
+<table><thead><tr><th>Property</th><th>Description</th><th>Required</th><th>Default</th></tr></thead><tbody><tr><td><code>ruleName</code></td><td>Unique name identifying this blocklist rule. Used in error messages when queries are blocked.</td><td>Yes</td><td>N/A</td></tr><tr><td><code>dataSources</code></td><td>List of datasource names to match. A query matches if it references any datasource in this list.</td><td>No</td><td>Matches all datasources</td></tr><tr><td><code>queryTypes</cod [...]
+<p><strong>Rule matching behavior:</strong></p>
+<ul>
+<li>A query must match ALL specified criteria within a rule (AND logic) to be blocked by that rule</li>
+<li>If any criterion is omitted, empty or null, it matches everything (e.g., omitting <code>queryTypes</code> or setting it to null matches all query types)</li>
+<li>For context matching: if a rule specifies context parameters, queries with missing or null values for those keys will not match</li>
+<li>At least one criterion must be specified per rule to prevent accidentally blocking all queries</li>
+<li>A query is blocked if it matches ANY rule in the blocklist (OR logic between rules)</li>
+</ul>
+<p><strong>Error response:</strong></p>
+<p>When a query is blocked, the Broker returns an HTTP 403 error with a message indicating the query ID and the rule that blocked it:</p>
+<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="per-segment-timeout-configuration">Per-segment timeout configuration<a href="#per-segment-timeout-configuration" class="hash-link" aria-label="Direct link to Per-segment timeout configuration" title="Direct link to Per-segment timeout configuration"></a></h4>
+<p>Per-segment timeout configuration allows operators to set per-datasource segment processing timeouts without restarting the cluster. This is useful when different datasources have different performance characteristics — for example, allowing longer timeouts for larger datasets.</p>
+<p>Each entry in the <code>perSegmentTimeoutConfig</code> map is keyed by datasource name and has the following properties:</p>
+<table><thead><tr><th>Property</th><th>Description</th><th>Required</th><th>Default</th></tr></thead><tbody><tr><td><code>perSegmentTimeoutMs</code></td><td>Per-segment processing timeout in milliseconds. Must be greater than 0.</td><td>Yes</td><td>N/A</td></tr><tr><td><code>monitorOnly</code></td><td>When <code>true</code>, the timeout value is logged but not enforced. Useful for observing the impact of a timeout before enabling enforcement.</td><td>No</td><td><code>false</code></td></t [...]
+<p><strong>Precedence order</strong> (highest to lowest):</p>
+<ol>
+<li>User-supplied <code>perSegmentTimeout</code> in the query context</li>
+<li>Per-datasource value from <code>perSegmentTimeoutConfig</code></li>
+<li>Cluster-wide default from <code>druid.query.default.context.perSegmentTimeout</code></li>
+</ol>
+<blockquote>
+<p><strong>Note:</strong> For queries involving multiple datasources (e.g. joins or unions), the timeout from the
+first matching datasource is applied. The match order is non-deterministic.
+To avoid this, configure the same timeout for all datasources involved in such queries, or set <code>perSegmentTimeout</code> explicitly in the query context.</p>
+</blockquote>
+<p><strong>Example configuration:</strong></p>
+<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
+<p>To clear all per-datasource timeouts, POST an empty map:</p>
+<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-broker-dynamic-configuration-history">Get broker dynamic configuration history<a href="#get-broker-dynamic-configuration-history" class="hash-link" aria-label="Direct link to Get broker dynamic configuration history" title="Direct link to Get broker dynamic configuration history"></a></h3>
+<p>Retrieves the history of changes to Broker dynamic configuration over an interval of time. Returns an empty array if there are no history records available.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-5">URL<a href="#url-5" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
+<p><code>GET</code> <code>/druid/coordinator/v1/broker/config/history</code></p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="query-parameters-1">Query parameters<a href="#query-parameters-1" class="hash-link" aria-label="Direct link to Query parameters" title="Direct link to Query parameters"></a></h4>
+<p>The endpoint supports a set of optional query parameters to filter results.</p>
+<ul>
+<li>
+<p><code>interval</code></p>
+<ul>
+<li>Type: String</li>
+<li>Limit the results to the specified time interval in ISO 8601 format delimited with <code>/</code>. For example, <code>2023-07-13/2023-07-19</code>. The default interval is one week. You can change this period by setting <code>druid.audit.manager.auditHistoryMillis</code> in the <code>runtime.properties</code> file for the Coordinator.</li>
+</ul>
+</li>
+<li>
+<p><code>count</code></p>
+<ul>
+<li>Type: Integer</li>
+<li>Limit the number of results to the last <code>n</code> entries.</li>
+</ul>
+</li>
+</ul>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-5">Responses<a href="#responses-5" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
+<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">200 SUCCESS</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><p><em>Successfully retrieved history</em></p></div></div></div>
+<hr>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-request-5">Sample request<a href="#sample-request-5" class="hash-link" aria-label="Direct link to Sample request" title="Direct link to Sample request"></a></h4>
+<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">cURL</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">HTTP</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-backgro [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-5">Sample response<a href="#sample-response-5" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
+<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="overlord-dynamic-configuration">Overlord dynamic configuration<a href="#overlord-dynamic-configuration" class="hash-link" aria-label="Direct link to Overlord dynamic configuration" title="Direct link to Overlord dynamic configuration"></a></h2>
<p>The Overlord has dynamic configurations to tune how Druid assigns tasks to workers.
-For information on the supported properties, see <a href="/docs/latest/configuration/#overlord-dynamic-configuration">Overlord dynamic configuration</a>.</p>
+For information on the supported properties, see <a href="/docs/37.0.0/configuration/#overlord-dynamic-configuration">Overlord dynamic configuration</a>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-dynamic-configuration-1">Get dynamic configuration<a href="#get-dynamic-configuration-1" class="hash-link" aria-label="Direct link to Get dynamic configuration" title="Direct link to Get dynamic configuration"></a></h3>
<p>Retrieves the current Overlord dynamic configuration.
Returns a JSON object with the dynamic configuration properties.
Returns an empty response body if there is no current Overlord dynamic configuration.</p>
-<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-3">URL<a href="#url-3" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-6">URL<a href="#url-6" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
<p><code>GET</code> <code>/druid/indexer/v1/worker</code></p>
-<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-3">Responses<a href="#responses-3" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-6">Responses<a href="#responses-6" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">200 SUCCESS</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><p><em>Successfully retrieved dynamic configuration</em></p></div></div></div>
-<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-request-3">Sample request<a href="#sample-request-3" class="hash-link" aria-label="Direct link to Sample request" title="Direct link to Sample request"></a></h4>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-request-6">Sample request<a href="#sample-request-6" class="hash-link" aria-label="Direct link to Sample request" title="Direct link to Sample request"></a></h4>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">cURL</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">HTTP</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-backgro [...]
-<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-3">Sample response<a href="#sample-response-3" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-6">Sample response<a href="#sample-response-6" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="update-dynamic-configuration-1">Update dynamic configuration<a href="#update-dynamic-configuration-1" class="hash-link" aria-label="Direct link to Update dynamic configuration" title="Direct link to Update dynamic configuration"></a></h3>
<p>Submits a JSON-based dynamic configuration spec to the Overlord.
-For information on the supported properties, see <a href="/docs/latest/configuration/#overlord-dynamic-configuration">Overlord dynamic configuration</a>.</p>
-<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-4">URL<a href="#url-4" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
+For information on the supported properties, see <a href="/docs/37.0.0/configuration/#overlord-dynamic-configuration">Overlord dynamic configuration</a>.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-7">URL<a href="#url-7" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
<p><code>POST</code> <code>/druid/indexer/v1/worker</code></p>
-<h4 class="anchor anchorWithStickyNavbar_LWe7" id="header-parameters-1">Header parameters<a href="#header-parameters-1" class="hash-link" aria-label="Direct link to Header parameters" title="Direct link to Header parameters"></a></h4>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="header-parameters-2">Header parameters<a href="#header-parameters-2" class="hash-link" aria-label="Direct link to Header parameters" title="Direct link to Header parameters"></a></h4>
<p>The endpoint supports a set of optional header parameters to populate the <code>author</code> and <code>comment</code> fields in the configuration history.</p>
<ul>
<li><code>X-Druid-Author</code>
@@ -121,18 +237,18 @@ For information on the supported properties, see <a href="/docs/latest/configura
</ul>
</li>
</ul>
-<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-4">Responses<a href="#responses-4" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-7">Responses<a href="#responses-7" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">200 SUCCESS</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><p><em>Successfully updated dynamic configuration</em></p></div></div></div>
<hr>
-<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-request-4">Sample request<a href="#sample-request-4" class="hash-link" aria-label="Direct link to Sample request" title="Direct link to Sample request"></a></h4>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-request-7">Sample request<a href="#sample-request-7" class="hash-link" aria-label="Direct link to Sample request" title="Direct link to Sample request"></a></h4>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">cURL</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">HTTP</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-backgro [...]
-<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-4">Sample response<a href="#sample-response-4" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-7">Sample response<a href="#sample-response-7" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
<p>A successful request returns an HTTP <code>200 OK</code> message code and an empty response body.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-dynamic-configuration-history-1">Get dynamic configuration history<a href="#get-dynamic-configuration-history-1" class="hash-link" aria-label="Direct link to Get dynamic configuration history" title="Direct link to Get dynamic configuration history"></a></h3>
<p>Retrieves the history of changes to Overlord dynamic configuration over an interval of time. Returns an empty array if there are no history records available.</p>
-<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-5">URL<a href="#url-5" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-8">URL<a href="#url-8" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
<p><code>GET</code> <code>/druid/indexer/v1/worker/history</code></p>
-<h4 class="anchor anchorWithStickyNavbar_LWe7" id="query-parameters-1">Query parameters<a href="#query-parameters-1" class="hash-link" aria-label="Direct link to Query parameters" title="Direct link to Query parameters"></a></h4>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="query-parameters-2">Query parameters<a href="#query-parameters-2" class="hash-link" aria-label="Direct link to Query parameters" title="Direct link to Query parameters"></a></h4>
<p>The endpoint supports a set of optional query parameters to filter results.</p>
<ul>
<li>
@@ -150,35 +266,35 @@ For information on the supported properties, see <a href="/docs/latest/configura
</ul>
</li>
</ul>
-<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-5">Responses<a href="#responses-5" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-8">Responses<a href="#responses-8" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">200 SUCCESS</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><p><em>Successfully retrieved history</em></p></div></div></div>
<hr>
-<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-request-5">Sample request<a href="#sample-request-5" class="hash-link" aria-label="Direct link to Sample request" title="Direct link to Sample request"></a></h4>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-request-8">Sample request<a href="#sample-request-8" class="hash-link" aria-label="Direct link to Sample request" title="Direct link to Sample request"></a></h4>
<p>The following example retrieves the dynamic configuration history between <code>2022-07-13</code> and <code>2024-07-19</code>. The response is limited to 10 entries.</p>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">cURL</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">HTTP</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-backgro [...]
-<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-5">Sample response<a href="#sample-response-5" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-8">Sample response<a href="#sample-response-8" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-an-array-of-worker-nodes-in-the-cluster">Get an array of worker nodes in the cluster<a href="#get-an-array-of-worker-nodes-in-the-cluster" class="hash-link" aria-label="Direct link to Get an array of worker nodes in the cluster" title="Direct link to Get an array of worker nodes in the cluster"></a></h3>
<p>Returns an array of all the worker nodes in the cluster along with its corresponding metadata.</p>
<p><code>GET</code> <code>/druid/indexer/v1/workers</code></p>
-<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-6">Responses<a href="#responses-6" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-9">Responses<a href="#responses-9" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">200 SUCCESS</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><p><em>Successfully retrieved worker nodes</em></p></div></div></div>
<hr>
-<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-request-6">Sample request<a href="#sample-request-6" class="hash-link" aria-label="Direct link to Sample request" title="Direct link to Sample request"></a></h4>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-request-9">Sample request<a href="#sample-request-9" class="hash-link" aria-label="Direct link to Sample request" title="Direct link to Sample request"></a></h4>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">cURL</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">HTTP</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-backgro [...]
-<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-6">Sample response<a href="#sample-response-6" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-9">Sample response<a href="#sample-response-9" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-scaling-events">Get scaling events<a href="#get-scaling-events" class="hash-link" aria-label="Direct link to Get scaling events" title="Direct link to Get scaling events"></a></h3>
<p>Returns Overlord scaling events if autoscaling runners are in use.
Returns an empty response body if there are no Overlord scaling events.</p>
-<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-6">URL<a href="#url-6" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-9">URL<a href="#url-9" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
<p><code>GET</code> <code>/druid/indexer/v1/scaling</code></p>
-<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-7">Responses<a href="#responses-7" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-10">Responses<a href="#responses-10" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">200 SUCCESS</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><p><em>Successfully retrieved scaling events</em></p></div></div></div>
<hr>
-<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-request-7">Sample request<a href="#sample-request-7" class="hash-link" aria-label="Direct link to Sample request" title="Direct link to Sample request"></a></h4>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-request-10">Sample request<a href="#sample-request-10" class="hash-link" aria-label="Direct link to Sample request" title="Direct link to Sample request"></a></h4>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">cURL</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">HTTP</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-backgro [...]
-<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-7">Sample response<a href="#sample-response-7" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
-<p>A successful request returns a <code>200 OK</code> response and an array of scaling events.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/latest/api-reference/service-status-api"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Service status</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/latest/api-refe [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-10">Sample response<a href="#sample-response-10" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
+<p>A successful request returns a <code>200 OK</code> response and an array of scaling events.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/api-reference/service-status-api"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Service status</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/37.0.0/api-refe [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/latest/api-reference/index.html b/docs/37.0.0/api-reference/index.html
similarity index 86%
copy from docs/latest/api-reference/index.html
copy to docs/37.0.0/api-reference/index.html
index dd8ec9d2f..565ac46c8 100644
--- a/docs/latest/api-reference/index.html
+++ b/docs/37.0.0/api-reference/index.html
@@ -3,31 +3,31 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">API reference | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/api-re [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">API reference | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/api-re [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="http-apis">HTTP APIs<a href="#http-apis" class="hash-link" aria-label="Direct link to HTTP APIs" title="Direct link to HTTP APIs"></a></h2>
<ul>
-<li><a href="/docs/latest/api-reference/sql-api">Druid SQL queries</a> to submit SQL queries using the Druid SQL API.</li>
-<li><a href="/docs/latest/api-reference/sql-ingestion-api">SQL-based ingestion</a> to submit SQL-based batch ingestion requests.</li>
-<li><a href="/docs/latest/api-reference/json-querying-api">JSON querying</a> to submit JSON-based native queries.</li>
-<li><a href="/docs/latest/api-reference/tasks-api">Tasks</a> to manage data ingestion operations.</li>
-<li><a href="/docs/latest/api-reference/supervisor-api">Supervisors</a> to manage supervisors for data ingestion lifecycle and data processing.</li>
-<li><a href="/docs/latest/api-reference/retention-rules-api">Retention rules</a> to define and manage data retention rules across datasources.</li>
-<li><a href="/docs/latest/api-reference/data-management-api">Data management</a> to manage data segments.</li>
-<li><a href="/docs/latest/api-reference/automatic-compaction-api">Automatic compaction</a> to optimize segment sizes after ingestion.</li>
-<li><a href="/docs/latest/api-reference/lookups-api">Lookups</a> to manage and modify key-value datasources.</li>
-<li><a href="/docs/latest/api-reference/service-status-api">Service status</a> to monitor components within the Druid cluster.</li>
-<li><a href="/docs/latest/api-reference/dynamic-configuration-api">Dynamic configuration</a> to configure the behavior of the Coordinator and Overlord processes.</li>
-<li><a href="/docs/latest/api-reference/legacy-metadata-api">Legacy metadata</a> to retrieve datasource metadata.</li>
+<li><a href="/docs/37.0.0/api-reference/sql-api">Druid SQL queries</a> to submit SQL queries using the Druid SQL API.</li>
+<li><a href="/docs/37.0.0/api-reference/sql-ingestion-api">SQL-based ingestion</a> to submit SQL-based batch ingestion requests.</li>
+<li><a href="/docs/37.0.0/api-reference/json-querying-api">JSON querying</a> to submit JSON-based native queries.</li>
+<li><a href="/docs/37.0.0/api-reference/tasks-api">Tasks</a> to manage data ingestion operations.</li>
+<li><a href="/docs/37.0.0/api-reference/supervisor-api">Supervisors</a> to manage supervisors for data ingestion lifecycle and data processing.</li>
+<li><a href="/docs/37.0.0/api-reference/retention-rules-api">Retention rules</a> to define and manage data retention rules across datasources.</li>
+<li><a href="/docs/37.0.0/api-reference/data-management-api">Data management</a> to manage data segments.</li>
+<li><a href="/docs/37.0.0/api-reference/automatic-compaction-api">Automatic compaction</a> to optimize segment sizes after ingestion.</li>
+<li><a href="/docs/37.0.0/api-reference/lookups-api">Lookups</a> to manage and modify key-value datasources.</li>
+<li><a href="/docs/37.0.0/api-reference/service-status-api">Service status</a> to monitor components within the Druid cluster.</li>
+<li><a href="/docs/37.0.0/api-reference/dynamic-configuration-api">Dynamic configuration</a> to configure the behavior of the Coordinator and Overlord processes.</li>
+<li><a href="/docs/37.0.0/api-reference/legacy-metadata-api">Legacy metadata</a> to retrieve datasource metadata.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="java-apis">Java APIs<a href="#java-apis" class="hash-link" aria-label="Direct link to Java APIs" title="Direct link to Java APIs"></a></h2>
<ul>
-<li><a href="/docs/latest/api-reference/sql-jdbc">SQL JDBC driver</a> to connect to Druid and make Druid SQL queries using the Avatica JDBC driver.</li>
-</ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/latest/querying/geo"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Spatial filters</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/latest/api-reference/sql-api"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Druid SQL</div [...]
+<li><a href="/docs/37.0.0/api-reference/sql-jdbc">SQL JDBC driver</a> to connect to Druid and make Druid SQL queries using the Avatica JDBC driver.</li>
+</ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/querying/geo"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Spatial filters</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/37.0.0/api-reference/sql-api"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Druid SQL</div [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/api-reference/json-querying-api.html/index.html b/docs/37.0.0/api-reference/json-querying-api.html/index.html
new file mode 100644
index 000000000..4af3c3754
--- /dev/null
+++ b/docs/37.0.0/api-reference/json-querying-api.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/api-reference/json-querying-api">
+ <link rel="canonical" href="/docs/37.0.0/api-reference/json-querying-api" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/api-reference/json-querying-api' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/api-reference/json-querying-api/index.html b/docs/37.0.0/api-reference/json-querying-api/index.html
similarity index 98%
copy from docs/latest/api-reference/json-querying-api/index.html
copy to docs/37.0.0/api-reference/json-querying-api/index.html
index 78a03fb8b..8a9be6c5d 100644
--- a/docs/latest/api-reference/json-querying-api/index.html
+++ b/docs/37.0.0/api-reference/json-querying-api/index.html
@@ -3,22 +3,22 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">JSON querying API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/ap [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">JSON querying API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/ap [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
<p>In this topic, <code>http://SERVICE_IP:SERVICE_PORT</code> is a placeholder for the server address of deployment and the service port. For example, on the quickstart configuration, replace <code>http://ROUTER_IP:ROUTER_PORT</code> with <code>http://localhost:8888</code>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="submit-a-query">Submit a query<a href="#submit-a-query" class="hash-link" aria-label="Direct link to Submit a query" title="Direct link to Submit a query"></a></h2>
<p>Submits a JSON-based native query. The body of the request is the native query itself.</p>
<p>Druid supports different types of queries for different use cases. All queries require the following properties:</p>
<ul>
<li><code>queryType</code>: A string representing the type of query. Druid supports the following native query types: <code>timeseries</code>, <code>topN</code>, <code>groupBy</code>, <code>timeBoundaries</code>, <code>segmentMetadata</code>, <code>datasourceMetadata</code>, <code>scan</code>, and <code>search</code>.</li>
-<li><code>dataSource</code>: A string or object defining the source of data to query. The most common value is the name of the datasource to query. For more information, see <a href="/docs/latest/querying/datasource">Datasources</a>.</li>
+<li><code>dataSource</code>: A string or object defining the source of data to query. The most common value is the name of the datasource to query. For more information, see <a href="/docs/37.0.0/querying/datasource">Datasources</a>.</li>
</ul>
-<p>For additional properties based on your query type or use case, see <a href="/docs/latest/querying/#available-queries">available native queries</a>.</p>
+<p>For additional properties based on your query type or use case, see <a href="/docs/37.0.0/querying/#available-queries">available native queries</a>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="url">URL<a href="#url" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h3>
<p><code>POST</code> <code>/druid/v2</code></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="query-parameters">Query parameters<a href="#query-parameters" class="hash-link" aria-label="Direct link to Query parameters" title="Direct link to Query parameters"></a></h3>
@@ -30,7 +30,7 @@
</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="responses">Responses<a href="#responses" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h3>
-<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">200 SUCCESS</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">400 BAD REQUEST</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><p><em>Successfully submitted query</em></p></div><div role="tabpanel" class="tabItem_Ymn6" hid [...]
+<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">200 SUCCESS</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">400 BAD REQUEST</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><p><em>Successfully submitted query</em></p></div><div role="tabpanel" class="tabItem_Ymn6" hid [...]
<hr>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="example-query-topn">Example query: <code>topN</code><a href="#example-query-topn" class="hash-link" aria-label="Direct link to example-query-topn" title="Direct link to example-query-topn"></a></h3>
<p>The following example shows a <code>topN</code> query. The query analyzes the <code>social_media</code> datasource to return the top five users from the <code>username</code> dimension with the highest number of views from the <code>views</code> metric.</p>
@@ -62,11 +62,11 @@
</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="responses-1">Responses<a href="#responses-1" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h3>
-<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">200 SUCCESS</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">400 BAD REQUEST</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><p><em>Successfully retrieved segment information</em></p></div><div role="tabpanel" class="tab [...]
+<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">200 SUCCESS</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">400 BAD REQUEST</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><p><em>Successfully retrieved segment information</em></p></div><div role="tabpanel" class="tab [...]
<hr>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="sample-request">Sample request<a href="#sample-request" class="hash-link" aria-label="Direct link to Sample request" title="Direct link to Sample request"></a></h3>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">cURL</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">HTTP</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-backgro [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response">Sample response<a href="#sample-response" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h3>
-<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
+<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/api-reference/legacy-metadata-api.html/index.html b/docs/37.0.0/api-reference/legacy-metadata-api.html/index.html
new file mode 100644
index 000000000..9f5515fb6
--- /dev/null
+++ b/docs/37.0.0/api-reference/legacy-metadata-api.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/api-reference/legacy-metadata-api">
+ <link rel="canonical" href="/docs/37.0.0/api-reference/legacy-metadata-api" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/api-reference/legacy-metadata-api' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/api-reference/legacy-metadata-api/index.html b/docs/37.0.0/api-reference/legacy-metadata-api/index.html
similarity index 92%
copy from docs/latest/api-reference/legacy-metadata-api/index.html
copy to docs/37.0.0/api-reference/legacy-metadata-api/index.html
index 0f8a6d15b..e104db17d 100644
--- a/docs/latest/api-reference/legacy-metadata-api/index.html
+++ b/docs/37.0.0/api-reference/legacy-metadata-api/index.html
@@ -3,13 +3,13 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Legacy metadata API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/ [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Legacy metadata API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/ [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="segment-loading">Segment loading<a href="#segment-loading" class="hash-link" aria-label="Direct link to Segment loading" title="Direct link to Segment loading"></a></h2>
<p><code>GET /druid/coordinator/v1/loadstatus</code></p>
<p>Returns the percentage of segments actually loaded in the cluster versus segments that should be loaded in the cluster.</p>
@@ -68,7 +68,7 @@ the segments left to load. See <a href="#segment-loading">Coordinator Segment Lo
If no used segments are found for the given inputs, this API returns <code>204 No Content</code></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="metadata-store-information">Metadata store information<a href="#metadata-store-information" class="hash-link" aria-label="Direct link to Metadata store information" title="Direct link to Metadata store information"></a></h2>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>Note: Much of this information is [...]
-<a href="/docs/latest/querying/sql-metadata-tables#segments-table"><code>sys.segments</code></a> table.</p></div></div>
+<a href="/docs/37.0.0/querying/sql-metadata-tables#segments-table"><code>sys.segments</code></a> table.</p></div></div>
<p><code>GET /druid/coordinator/v1/metadata/segments</code></p>
<p>Returns a list of all segments for each datasource enabled in the cluster.</p>
<p><code>GET /druid/coordinator/v1/metadata/segments?datasources={dataSourceName1}&datasources={dataSourceName2}</code></p>
@@ -113,7 +113,7 @@ is returned.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="datasources">Datasources<a href="#datasources" class="hash-link" aria-label="Direct link to Datasources" title="Direct link to Datasources"></a></h2>
<p>Note that all <em>interval</em> URL parameters are ISO 8601 strings delimited by a <code>_</code> instead of a <code>/</code>—for example, <code>2016-06-27_2016-06-28</code>.</p>
<p><code>GET /druid/coordinator/v1/datasources</code></p>
-<p>Returns a list of datasource names found in the cluster as seen by the coordinator. This view is updated every <a href="/docs/latest/configuration/#coordinator-operation"><code>druid.coordinator.period</code></a>.</p>
+<p>Returns a list of datasource names found in the cluster as seen by the coordinator. This view is updated every <a href="/docs/37.0.0/configuration/#coordinator-operation"><code>druid.coordinator.period</code></a>.</p>
<p><code>GET /druid/coordinator/v1/datasources?simple</code></p>
<p>Returns a list of JSON objects containing the name and properties of datasources found in the cluster. Properties include segment count, total segment byte size, replicated total segment byte size, minTime, and maxTime.</p>
<p><code>GET /druid/coordinator/v1/datasources?full</code></p>
@@ -170,31 +170,31 @@ ports.</p>
<li><code>tier</code></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="query-server">Query server<a href="#query-server" class="hash-link" aria-label="Direct link to Query server" title="Direct link to Query server"></a></h2>
-<p>This section documents the API endpoints for the services that reside on Query servers (Brokers) in the suggested <a href="/docs/latest/design/architecture#druid-servers">three-server configuration</a>.</p>
+<p>This section documents the API endpoints for the services that reside on Query servers (Brokers) in the suggested <a href="/docs/37.0.0/design/architecture#druid-servers">three-server configuration</a>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="broker">Broker<a href="#broker" class="hash-link" aria-label="Direct link to Broker" title="Direct link to Broker"></a></h3>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="datasource-information">Datasource information<a href="#datasource-information" class="hash-link" aria-label="Direct link to Datasource information" title="Direct link to Datasource information"></a></h4>
<p>Note that all <em>interval</em> URL parameters are ISO 8601 strings delimited by a <code>_</code> instead of a <code>/</code>
as in <code>2016-06-27_2016-06-28</code>.</p>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>Note: Much of this information is [...]
-<a href="/docs/latest/querying/sql-metadata-tables#tables-table"><code>INFORMATION_SCHEMA.TABLES</code></a>,
-<a href="/docs/latest/querying/sql-metadata-tables#columns-table"><code>INFORMATION_SCHEMA.COLUMNS</code></a>, and
-<a href="/docs/latest/querying/sql-metadata-tables#segments-table"><code>sys.segments</code></a> tables.</p></div></div>
+<a href="/docs/37.0.0/querying/sql-metadata-tables#tables-table"><code>INFORMATION_SCHEMA.TABLES</code></a>,
+<a href="/docs/37.0.0/querying/sql-metadata-tables#columns-table"><code>INFORMATION_SCHEMA.COLUMNS</code></a>, and
+<a href="/docs/37.0.0/querying/sql-metadata-tables#segments-table"><code>sys.segments</code></a> tables.</p></div></div>
<p><code>GET /druid/v2/datasources</code></p>
<p>Returns a list of queryable datasources.</p>
<p><code>GET /druid/v2/datasources/{dataSourceName}</code></p>
<p>Returns the dimensions and metrics of the datasource. Optionally, you can provide request parameter "full" to get list of served intervals with dimensions and metrics being served for those intervals. You can also provide request param "interval" explicitly to refer to a particular interval.</p>
<p>If no interval is specified, a default interval spanning a configurable period before the current time will be used. The default duration of this interval is specified in ISO 8601 duration format via: <code>druid.query.segmentMetadata.defaultHistory</code></p>
<p><code>GET /druid/v2/datasources/{dataSourceName}/dimensions</code></p>
-<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>This API is deprecated and will b [...]
-which provides more comprehensive information and supports all dataSource types including streaming dataSources. It's also encouraged to use <a href="/docs/latest/querying/sql-metadata-tables">INFORMATION_SCHEMA tables</a>
+<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>This API is deprecated and will b [...]
+which provides more comprehensive information and supports all dataSource types including streaming dataSources. It's also encouraged to use <a href="/docs/37.0.0/querying/sql-metadata-tables">INFORMATION_SCHEMA tables</a>
if you're using SQL.</p></div></div>
<p>Returns the dimensions of the datasource.</p>
<p><code>GET /druid/v2/datasources/{dataSourceName}/metrics</code></p>
-<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>This API is deprecated and will b [...]
-which provides more comprehensive information and supports all dataSource types including streaming dataSources. It's also encouraged to use <a href="/docs/latest/querying/sql-metadata-tables">INFORMATION_SCHEMA tables</a>
+<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>This API is deprecated and will b [...]
+which provides more comprehensive information and supports all dataSource types including streaming dataSources. It's also encouraged to use <a href="/docs/37.0.0/querying/sql-metadata-tables">INFORMATION_SCHEMA tables</a>
if you're using SQL.</p></div></div>
<p>Returns the metrics of the datasource.</p>
<p><code>GET /druid/v2/datasources/{dataSourceName}/candidates?intervals={comma-separated-intervals}&numCandidates={numCandidates}</code></p>
-<p>Returns segment information lists including server locations for the given datasource and intervals. If "numCandidates" is not specified, it will return all servers for each interval.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/latest/api-reference/dynamic-configuration-api"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">D [...]
+<p>Returns segment information lists including server locations for the given datasource and intervals. If "numCandidates" is not specified, it will return all servers for each interval.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/api-reference/dynamic-configuration-api"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">D [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/api-reference/lookups-api.html/index.html b/docs/37.0.0/api-reference/lookups-api.html/index.html
new file mode 100644
index 000000000..ffba52c17
--- /dev/null
+++ b/docs/37.0.0/api-reference/lookups-api.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/api-reference/lookups-api">
+ <link rel="canonical" href="/docs/37.0.0/api-reference/lookups-api" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/api-reference/lookups-api' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/api-reference/lookups-api/index.html b/docs/37.0.0/api-reference/lookups-api/index.html
similarity index 96%
copy from docs/latest/api-reference/lookups-api/index.html
copy to docs/37.0.0/api-reference/lookups-api/index.html
index c814f1da7..a0ce1e21e 100644
--- a/docs/latest/api-reference/lookups-api/index.html
+++ b/docs/37.0.0/api-reference/lookups-api/index.html
@@ -3,13 +3,13 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Lookups API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/api-refe [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Lookups API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/api-refe [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="configure-lookups">Configure lookups<a href="#configure-lookups" class="hash-link" aria-label="Direct link to Configure lookups" title="Direct link to Configure lookups"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="bulk-update">Bulk update<a href="#bulk-update" class="hash-link" aria-label="Direct link to Bulk update" title="Direct link to Bulk update"></a></h3>
<p>Lookups can be updated in bulk by posting a JSON object to <code>/druid/coordinator/v1/lookups/config</code>. The format of the json object is as follows:</p>
@@ -65,6 +65,6 @@ The return value will be a json map of the lookups to their extractor factories.
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-lookup-1">Get lookup<a href="#get-lookup-1" class="hash-link" aria-label="Direct link to Get lookup" title="Direct link to Get lookup"></a></h3>
<p>A <code>GET</code> to the process at <code>/druid/listen/v1/lookups/some_lookup_name</code> will return the LookupExtractorFactory for the lookup identified by <code>some_lookup_name</code>.
The return value will be the json representation of the factory.</p>
-<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
+<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/api-reference/retention-rules-api.html/index.html b/docs/37.0.0/api-reference/retention-rules-api.html/index.html
new file mode 100644
index 000000000..651fdeace
--- /dev/null
+++ b/docs/37.0.0/api-reference/retention-rules-api.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/api-reference/retention-rules-api">
+ <link rel="canonical" href="/docs/37.0.0/api-reference/retention-rules-api" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/api-reference/retention-rules-api' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/api-reference/retention-rules-api/index.html b/docs/37.0.0/api-reference/retention-rules-api/index.html
similarity index 96%
copy from docs/latest/api-reference/retention-rules-api/index.html
copy to docs/37.0.0/api-reference/retention-rules-api/index.html
index e09606e3a..15f9e8e1c 100644
--- a/docs/latest/api-reference/retention-rules-api/index.html
+++ b/docs/37.0.0/api-reference/retention-rules-api/index.html
@@ -3,24 +3,24 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Retention rules API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/ [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Retention rules API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/ [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
-<p>Druid uses retention rules to determine what data is retained in the cluster. Druid supports load, drop, and broadcast rules. For more information, see <a href="/docs/latest/operations/rule-configuration">Using rules to drop and retain data</a>.</p>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<p>Druid uses retention rules to determine what data is retained in the cluster. Druid supports load, drop, and broadcast rules. For more information, see <a href="/docs/37.0.0/operations/rule-configuration">Using rules to drop and retain data</a>.</p>
<p>In this topic, <code>http://ROUTER_IP:ROUTER_PORT</code> is a placeholder for your Router service address and port. Replace it with the information for your deployment. For example, use <code>http://localhost:8888</code> for quickstart deployments.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="update-retention-rules-for-a-datasource">Update retention rules for a datasource<a href="#update-retention-rules-for-a-datasource" class="hash-link" aria-label="Direct link to Update retention rules for a datasource" title="Direct link to Update retention rules for a datasource"></a></h2>
<p>Updates one or more retention rules for a datasource. The request body takes an array of retention rule objects. For details on defining retention rules, see the following sources:</p>
<ul>
-<li><a href="/docs/latest/operations/rule-configuration#load-rules">Load rules</a></li>
-<li><a href="/docs/latest/operations/rule-configuration#drop-rules">Drop rules</a></li>
-<li><a href="/docs/latest/operations/rule-configuration#broadcast-rules">Broadcast rules</a></li>
+<li><a href="/docs/37.0.0/operations/rule-configuration#load-rules">Load rules</a></li>
+<li><a href="/docs/37.0.0/operations/rule-configuration#drop-rules">Drop rules</a></li>
+<li><a href="/docs/37.0.0/operations/rule-configuration#broadcast-rules">Broadcast rules</a></li>
</ul>
<p>This request overwrites any existing rules for the datasource.
-Druid reads rules in the order in which they appear; for more information, see <a href="/docs/latest/operations/rule-configuration">rule structure</a>.</p>
+Druid reads rules in the order in which they appear; for more information, see <a href="/docs/37.0.0/operations/rule-configuration">rule structure</a>.</p>
<p>Note that this endpoint returns an HTTP <code>200 OK</code> even if the datasource does not exist.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="url">URL<a href="#url" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h3>
<p><code>POST</code> <code>/druid/coordinator/v1/rules/{dataSource}</code></p>
@@ -51,11 +51,11 @@ Druid reads rules in the order in which they appear; for more information, see <
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="update-default-retention-rules-for-all-datasources">Update default retention rules for all datasources<a href="#update-default-retention-rules-for-all-datasources" class="hash-link" aria-label="Direct link to Update default retention rules for all datasources" title="Direct link to Update default retention rules for all datasources"></a></h2>
<p>Updates one or more default retention rules for all datasources. Submit retention rules as an array of objects in the request body. For details on defining retention rules, see the following sources:</p>
<ul>
-<li><a href="/docs/latest/operations/rule-configuration#load-rules">Load rules</a></li>
-<li><a href="/docs/latest/operations/rule-configuration#drop-rules">Drop rules</a></li>
-<li><a href="/docs/latest/operations/rule-configuration#broadcast-rules">Broadcast rules</a></li>
+<li><a href="/docs/37.0.0/operations/rule-configuration#load-rules">Load rules</a></li>
+<li><a href="/docs/37.0.0/operations/rule-configuration#drop-rules">Drop rules</a></li>
+<li><a href="/docs/37.0.0/operations/rule-configuration#broadcast-rules">Broadcast rules</a></li>
</ul>
-<p>This request overwrites any existing rules for all datasources. To remove default retention rules for all datasources, submit an empty rule array in the request body. Rules are read in the order in which they appear; for more information, see <a href="/docs/latest/operations/rule-configuration">rule structure</a>.</p>
+<p>This request overwrites any existing rules for all datasources. To remove default retention rules for all datasources, submit an empty rule array in the request body. Rules are read in the order in which they appear; for more information, see <a href="/docs/37.0.0/operations/rule-configuration">rule structure</a>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="url-1">URL<a href="#url-1" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h3>
<p><code>POST</code> <code>/druid/coordinator/v1/rules/_default</code></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="header-parameters-1">Header parameters<a href="#header-parameters-1" class="hash-link" aria-label="Direct link to Header parameters" title="Direct link to Header parameters"></a></h3>
@@ -141,6 +141,6 @@ Druid reads rules in the order in which they appear; for more information, see <
<p>The following example retrieves the audit history for all datasources from <code>2023-07-13</code> to <code>2023-07-19</code>.</p>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">cURL</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">HTTP</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-backgro [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-4">Sample response<a href="#sample-response-4" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h3>
-<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
+<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/api-reference/service-status-api.html/index.html b/docs/37.0.0/api-reference/service-status-api.html/index.html
new file mode 100644
index 000000000..be4f17306
--- /dev/null
+++ b/docs/37.0.0/api-reference/service-status-api.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/api-reference/service-status-api">
+ <link rel="canonical" href="/docs/37.0.0/api-reference/service-status-api" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/api-reference/service-status-api' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/api-reference/service-status-api/index.html b/docs/37.0.0/api-reference/service-status-api/index.html
similarity index 98%
copy from docs/latest/api-reference/service-status-api/index.html
copy to docs/37.0.0/api-reference/service-status-api/index.html
index eccdb8682..01e8b4803 100644
--- a/docs/latest/api-reference/service-status-api/index.html
+++ b/docs/37.0.0/api-reference/service-status-api/index.html
@@ -3,13 +3,13 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Service status API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/a [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Service status API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/a [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
<p>In this document, <code>http://SERVICE_IP:SERVICE_PORT</code> is a placeholder for the server address of deployment and the service port. For example, on the quickstart configuration, replace <code>http://ROUTER_IP:ROUTER_PORT</code> with <code>http://localhost:8888</code>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="common">Common<a href="#common" class="hash-link" aria-label="Direct link to Common" title="Direct link to Common"></a></h2>
<p>All services support the following endpoints.</p>
@@ -154,7 +154,7 @@ Use this endpoint for monitoring checks that are unable to examine the response
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-11">Sample response<a href="#sample-response-11" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-active-tasks">Get active tasks<a href="#get-active-tasks" class="hash-link" aria-label="Direct link to Get active tasks" title="Direct link to Get active tasks"></a></h3>
-<p>Retrieves a list of active tasks being run on the Middle Manager. Returns JSON list of task ID strings. Note that for normal usage, you should use the <code>/druid/indexer/v1/tasks</code> <a href="/docs/latest/api-reference/tasks-api">Tasks API</a> endpoint or one of the task state specific variants instead.</p>
+<p>Retrieves a list of active tasks being run on the Middle Manager. Returns JSON list of task ID strings. Note that for normal usage, you should use the <code>/druid/indexer/v1/tasks</code> <a href="/docs/37.0.0/api-reference/tasks-api">Tasks API</a> endpoint or one of the task state specific variants instead.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-12">URL<a href="#url-12" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
<p><code>GET</code> <code>/druid/worker/v1/tasks</code></p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-12">Responses<a href="#responses-12" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
@@ -166,12 +166,12 @@ Use this endpoint for monitoring checks that are unable to examine the response
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-task-log">Get task log<a href="#get-task-log" class="hash-link" aria-label="Direct link to Get task log" title="Direct link to Get task log"></a></h3>
<p>Retrieves task log output stream by task ID. For normal usage, you should use the <code>/druid/indexer/v1/task/{taskId}/log</code>
-<a href="/docs/latest/api-reference/tasks-api">Tasks API</a> endpoint instead.</p>
+<a href="/docs/37.0.0/api-reference/tasks-api">Tasks API</a> endpoint instead.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-13">URL<a href="#url-13" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
<p><code>GET</code> <code>/druid/worker/v1/task/{taskId}/log</code></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="shut-down-running-task">Shut down running task<a href="#shut-down-running-task" class="hash-link" aria-label="Direct link to Shut down running task" title="Direct link to Shut down running task"></a></h3>
<p>Shuts down a running task by ID. For normal usage, you should use the <code>/druid/indexer/v1/task/{taskId}/shutdown</code>
-<a href="/docs/latest/api-reference/tasks-api">Tasks API</a> endpoint instead.</p>
+<a href="/docs/37.0.0/api-reference/tasks-api">Tasks API</a> endpoint instead.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-14">URL<a href="#url-14" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
<p><code>POST</code> <code>/druid/worker/v1/task/{taskId}/shutdown</code></p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-13">Responses<a href="#responses-13" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
@@ -245,6 +245,6 @@ keyed by the combined <code>druid.host</code> and <code>druid.port</code>.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-request-19">Sample request<a href="#sample-request-19" class="hash-link" aria-label="Direct link to Sample request" title="Direct link to Sample request"></a></h4>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">cURL</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">HTTP</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-backgro [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-19">Sample response<a href="#sample-response-19" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
-<p>A successful response to this endpoint results in an empty response body.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/latest/api-reference/lookups-api"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Lookups</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/latest/api-reference/dynamic-configuration-api" [...]
+<p>A successful response to this endpoint results in an empty response body.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/api-reference/lookups-api"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Lookups</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/37.0.0/api-reference/dynamic-configuration-api" [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/api-reference/sql-api.html/index.html b/docs/37.0.0/api-reference/sql-api.html/index.html
new file mode 100644
index 000000000..5d71e663e
--- /dev/null
+++ b/docs/37.0.0/api-reference/sql-api.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/api-reference/sql-api">
+ <link rel="canonical" href="/docs/37.0.0/api-reference/sql-api" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/api-reference/sql-api' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/api-reference/sql-api/index.html b/docs/37.0.0/api-reference/sql-api/index.html
similarity index 86%
copy from docs/latest/api-reference/sql-api/index.html
copy to docs/37.0.0/api-reference/sql-api/index.html
index cba90aca9..be660ea9e 100644
--- a/docs/latest/api-reference/sql-api/index.html
+++ b/docs/37.0.0/api-reference/sql-api/index.html
@@ -3,19 +3,19 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Druid SQL API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/api-re [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Druid SQL API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/api-re [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
This document describes the SQL language.</p></div></div>
<p>In this topic, <code>http://ROUTER_IP:ROUTER_PORT</code> is a placeholder for your Router service address and port. Replace it with the information for your deployment. For example, use <code>http://localhost:8888</code> for quickstart deployments.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="query-from-historicals">Query from Historicals<a href="#query-from-historicals" class="hash-link" aria-label="Direct link to Query from Historicals" title="Direct link to Query from Historicals"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="submit-a-query">Submit a query<a href="#submit-a-query" class="hash-link" aria-label="Direct link to Submit a query" title="Direct link to Submit a query"></a></h3>
<p>Submits a SQL-based query in the JSON or text format request body.
-Returns a JSON object with the query results and optional metadata for the results. You can also use this endpoint to query <a href="/docs/latest/querying/sql-metadata-tables">metadata tables</a>.</p>
+Returns a JSON object with the query results and optional metadata for the results. You can also use this endpoint to query <a href="/docs/37.0.0/querying/sql-metadata-tables">metadata tables</a>.</p>
<p>Each query has an associated SQL query ID. You can set this ID manually using the SQL context parameter <code>sqlQueryId</code>. If not set, Druid automatically generates <code>sqlQueryId</code> and returns it in the response header for <code>X-Druid-SQL-Query-Id</code>. Note that you need the <code>sqlQueryId</code> to <a href="#cancel-a-query">cancel a query</a>.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url">URL<a href="#url" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
<p><code>POST</code> <code>/druid/v2/sql</code></p>
@@ -25,7 +25,7 @@ If there are multiple <code>Content-Type</code> headers, the <strong>first</stro
<p>The request body takes the following properties:</p>
<ul>
<li>
-<p><code>query</code>: SQL query string. HTTP requests are permitted to include multiple <code>SET</code> statements to assign <a href="/docs/latest/querying/sql-query-context">SQL query context parameter</a> values to apply to the query statement, see <a href="/docs/latest/querying/sql#set">SET</a> for details. Context parameters set by <code>SET</code> statements take priority over values set in <code>context</code>.</p>
+<p><code>query</code>: SQL query string. HTTP requests are permitted to include multiple <code>SET</code> statements to assign <a href="/docs/37.0.0/querying/sql-query-context">SQL query context parameter</a> values to apply to the query statement, see <a href="/docs/37.0.0/querying/sql#set">SET</a> for details. Context parameters set by <code>SET</code> statements take priority over values set in <code>context</code>.</p>
</li>
<li>
<p><code>resultFormat</code>: String that indicates the format to return query results. Select one of the following formats:</p>
@@ -72,10 +72,10 @@ This format includes a single trailing newline character so you can detect a tru
</ul>
</li>
<li>
-<p><code>context</code>: JSON object containing optional <a href="/docs/latest/querying/sql-query-context">SQL query context parameters</a>, such as to set the query ID, time zone, and whether to use an approximation algorithm for distinct count. You can also set the context through the SQL SET command. For more information, see <a href="/docs/latest/querying/sql#set">Druid SQL overview</a>.</p>
+<p><code>context</code>: JSON object containing optional <a href="/docs/37.0.0/querying/sql-query-context">SQL query context parameters</a>, such as to set the query ID, time zone, and whether to use an approximation algorithm for distinct count. You can also set the context through the SQL SET command. For more information, see <a href="/docs/37.0.0/querying/sql#set">Druid SQL overview</a>.</p>
</li>
<li>
-<p><code>parameters</code>: List of query parameters for parameterized queries. Each parameter in the array should be a JSON object containing the parameter's SQL data type and parameter value. For more information on using dynamic parameters, see <a href="/docs/latest/querying/sql#dynamic-parameters">Dynamic parameters</a>. For a list of supported SQL types, see <a href="/docs/latest/querying/sql-data-types">Data types</a>.</p>
+<p><code>parameters</code>: List of query parameters for parameterized queries. Each parameter in the array should be a JSON object containing the parameter's SQL data type and parameter value. For more information on using dynamic parameters, see <a href="/docs/37.0.0/querying/sql#dynamic-parameters">Dynamic parameters</a>. For a list of supported SQL types, see <a href="/docs/37.0.0/querying/sql-data-types">Data types</a>.</p>
<p>For example:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
</li>
@@ -97,7 +97,7 @@ While the second example passes the raw query <code>SELECT 1</code> to <code>cur
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses">Responses<a href="#responses" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">200 SUCCESS</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">400 BAD REQUEST</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">500 INTERNAL SERVER ERROR</li></ul><div class="margin-top--md"><div role="tabpanel" cla [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="client-side-error-handling-and-truncated-responses">Client-side error handling and truncated responses<a href="#client-side-error-handling-and-truncated-responses" class="hash-link" aria-label="Direct link to Client-side error handling and truncated responses" title="Direct link to Client-side error handling and truncated responses"></a></h4>
-<p>Druid reports errors that occur before the response body is sent as JSON with an HTTP 500 status code. The errors are reported using the same format as <a href="/docs/latest/querying/#query-errors">native Druid query errors</a>.
+<p>Druid reports errors that occur before the response body is sent as JSON with an HTTP 500 status code. The errors are reported using the same format as <a href="/docs/37.0.0/querying/#query-errors">native Druid query errors</a>.
If an error occurs while Druid is sending the response body, the server handling the request stops the response midstream and logs an error.</p>
<p>This means that when you call the SQL API, you must properly handle response truncation.
For <code>object</code> and <code>array</code> formats, truncated responses are invalid JSON.
@@ -113,7 +113,7 @@ For line-oriented formats, Druid includes a newline character as the final chara
<li>Returns descriptors for <code>header</code>, <code>typesHeader</code>, and <code>sqlTypesHeader</code>.</li>
</ul>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">cURL</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">HTTP</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-backgro [...]
-<p>You can also specify query-level context parameters directly within the SQL query string using the <code>SET</code> command. For more details, see <a href="/docs/latest/querying/sql#set">SET</a>.</p>
+<p>You can also specify query-level context parameters directly within the SQL query string using the <code>SET</code> command. For more details, see <a href="/docs/37.0.0/querying/sql#set">SET</a>.</p>
<p>The following request body is functionally equivalent to the previous example and uses SET instead of the <code>context</code> parameter:</p>
<div class="language-JSON language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></sp [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response">Sample response<a href="#sample-response" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
@@ -140,7 +140,7 @@ The examples includes the first row of results, where the value of <code>user</c
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="query-from-deep-storage">Query from deep storage<a href="#query-from-deep-storage" class="hash-link" aria-label="Direct link to Query from deep storage" title="Direct link to Query from deep storage"></a></h2>
<p>You can use the <code>sql/statements</code> endpoint to query segments that exist only in deep storage and are not loaded onto your Historical processes as determined by your load rules.</p>
<p>Note that at least one segment of a datasource must be available on a Historical process so that the Broker can plan your query. A quick way to check if this is true is whether or not a datasource is visible in the Druid console.</p>
-<p>For more information, see <a href="/docs/latest/querying/query-deep-storage">Query from deep storage</a>.</p>
+<p>For more information, see <a href="/docs/37.0.0/querying/query-deep-storage">Query from deep storage</a>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="submit-a-query-1">Submit a query<a href="#submit-a-query-1" class="hash-link" aria-label="Direct link to Submit a query" title="Direct link to Submit a query"></a></h3>
<p>Submit a query for data stored in deep storage. Any data ingested into Druid is placed into deep storage. The query is contained in the "query" field in the JSON object within the request payload.</p>
<p>Note that at least part of a datasource must be available on a Historical process so that Druid can plan your query and only the user who submits a query can see the results.</p>
@@ -151,10 +151,10 @@ The examples includes the first row of results, where the value of <code>user</c
<p>Keep the following in mind when submitting queries to the <code>sql/statements</code> endpoint:</p>
<ul>
<li>
-<p>Apart from the context parameters mentioned <a href="/docs/latest/multi-stage-query/reference#context-parameters">here</a> there are additional context parameters for <code>sql/statements</code> specifically:</p>
+<p>Apart from the context parameters mentioned <a href="/docs/37.0.0/multi-stage-query/reference#context-parameters">here</a> there are additional context parameters for <code>sql/statements</code> specifically:</p>
<ul>
<li><code>executionMode</code> determines how query results are fetched. Druid currently only supports <code>ASYNC</code>. You must manually retrieve your results after the query completes.</li>
-<li><code>selectDestination</code> determines where final results get written. By default, results are written to task reports. Set this parameter to <code>durableStorage</code> to instruct Druid to write the results from SELECT queries to durable storage, which allows you to fetch larger result sets. For result sets with more than 3000 rows, it is highly recommended to use <code>durableStorage</code>. Note that this requires you to have <a href="/docs/latest/operations/durable-storage"> [...]
+<li><code>selectDestination</code> determines where final results get written. By default, results are written to task reports. Set this parameter to <code>durableStorage</code> to instruct Druid to write the results from SELECT queries to durable storage, which allows you to fetch larger result sets. For result sets with more than 3000 rows, it is highly recommended to use <code>durableStorage</code>. Note that this requires you to have <a href="/docs/37.0.0/operations/durable-storage"> [...]
</ul>
</li>
</ul>
@@ -201,7 +201,7 @@ The examples includes the first row of results, where the value of <code>user</c
<p>The following example retrieves the status of a query with specified ID <code>query-9b93f6f7-ab0e-48f5-986a-3520f84f0804</code>.</p>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">cURL</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">HTTP</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-backgro [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-3">Sample response<a href="#sample-response-3" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
-<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
+<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-query-results">Get query results<a href="#get-query-results" class="hash-link" aria-label="Direct link to Get query results" title="Direct link to Get query results"></a></h3>
<p>Retrieves results for completed queries. Results are separated into pages, so you can use the optional <code>page</code> parameter to refine the results you get. Druid returns information about the composition of each page and its page number (<code>id</code>). For information about pages, see <a href="#get-query-status">Get query status</a>.</p>
<p>If a page number isn't passed, all results are returned sequentially in the same response. If you have large result sets, you may encounter timeouts based on the value configured for <code>druid.router.http.readTimeout</code>.</p>
@@ -248,6 +248,6 @@ The examples includes the first row of results, where the value of <code>user</c
<p>The following example cancels a query with specified ID <code>query-945c9633-2fa2-49ab-80ae-8221c38c024da</code>.</p>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">cURL</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">HTTP</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-backgro [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-5">Sample response<a href="#sample-response-5" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
-<p>A successful request returns an HTTP <code>202 ACCEPTED</code> message code and an empty response body.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/latest/api-reference/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Overview</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/latest/api-reference/sql-in [...]
+<p>A successful request returns an HTTP <code>202 ACCEPTED</code> message code and an empty response body.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/api-reference/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Overview</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/37.0.0/api-reference/sql-in [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/api-reference/sql-ingestion-api.html/index.html b/docs/37.0.0/api-reference/sql-ingestion-api.html/index.html
new file mode 100644
index 000000000..f37cceac5
--- /dev/null
+++ b/docs/37.0.0/api-reference/sql-ingestion-api.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/api-reference/sql-ingestion-api">
+ <link rel="canonical" href="/docs/37.0.0/api-reference/sql-ingestion-api" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/api-reference/sql-ingestion-api' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/api-reference/sql-ingestion-api/index.html b/docs/37.0.0/api-reference/sql-ingestion-api/index.html
similarity index 98%
copy from docs/latest/api-reference/sql-ingestion-api/index.html
copy to docs/37.0.0/api-reference/sql-ingestion-api/index.html
index 5efe425d1..c219bd86e 100644
--- a/docs/latest/api-reference/sql-ingestion-api/index.html
+++ b/docs/37.0.0/api-reference/sql-ingestion-api/index.html
@@ -3,29 +3,29 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">SQL-based ingestion API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/lat [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">SQL-based ingestion API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37. [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
-extension, new in Druid 24.0. Refer to the <a href="/docs/latest/ingestion/#batch">ingestion methods</a> table to determine which
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+extension, new in Druid 24.0. Refer to the <a href="/docs/37.0.0/ingestion/#batch">ingestion methods</a> table to determine which
ingestion method is right for you.</p></div></div>
<p>The <strong>Query</strong> view in the web console provides a friendly experience for the multi-stage query task engine (MSQ task engine) and multi-stage query architecture. We recommend using the web console if you don't need a programmatic interface.</p>
<p>When using the API for the MSQ task engine, the action you want to take determines the endpoint you use:</p>
<ul>
<li><code>/druid/v2/sql/task</code>: Submit a query for ingestion.</li>
-<li><code>/druid/indexer/v1/task</code>: Interact with a query, including getting its status or details, or canceling the query. This page describes a few of the Overlord Task APIs that you can use with the MSQ task engine. For information about Druid APIs, see the <a href="/docs/latest/ingestion/tasks">API reference for Druid</a>.</li>
+<li><code>/druid/indexer/v1/task</code>: Interact with a query, including getting its status or details, or canceling the query. This page describes a few of the Overlord Task APIs that you can use with the MSQ task engine. For information about Druid APIs, see the <a href="/docs/37.0.0/ingestion/tasks">API reference for Druid</a>.</li>
</ul>
<p>In this topic, <code>http://ROUTER_IP:ROUTER_PORT</code> is a placeholder for your Router service address and port. Replace it with the information for your deployment. For example, use <code>http://localhost:8888</code> for quickstart deployments.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="submit-a-query">Submit a query<a href="#submit-a-query" class="hash-link" aria-label="Direct link to Submit a query" title="Direct link to Submit a query"></a></h2>
<p>Submits queries to the MSQ task engine.</p>
<p>The <code>/druid/v2/sql/task</code> endpoint accepts the following:</p>
<ul>
-<li><a href="/docs/latest/api-reference/sql-api#request-body">SQL requests in the JSON-over-HTTP form</a> using the
+<li><a href="/docs/37.0.0/api-reference/sql-api#request-body">SQL requests in the JSON-over-HTTP form</a> using the
<code>query</code>, <code>context</code>, and <code>parameters</code> fields. The endpoint ignores the <code>resultFormat</code>, <code>header</code>, <code>typesHeader</code>, and <code>sqlTypesHeader</code> fields.</li>
-<li><a href="/docs/latest/multi-stage-query/reference#insert">INSERT</a> and <a href="/docs/latest/multi-stage-query/reference#replace">REPLACE</a> statements.</li>
+<li><a href="/docs/37.0.0/multi-stage-query/reference#insert">INSERT</a> and <a href="/docs/37.0.0/multi-stage-query/reference#replace">REPLACE</a> statements.</li>
<li>SELECT queries (experimental feature). SELECT query results are collected from workers by the controller, and written into the <a href="#get-the-report-for-a-query-task">task report</a> as an array of arrays. The behavior and result format of plain SELECT queries (without INSERT or REPLACE) is subject to change.</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="url">URL<a href="#url" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h3>
@@ -38,13 +38,13 @@ ingestion method is right for you.</p></div></div>
The example specifies two query context parameters:</p>
<ul>
<li><code>maxNumTasks=3</code>: Limits the maximum number of parallel tasks to 3.</li>
-<li><code>finalizeAggregations=false</code>: Ensures that Druid saves the aggregation's intermediate type during ingestion. For more information, see <a href="/docs/latest/multi-stage-query/concepts#rollup">Rollup</a>.</li>
+<li><code>finalizeAggregations=false</code>: Ensures that Druid saves the aggregation's intermediate type during ingestion. For more information, see <a href="/docs/37.0.0/multi-stage-query/concepts#rollup">Rollup</a>.</li>
</ul>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">HTTP</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">cURL</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="languag [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response">Sample response<a href="#sample-response" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h3>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
<p><strong>Response fields</strong></p>
-<table><thead><tr><th>Field</th><th>Description</th></tr></thead><tbody><tr><td><code>taskId</code></td><td>Controller task ID. You can use Druid's standard <a href="/docs/latest/api-reference/tasks-api">Tasks API</a> to interact with this controller task.</td></tr><tr><td><code>state</code></td><td>Initial state for the query.</td></tr></tbody></table>
+<table><thead><tr><th>Field</th><th>Description</th></tr></thead><tbody><tr><td><code>taskId</code></td><td>Controller task ID. You can use Druid's standard <a href="/docs/37.0.0/api-reference/tasks-api">Tasks API</a> to interact with this controller task.</td></tr><tr><td><code>state</code></td><td>Initial state for the query.</td></tr></tbody></table>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="get-the-status-for-a-query-task">Get the status for a query task<a href="#get-the-status-for-a-query-task" class="hash-link" aria-label="Direct link to Get the status for a query task" title="Direct link to Get the status for a query task"></a></h2>
<p>Retrieves the status of a query task. It returns a JSON object with the task's status code, runner status, task type, datasource, and other relevant metadata.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="url-1">URL<a href="#url-1" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h3>
@@ -83,7 +83,7 @@ SELECT queries (without INSERT or REPLACE) is subject to change.</li>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
<a name="report-response-fields"></a>
<p>The following table describes the response fields when you retrieve a report for a MSQ task engine using the <code>/druid/indexer/v1/task/{taskId}/reports</code> endpoint:</p>
-<table><thead><tr><th>Field</th><th>Description</th></tr></thead><tbody><tr><td><code>multiStageQuery.taskId</code></td><td>Controller task ID.</td></tr><tr><td><code>multiStageQuery.payload.status</code></td><td>Query status container.</td></tr><tr><td><code>multiStageQuery.payload.status.status</code></td><td>RUNNING, SUCCESS, or FAILED.</td></tr><tr><td><code>multiStageQuery.payload.status.startTime</code></td><td>Start time of the query in ISO format. Only present if the query has st [...]
+<table><thead><tr><th>Field</th><th>Description</th></tr></thead><tbody><tr><td><code>multiStageQuery.taskId</code></td><td>Controller task ID.</td></tr><tr><td><code>multiStageQuery.payload.status</code></td><td>Query status container.</td></tr><tr><td><code>multiStageQuery.payload.status.status</code></td><td>RUNNING, SUCCESS, or FAILED.</td></tr><tr><td><code>multiStageQuery.payload.status.startTime</code></td><td>Start time of the query in ISO format. Only present if the query has st [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="cancel-a-query-task">Cancel a query task<a href="#cancel-a-query-task" class="hash-link" aria-label="Direct link to Cancel a query task" title="Direct link to Cancel a query task"></a></h2>
<p>Cancels a query task.
Returns a JSON object with the ID of the task that was canceled successfully.</p>
@@ -97,6 +97,6 @@ Returns a JSON object with the ID of the task that was canceled successfully.</p
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">HTTP</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">cURL</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="languag [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-3">Sample response<a href="#sample-response-3" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h3>
<p>The response shows the ID of the task that was canceled.</p>
-<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
+<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/api-reference/sql-jdbc.html/index.html b/docs/37.0.0/api-reference/sql-jdbc.html/index.html
new file mode 100644
index 000000000..383122bf9
--- /dev/null
+++ b/docs/37.0.0/api-reference/sql-jdbc.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/api-reference/sql-jdbc">
+ <link rel="canonical" href="/docs/37.0.0/api-reference/sql-jdbc" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/api-reference/sql-jdbc' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/api-reference/sql-jdbc/index.html b/docs/37.0.0/api-reference/sql-jdbc/index.html
similarity index 94%
copy from docs/latest/api-reference/sql-jdbc/index.html
copy to docs/37.0.0/api-reference/sql-jdbc/index.html
index d20c7b70d..191c70b1c 100644
--- a/docs/latest/api-reference/sql-jdbc/index.html
+++ b/docs/37.0.0/api-reference/sql-jdbc/index.html
@@ -3,15 +3,15 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">SQL JDBC driver API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/ [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">SQL JDBC driver API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/ [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
This document describes the SQL language.</p></div></div>
-<p>You can make <a href="/docs/latest/querying/sql">Druid SQL</a> queries using the <a href="https://calcite.apache.org/avatica/downloads/" target="_blank" rel="noopener noreferrer">Avatica JDBC driver</a>.
+<p>You can make <a href="/docs/37.0.0/querying/sql">Druid SQL</a> queries using the <a href="https://calcite.apache.org/avatica/downloads/" target="_blank" rel="noopener noreferrer">Avatica JDBC driver</a>.
We recommend using Avatica JDBC driver version 1.23.0 or later. Note that starting with Avatica 1.21.0, you may need to set the <a href="https://calcite.apache.org/avatica/docs/client_reference.html#transparent_reconnection" target="_blank" rel="noopener noreferrer"><code>transparent_reconnection</code></a> property to <code>true</code> if you notice intermittent query failures.</p>
<p>Once you've downloaded the Avatica client jar, add it to your classpath.</p>
<p>Example connection string:</p>
@@ -24,7 +24,7 @@ For more information, see <a href="#connection-stickiness">Connection stickiness
or if a Broker is restarted.</p>
<p>Set <code>serialization</code> to <code>protobuf</code> if using the protobuf endpoint.</p>
<p>Note that as of the time of this writing, Avatica 1.23.0, the latest version, does not support passing
-<a href="/docs/latest/querying/sql-query-context">connection context parameters</a> from the JDBC connection string to Druid. These context parameters
+<a href="/docs/37.0.0/querying/sql-query-context">connection context parameters</a> from the JDBC connection string to Druid. These context parameters
must be passed using a <code>Properties</code> object instead. Refer to the Java code below for an example.</p>
<p>Example Java code:</p>
<div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">// Connect to /druid/v2/sql/avatica/ on your Broker.</span><br></span><span class="token-li [...]
@@ -34,16 +34,16 @@ improvements for larger result sets. To use it apply the following connection UR
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">String url = "jdbc:avatica:remote:url=http://localhost:8888/druid/v2/sql/avatica-protobuf/;transpare [...]
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>The protobuf endpoint is also kno [...]
<p>Table metadata is available over JDBC using <code>connection.getMetaData()</code> or by querying the
-<a href="/docs/latest/querying/sql-metadata-tables">INFORMATION_SCHEMA tables</a>. For an example of this, see <a href="#get-the-metadata-for-a-datasource">Get the metadata for a datasource</a>.</p>
+<a href="/docs/37.0.0/querying/sql-metadata-tables">INFORMATION_SCHEMA tables</a>. For an example of this, see <a href="#get-the-metadata-for-a-datasource">Get the metadata for a datasource</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="connection-stickiness">Connection stickiness<a href="#connection-stickiness" class="hash-link" aria-label="Direct link to Connection stickiness" title="Direct link to Connection stickiness"></a></h2>
<p>Druid's JDBC server does not share connection state between Brokers. This means that if you're using JDBC and have
multiple Druid Brokers, you should either connect to a specific Broker or use a load balancer with sticky sessions
enabled. The Druid Router process provides connection stickiness when balancing JDBC requests, and can be used to achieve
the necessary stickiness even with a normal non-sticky load balancer. Please see the
-<a href="/docs/latest/design/router">Router</a> documentation for more details.</p>
-<p>Note that the non-JDBC <a href="/docs/latest/api-reference/sql-api#submit-a-query">JSON over HTTP</a> API is stateless and does not require stickiness.</p>
+<a href="/docs/37.0.0/design/router">Router</a> documentation for more details.</p>
+<p>Note that the non-JDBC <a href="/docs/37.0.0/api-reference/sql-api#submit-a-query">JSON over HTTP</a> API is stateless and does not require stickiness.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="dynamic-parameters">Dynamic parameters<a href="#dynamic-parameters" class="hash-link" aria-label="Direct link to Dynamic parameters" title="Direct link to Dynamic parameters"></a></h2>
-<p>You can use <a href="/docs/latest/querying/sql#dynamic-parameters">parameterized queries</a> in JDBC code, as in this example:</p>
+<p>You can use <a href="/docs/37.0.0/querying/sql#dynamic-parameters">parameterized queries</a> in JDBC code, as in this example:</p>
<div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">PreparedStatement statement = connection.prepareStatement("SELECT COUNT(*) AS cnt FROM [...]
<p>Sample code where dynamic parameters replace arrays using STRING_TO_ARRAY:</p>
<div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">PreparedStatement statement = connection.prepareStatement("select l1 from numfoo where [...]
@@ -61,23 +61,23 @@ the necessary stickiness even with a normal non-sticky load balancer. Please see
<p>Make sure you meet the following requirements before trying these examples:</p>
<ul>
<li>
-<p>A supported <a href="/docs/latest/operations/java">Java version</a></p>
+<p>A supported <a href="/docs/37.0.0/operations/java">Java version</a></p>
</li>
<li>
<p><a href="https://calcite.apache.org/avatica/downloads/" target="_blank" rel="noopener noreferrer">Avatica JDBC driver</a>. You can add the JAR to your <code>CLASSPATH</code> directly or manage it externally, such as through Maven and a <code>pom.xml</code> file.</p>
</li>
<li>
-<p>An available Druid instance. You can use the <code>micro-quickstart</code> configuration described in <a href="/docs/latest/tutorials/">Quickstart (local)</a>. The examples assume that you are using the quickstart, so no authentication or authorization is expected unless explicitly mentioned.</p>
+<p>An available Druid instance. You can use the <code>micro-quickstart</code> configuration described in <a href="/docs/37.0.0/tutorials/">Quickstart (local)</a>. The examples assume that you are using the quickstart, so no authentication or authorization is expected unless explicitly mentioned.</p>
</li>
<li>
<p>The example <code>wikipedia</code> datasource from the quickstart is loaded on your Druid instance. If you have a different datasource loaded, you can still try these examples. You'll have to update the table name and column names to match your datasource.</p>
</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-the-metadata-for-a-datasource">Get the metadata for a datasource<a href="#get-the-metadata-for-a-datasource" class="hash-link" aria-label="Direct link to Get the metadata for a datasource" title="Direct link to Get the metadata for a datasource"></a></h3>
-<p>Metadata, such as column names, is available either through the <a href="/docs/latest/querying/sql-metadata-tables"><code>INFORMATION_SCHEMA</code></a> table or through <code>connection.getMetaData()</code>. The following example uses the <code>INFORMATION_SCHEMA</code> table to retrieve and print the list of column names for the <code>wikipedia</code> datasource that you loaded during a previous tutorial.</p>
+<p>Metadata, such as column names, is available either through the <a href="/docs/37.0.0/querying/sql-metadata-tables"><code>INFORMATION_SCHEMA</code></a> table or through <code>connection.getMetaData()</code>. The following example uses the <code>INFORMATION_SCHEMA</code> table to retrieve and print the list of column names for the <code>wikipedia</code> datasource that you loaded during a previous tutorial.</p>
<div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">import java.sql.*;</span><br></span><span class="token-line" style="color:#bfc7d5"><span cl [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="query-data">Query data<a href="#query-data" class="hash-link" aria-label="Direct link to Query data" title="Direct link to Query data"></a></h3>
-<p>Now that you know what columns are available, you can start querying the data. The following example queries the datasource named <code>wikipedia</code> for the timestamps and comments from Japan. It also sets the <a href="/docs/latest/querying/sql-query-context">query context parameter</a> <code>sqlTimeZone</code>. Optionally, you can also parameterize queries by using <a href="#dynamic-parameters">dynamic parameters</a>.</p>
-<div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">import java.sql.*;</span><br></span><span class="token-line" style="color:#bfc7d5"><span cl [...]
+<p>Now that you know what columns are available, you can start querying the data. The following example queries the datasource named <code>wikipedia</code> for the timestamps and comments from Japan. It also sets the <a href="/docs/37.0.0/querying/sql-query-context">query context parameter</a> <code>sqlTimeZone</code>. Optionally, you can also parameterize queries by using <a href="#dynamic-parameters">dynamic parameters</a>.</p>
+<div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">import java.sql.*;</span><br></span><span class="token-line" style="color:#bfc7d5"><span cl [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/api-reference/supervisor-api.html/index.html b/docs/37.0.0/api-reference/supervisor-api.html/index.html
new file mode 100644
index 000000000..48138d35c
--- /dev/null
+++ b/docs/37.0.0/api-reference/supervisor-api.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/api-reference/supervisor-api">
+ <link rel="canonical" href="/docs/37.0.0/api-reference/supervisor-api" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/api-reference/supervisor-api' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/api-reference/supervisor-api/index.html b/docs/37.0.0/api-reference/supervisor-api/index.html
similarity index 97%
copy from docs/latest/api-reference/supervisor-api/index.html
copy to docs/37.0.0/api-reference/supervisor-api/index.html
index 3c4de824a..64ea71740 100644
--- a/docs/latest/api-reference/supervisor-api/index.html
+++ b/docs/37.0.0/api-reference/supervisor-api/index.html
@@ -3,18 +3,18 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Supervisor API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/api-r [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Supervisor API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/api-r [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
The topic uses the Apache Kafka term offset to refer to the identifier for records in a partition. If you are using Amazon Kinesis, the equivalent is sequence number.</p>
<p>In this topic, <code>http://ROUTER_IP:ROUTER_PORT</code> is a placeholder for your Router service address and port. Replace it with the information for your deployment. For example, use <code>http://localhost:8888</code> for quickstart deployments.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="supervisor-information">Supervisor information<a href="#supervisor-information" class="hash-link" aria-label="Direct link to Supervisor information" title="Direct link to Supervisor information"></a></h2>
<p>The following table lists the properties of a supervisor object:</p>
-<table><thead><tr><th>Property</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code>id</code></td><td>String</td><td>Unique identifier.</td></tr><tr><td><code>state</code></td><td>String</td><td>Generic state of the supervisor. Available states:<code>UNHEALTHY_SUPERVISOR</code>, <code>UNHEALTHY_TASKS</code>, <code>PENDING</code>, <code>RUNNING</code>, <code>SUSPENDED</code>, <code>STOPPING</code>. See <a href="/docs/latest/ingestion/supervisor#status-report">Supervisor [...]
+<table><thead><tr><th>Property</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code>id</code></td><td>String</td><td>Unique identifier.</td></tr><tr><td><code>state</code></td><td>String</td><td>Generic state of the supervisor. Available states:<code>UNHEALTHY_SUPERVISOR</code>, <code>UNHEALTHY_TASKS</code>, <code>PENDING</code>, <code>RUNNING</code>, <code>SUSPENDED</code>, <code>STOPPING</code>. See <a href="/docs/37.0.0/ingestion/supervisor#status-report">Supervisor [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-an-array-of-active-supervisor-ids">Get an array of active supervisor IDs<a href="#get-an-array-of-active-supervisor-ids" class="hash-link" aria-label="Direct link to Get an array of active supervisor IDs" title="Direct link to Get an array of active supervisor IDs"></a></h3>
<p>Returns an array of strings representing the names of active supervisors. If there are no active supervisors, it returns an empty array.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url">URL<a href="#url" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
@@ -62,7 +62,7 @@ The topic uses the Apache Kafka term offset to refer to the identifier for recor
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-supervisor-status">Get supervisor status<a href="#get-supervisor-status" class="hash-link" aria-label="Direct link to Get supervisor status" title="Direct link to Get supervisor status"></a></h3>
<p>Retrieves the current status report for a single supervisor. The report contains the state of the supervisor tasks and an array of recently thrown exceptions.</p>
-<p>For additional information about the status report, see <a href="/docs/latest/ingestion/supervisor#status-report">Supervisor reference</a>.</p>
+<p>For additional information about the status report, see <a href="/docs/37.0.0/ingestion/supervisor#status-report">Supervisor reference</a>.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-4">URL<a href="#url-4" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
<p><code>GET</code> <code>/druid/indexer/v1/supervisor/{supervisorId}/status</code></p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-4">Responses<a href="#responses-4" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
@@ -86,7 +86,18 @@ The topic uses the Apache Kafka term offset to refer to the identifier for recor
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-5">Sample response<a href="#sample-response-5" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-supervisor-ingestion-stats">Get supervisor ingestion stats<a href="#get-supervisor-ingestion-stats" class="hash-link" aria-label="Direct link to Get supervisor ingestion stats" title="Direct link to Get supervisor ingestion stats"></a></h3>
-<p>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. See <a href="/docs/latest/ingestion/tasks#row-stats">Row stats</a> for more information.</p>
+<p>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. See <a href="/docs/37.0.0/ingestion/tasks#row-stats">Row stats</a> for more information.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="response-schema">Response schema<a href="#response-schema" class="hash-link" aria-label="Direct link to Response schema" title="Direct link to Response schema"></a></h4>
+<p>The response is a nested map of task group IDs to task IDs to row stats:</p>
+<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
+<ul>
+<li><strong>taskGroupId</strong> (string): Supervisor task group identifier</li>
+<li><strong>taskId</strong> (string): Druid indexing task identifier within that group</li>
+<li><strong>movingAverages</strong> / <strong>totals</strong>: Per-task row stats; see <a href="/docs/37.0.0/ingestion/tasks#row-stats">Row stats</a> for field definitions</li>
+</ul>
+<p>For example, a supervisor with two task groups:</p>
+<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
+<p>In this example, <code>"0"</code> and <code>"1"</code> are task group IDs, and <code>index_kafka_my_datasource_abc123</code> and <code>index_kafka_my_datasource_def456</code> are task IDs.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-6">URL<a href="#url-6" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
<p><code>GET</code> <code>/druid/indexer/v1/supervisor/{supervisorId}/stats</code></p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-6">Responses<a href="#responses-6" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
@@ -96,7 +107,9 @@ The topic uses the Apache Kafka term offset to refer to the identifier for recor
<p>The following example shows how to retrieve the current ingestion row counters for a supervisor with the name <code>custom_data</code>.</p>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">cURL</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">HTTP</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-backgro [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-6">Sample response<a href="#sample-response-6" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
+<p>In the example below, the outer key (<code>"0"</code>) is a <strong>task group ID</strong>; the inner key (e.g., <code>index_kafka_custom_data_881d621078f6b7c_ccplchbi</code>) is a <strong>task ID</strong>.</p>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
+<p><strong>For automation clients:</strong> If you need to map task IDs to group IDs (for handoff, draining, or observability), use the <code>/stats</code> response keys directly instead of re-deriving group IDs from partition data. This avoids coupling to internal supervisor assignment logic.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="audit-history">Audit history<a href="#audit-history" class="hash-link" aria-label="Direct link to Audit history" title="Direct link to Audit history"></a></h2>
<p>An audit history provides a comprehensive log of events, including supervisor configuration, creation, suspension, and modification history.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-audit-history-for-all-supervisors">Get audit history for all supervisors<a href="#get-audit-history-for-all-supervisors" class="hash-link" aria-label="Direct link to Get audit history for all supervisors" title="Direct link to Get audit history for all supervisors"></a></h3>
@@ -137,9 +150,9 @@ The topic uses the Apache Kafka term offset to refer to the identifier for recor
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="manage-supervisors">Manage supervisors<a href="#manage-supervisors" class="hash-link" aria-label="Direct link to Manage supervisors" title="Direct link to Manage supervisors"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="create-or-update-a-supervisor">Create or update a supervisor<a href="#create-or-update-a-supervisor" class="hash-link" aria-label="Direct link to Create or update a supervisor" title="Direct link to Create or update a supervisor"></a></h3>
<p>Creates a new supervisor spec or updates an existing one with new configuration and schema information. When updating a supervisor spec, the datasource must remain the same as the previous supervisor.</p>
-<p>You can define a supervisor spec for <a href="/docs/latest/ingestion/kafka-ingestion">Apache Kafka</a> or <a href="/docs/latest/ingestion/kinesis-ingestion">Amazon Kinesis</a> streaming ingestion methods.</p>
+<p>You can define a supervisor spec for <a href="/docs/37.0.0/ingestion/kafka-ingestion">Apache Kafka</a> or <a href="/docs/37.0.0/ingestion/kinesis-ingestion">Amazon Kinesis</a> streaming ingestion methods.</p>
<p>The following table lists the properties of a supervisor spec:</p>
-<table><thead><tr><th>Property</th><th>Type</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>type</code></td><td>String</td><td>The supervisor type. One of<code>kafka</code> or <code>kinesis</code>.</td><td>Yes</td></tr><tr><td><code>spec</code></td><td>Object</td><td>The container object for the supervisor configuration.</td><td>Yes</td></tr><tr><td><code>ioConfig</code></td><td>Object</td><td>The I/O configuration object to define the connection and I/O-relate [...]
+<table><thead><tr><th>Property</th><th>Type</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>type</code></td><td>String</td><td>The supervisor type. One of<code>kafka</code> or <code>kinesis</code>.</td><td>Yes</td></tr><tr><td><code>spec</code></td><td>Object</td><td>The container object for the supervisor configuration.</td><td>Yes</td></tr><tr><td><code>ioConfig</code></td><td>Object</td><td>The I/O configuration object to define the connection and I/O-relate [...]
<p>When you call this endpoint on an existing supervisor, the running supervisor signals its tasks to stop reading and begin publishing, exiting itself. Druid then uses the provided configuration from the request body to create a new supervisor. Druid submits a new schema while retaining existing publishing tasks and starts new tasks at the previous task offsets.
This way, you can apply configuration changes without a pause in ingestion.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-9">URL<a href="#url-9" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
@@ -281,6 +294,6 @@ when the supervisor's tasks restart, they resume reading from <code>{"
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="shut-down-a-supervisor">Shut down a supervisor<a href="#shut-down-a-supervisor" class="hash-link" aria-label="Direct link to Shut down a supervisor" title="Direct link to Shut down a supervisor"></a></h3>
<p>Shuts down a supervisor. This endpoint is deprecated and will be removed in future releases. Use the equivalent <a href="#terminate-a-supervisor">terminate</a> endpoint instead.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-19">URL<a href="#url-19" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
-<p><code>POST</code> <code>/druid/indexer/v1/supervisor/{supervisorId}/shutdown</code></p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/latest/api-reference/tasks-api"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Tasks</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/latest/api-reference/retention-rules-api" [...]
+<p><code>POST</code> <code>/druid/indexer/v1/supervisor/{supervisorId}/shutdown</code></p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/api-reference/tasks-api"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Tasks</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/37.0.0/api-reference/retention-rules-api" [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/api-reference/tasks-api.html/index.html b/docs/37.0.0/api-reference/tasks-api.html/index.html
new file mode 100644
index 000000000..47e4868d6
--- /dev/null
+++ b/docs/37.0.0/api-reference/tasks-api.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/api-reference/tasks-api">
+ <link rel="canonical" href="/docs/37.0.0/api-reference/tasks-api" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/api-reference/tasks-api' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/api-reference/tasks-api/index.html b/docs/37.0.0/api-reference/tasks-api/index.html
similarity index 99%
copy from docs/latest/api-reference/tasks-api/index.html
copy to docs/37.0.0/api-reference/tasks-api/index.html
index 029604566..2c50e90c8 100644
--- a/docs/latest/api-reference/tasks-api/index.html
+++ b/docs/37.0.0/api-reference/tasks-api/index.html
@@ -3,22 +3,22 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Tasks API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/api-refere [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Tasks API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/api-refere [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
<p>In this topic, <code>http://ROUTER_IP:ROUTER_PORT</code> is a placeholder for the Router service address and port. For example, on the quickstart configuration, use <code>http://localhost:8888</code>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="task-information-and-retrieval">Task information and retrieval<a href="#task-information-and-retrieval" class="hash-link" aria-label="Direct link to Task information and retrieval" title="Direct link to Task information and retrieval"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-an-array-of-tasks">Get an array of tasks<a href="#get-an-array-of-tasks" class="hash-link" aria-label="Direct link to Get an array of tasks" title="Direct link to Get an array of tasks"></a></h3>
-<p>Retrieves an array of all tasks in the Druid cluster. Each task object includes information on its ID, status, associated datasource, and other metadata. For definitions of the response properties, see the <a href="/docs/latest/querying/sql-metadata-tables#tasks-table">Tasks table</a>.</p>
+<p>Retrieves an array of all tasks in the Druid cluster. Each task object includes information on its ID, status, associated datasource, and other metadata. For definitions of the response properties, see the <a href="/docs/37.0.0/querying/sql-metadata-tables#tasks-table">Tasks table</a>.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url">URL<a href="#url" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
<p><code>GET</code> <code>/druid/indexer/v1/tasks</code></p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="query-parameters">Query parameters<a href="#query-parameters" class="hash-link" aria-label="Direct link to Query parameters" title="Direct link to Query parameters"></a></h4>
<p>The endpoint supports a set of optional query parameters to filter results.</p>
-<table><thead><tr><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code>state</code></td><td>String</td><td>Filter list of tasks by task state, valid options are <code>running</code>, <code>complete</code>, <code>waiting</code>, and <code>pending</code>.</td></tr><tr><td><code>datasource</code></td><td>String</td><td>Return tasks filtered by Druid datasource.</td></tr><tr><td><code>createdTimeInterval</code></td><td>String (ISO-8601)</td><td>Return tasks cr [...]
+<table><thead><tr><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code>state</code></td><td>String</td><td>Filter list of tasks by task state, valid options are <code>running</code>, <code>complete</code>, <code>waiting</code>, and <code>pending</code>.</td></tr><tr><td><code>datasource</code></td><td>String</td><td>Return tasks filtered by Druid datasource.</td></tr><tr><td><code>createdTimeInterval</code></td><td>String (ISO-8601)</td><td>Return tasks cr [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses">Responses<a href="#responses" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">200 SUCCESS</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">400 BAD REQUEST</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">500 SERVER ERROR</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabIt [...]
<hr>
@@ -35,12 +35,12 @@
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response">Sample response<a href="#sample-response" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-an-array-of-complete-tasks">Get an array of complete tasks<a href="#get-an-array-of-complete-tasks" class="hash-link" aria-label="Direct link to Get an array of complete tasks" title="Direct link to Get an array of complete tasks"></a></h3>
-<p>Retrieves an array of completed tasks in the Druid cluster. This is functionally equivalent to <code>/druid/indexer/v1/tasks?state=complete</code>. For definitions of the response properties, see the <a href="/docs/latest/querying/sql-metadata-tables#tasks-table">Tasks table</a>.</p>
+<p>Retrieves an array of completed tasks in the Druid cluster. This is functionally equivalent to <code>/druid/indexer/v1/tasks?state=complete</code>. For definitions of the response properties, see the <a href="/docs/37.0.0/querying/sql-metadata-tables#tasks-table">Tasks table</a>.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-1">URL<a href="#url-1" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
<p><code>GET</code> <code>/druid/indexer/v1/completeTasks</code></p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="query-parameters-1">Query parameters<a href="#query-parameters-1" class="hash-link" aria-label="Direct link to Query parameters" title="Direct link to Query parameters"></a></h4>
<p>The endpoint supports a set of optional query parameters to filter results.</p>
-<table><thead><tr><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code>datasource</code></td><td>String</td><td>Return tasks filtered by Druid datasource.</td></tr><tr><td><code>createdTimeInterval</code></td><td>String (ISO-8601)</td><td>Return tasks created within the specified interval. The interval string should be delimited by <code>_</code> instead of <code>/</code>. For example, <code>2023-06-27_2023-06-28</code>.</td></tr><tr><td><code>max</code></ [...]
+<table><thead><tr><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code>datasource</code></td><td>String</td><td>Return tasks filtered by Druid datasource.</td></tr><tr><td><code>createdTimeInterval</code></td><td>String (ISO-8601)</td><td>Return tasks created within the specified interval. The interval string should be delimited by <code>_</code> instead of <code>/</code>. For example, <code>2023-06-27_2023-06-28</code>.</td></tr><tr><td><code>max</code></ [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-1">Responses<a href="#responses-1" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">200 SUCCESS</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">404 NOT FOUND</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><br><p><em>Successfully retrieved list of complete tasks</em></p></div><div role="tabpanel" class [...]
<hr>
@@ -49,12 +49,12 @@
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-1">Sample response<a href="#sample-response-1" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-an-array-of-running-tasks">Get an array of running tasks<a href="#get-an-array-of-running-tasks" class="hash-link" aria-label="Direct link to Get an array of running tasks" title="Direct link to Get an array of running tasks"></a></h3>
-<p>Retrieves an array of running task objects in the Druid cluster. It is functionally equivalent to <code>/druid/indexer/v1/tasks?state=running</code>. For definitions of the response properties, see the <a href="/docs/latest/querying/sql-metadata-tables#tasks-table">Tasks table</a>.</p>
+<p>Retrieves an array of running task objects in the Druid cluster. It is functionally equivalent to <code>/druid/indexer/v1/tasks?state=running</code>. For definitions of the response properties, see the <a href="/docs/37.0.0/querying/sql-metadata-tables#tasks-table">Tasks table</a>.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-2">URL<a href="#url-2" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
<p><code>GET</code> <code>/druid/indexer/v1/runningTasks</code></p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="query-parameters-2">Query parameters<a href="#query-parameters-2" class="hash-link" aria-label="Direct link to Query parameters" title="Direct link to Query parameters"></a></h4>
<p>The endpoint supports a set of optional query parameters to filter results.</p>
-<table><thead><tr><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code>datasource</code></td><td>String</td><td>Return tasks filtered by Druid datasource.</td></tr><tr><td><code>createdTimeInterval</code></td><td>String (ISO-8601)</td><td>Return tasks created within the specified interval. The interval string should be delimited by <code>_</code> instead of <code>/</code>. For example, <code>2023-06-27_2023-06-28</code>.</td></tr><tr><td><code>max</code></ [...]
+<table><thead><tr><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code>datasource</code></td><td>String</td><td>Return tasks filtered by Druid datasource.</td></tr><tr><td><code>createdTimeInterval</code></td><td>String (ISO-8601)</td><td>Return tasks created within the specified interval. The interval string should be delimited by <code>_</code> instead of <code>/</code>. For example, <code>2023-06-27_2023-06-28</code>.</td></tr><tr><td><code>max</code></ [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-2">Responses<a href="#responses-2" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">200 SUCCESS</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><br><p><em>Successfully retrieved list of running tasks</em></p></div></div></div>
<hr>
@@ -63,12 +63,12 @@
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-2">Sample response<a href="#sample-response-2" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-an-array-of-waiting-tasks">Get an array of waiting tasks<a href="#get-an-array-of-waiting-tasks" class="hash-link" aria-label="Direct link to Get an array of waiting tasks" title="Direct link to Get an array of waiting tasks"></a></h3>
-<p>Retrieves an array of waiting tasks in the Druid cluster. It is functionally equivalent to <code>/druid/indexer/v1/tasks?state=waiting</code>. For definitions of the response properties, see the <a href="/docs/latest/querying/sql-metadata-tables#tasks-table">Tasks table</a>.</p>
+<p>Retrieves an array of waiting tasks in the Druid cluster. It is functionally equivalent to <code>/druid/indexer/v1/tasks?state=waiting</code>. For definitions of the response properties, see the <a href="/docs/37.0.0/querying/sql-metadata-tables#tasks-table">Tasks table</a>.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-3">URL<a href="#url-3" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
<p><code>GET</code> <code>/druid/indexer/v1/waitingTasks</code></p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="query-parameters-3">Query parameters<a href="#query-parameters-3" class="hash-link" aria-label="Direct link to Query parameters" title="Direct link to Query parameters"></a></h4>
<p>The endpoint supports a set of optional query parameters to filter results.</p>
-<table><thead><tr><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code>datasource</code></td><td>String</td><td>Return tasks filtered by Druid datasource.</td></tr><tr><td><code>createdTimeInterval</code></td><td>String (ISO-8601)</td><td>Return tasks created within the specified interval. The interval string should be delimited by <code>_</code> instead of <code>/</code>. For example, <code>2023-06-27_2023-06-28</code>.</td></tr><tr><td><code>max</code></ [...]
+<table><thead><tr><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code>datasource</code></td><td>String</td><td>Return tasks filtered by Druid datasource.</td></tr><tr><td><code>createdTimeInterval</code></td><td>String (ISO-8601)</td><td>Return tasks created within the specified interval. The interval string should be delimited by <code>_</code> instead of <code>/</code>. For example, <code>2023-06-27_2023-06-28</code>.</td></tr><tr><td><code>max</code></ [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-3">Responses<a href="#responses-3" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">200 SUCCESS</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><br><p><em>Successfully retrieved list of waiting tasks</em></p></div></div></div>
<hr>
@@ -77,12 +77,12 @@
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-3">Sample response<a href="#sample-response-3" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-an-array-of-pending-tasks">Get an array of pending tasks<a href="#get-an-array-of-pending-tasks" class="hash-link" aria-label="Direct link to Get an array of pending tasks" title="Direct link to Get an array of pending tasks"></a></h3>
-<p>Retrieves an array of pending tasks in the Druid cluster. It is functionally equivalent to <code>/druid/indexer/v1/tasks?state=pending</code>. For definitions of the response properties, see the <a href="/docs/latest/querying/sql-metadata-tables#tasks-table">Tasks table</a>.</p>
+<p>Retrieves an array of pending tasks in the Druid cluster. It is functionally equivalent to <code>/druid/indexer/v1/tasks?state=pending</code>. For definitions of the response properties, see the <a href="/docs/37.0.0/querying/sql-metadata-tables#tasks-table">Tasks table</a>.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-4">URL<a href="#url-4" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
<p><code>GET</code> <code>/druid/indexer/v1/pendingTasks</code></p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="query-parameters-4">Query parameters<a href="#query-parameters-4" class="hash-link" aria-label="Direct link to Query parameters" title="Direct link to Query parameters"></a></h4>
<p>The endpoint supports a set of optional query parameters to filter results.</p>
-<table><thead><tr><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code>datasource</code></td><td>String</td><td>Return tasks filtered by Druid datasource.</td></tr><tr><td><code>createdTimeInterval</code></td><td>String (ISO-8601)</td><td>Return tasks created within the specified interval. The interval string should be delimited by <code>_</code> instead of <code>/</code>. For example, <code>2023-06-27_2023-06-28</code>.</td></tr><tr><td><code>max</code></ [...]
+<table><thead><tr><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code>datasource</code></td><td>String</td><td>Return tasks filtered by Druid datasource.</td></tr><tr><td><code>createdTimeInterval</code></td><td>String (ISO-8601)</td><td>Return tasks created within the specified interval. The interval string should be delimited by <code>_</code> instead of <code>/</code>. For example, <code>2023-06-27_2023-06-28</code>.</td></tr><tr><td><code>max</code></ [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-4">Responses<a href="#responses-4" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">200 SUCCESS</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><br><p><em>Successfully retrieved list of pending tasks</em></p></div></div></div>
<hr>
@@ -129,7 +129,7 @@ Use the metric <code>segment/added/bytes</code> instead to identify the segment
<p>A successful request returns a <code>200 OK</code> response and an array of the task segments.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-task-log">Get task log<a href="#get-task-log" class="hash-link" aria-label="Direct link to Get task log" title="Direct link to Get task log"></a></h3>
<p>Retrieves the event log associated with a task. It returns a list of logged events during the lifecycle of the task. The endpoint is useful for providing information about the execution of the task, including any errors or warnings raised.</p>
-<p>Task logs are automatically retrieved from the Middle Manager/Indexer or in long-term storage. For reference, see <a href="/docs/latest/ingestion/tasks#task-logs">Task logs</a>.</p>
+<p>Task logs are automatically retrieved from the Middle Manager/Indexer or in long-term storage. For reference, see <a href="/docs/37.0.0/ingestion/tasks#task-logs">Task logs</a>.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-8">URL<a href="#url-8" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
<p><code>GET</code> <code>/druid/indexer/v1/task/{taskId}/log</code></p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="query-parameters-5">Query parameters<a href="#query-parameters-5" class="hash-link" aria-label="Direct link to Query parameters" title="Direct link to Query parameters"></a></h4>
@@ -150,7 +150,7 @@ Use the metric <code>segment/added/bytes</code> instead to identify the segment
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-8">Sample response<a href="#sample-response-8" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-task-completion-report">Get task completion report<a href="#get-task-completion-report" class="hash-link" aria-label="Direct link to Get task completion report" title="Direct link to Get task completion report"></a></h3>
-<p>Retrieves a <a href="/docs/latest/ingestion/tasks#task-reports">task completion report</a> for a task. It returns a JSON object with information about the number of rows ingested, and any parse exceptions that Druid raised.</p>
+<p>Retrieves a <a href="/docs/37.0.0/ingestion/tasks#task-reports">task completion report</a> for a task. It returns a JSON object with information about the number of rows ingested, and any parse exceptions that Druid raised.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-9">URL<a href="#url-9" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
<p><code>GET</code> <code>/druid/indexer/v1/task/{taskId}/reports</code></p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-9">Responses<a href="#responses-9" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
@@ -163,8 +163,8 @@ Use the metric <code>segment/added/bytes</code> instead to identify the segment
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="task-operations">Task operations<a href="#task-operations" class="hash-link" aria-label="Direct link to Task operations" title="Direct link to Task operations"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="submit-a-task">Submit a task<a href="#submit-a-task" class="hash-link" aria-label="Direct link to Submit a task" title="Direct link to Submit a task"></a></h3>
-<p>Submits a JSON-based ingestion spec or supervisor spec to the Overlord. It returns the task ID of the submitted task. For information on creating an ingestion spec, refer to the <a href="/docs/latest/ingestion/ingestion-spec">ingestion spec reference</a>.</p>
-<p>Note that for most batch ingestion use cases, you should use the <a href="/docs/latest/api-reference/sql-ingestion-api">SQL-ingestion API</a> instead of JSON-based batch ingestion.</p>
+<p>Submits a JSON-based ingestion spec or supervisor spec to the Overlord. It returns the task ID of the submitted task. For information on creating an ingestion spec, refer to the <a href="/docs/37.0.0/ingestion/ingestion-spec">ingestion spec reference</a>.</p>
+<p>Note that for most batch ingestion use cases, you should use the <a href="/docs/37.0.0/api-reference/sql-ingestion-api">SQL-ingestion API</a> instead of JSON-based batch ingestion.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-10">URL<a href="#url-10" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
<p><code>POST</code> <code>/druid/indexer/v1/task</code></p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-10">Responses<a href="#responses-10" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses"></a></h4>
@@ -215,7 +215,7 @@ Use the metric <code>segment/added/bytes</code> instead to identify the segment
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="clean-up-pending-segments-for-a-datasource">Clean up pending segments for a datasource<a href="#clean-up-pending-segments-for-a-datasource" class="hash-link" aria-label="Direct link to Clean up pending segments for a datasource" title="Direct link to Clean up pending segments for a datasource"></a></h3>
<p>Manually clean up pending segments table in metadata storage for <code>datasource</code>. It returns a JSON object response with
<code>numDeleted</code> for the number of rows deleted from the pending segments table. This API is used by the
-<code>druid.coordinator.kill.pendingSegments.on</code> <a href="/docs/latest/configuration/#data-management">Coordinator setting</a>
+<code>druid.coordinator.kill.pendingSegments.on</code> <a href="/docs/37.0.0/configuration/#data-management">Coordinator setting</a>
which automates this operation to perform periodically.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-14">URL<a href="#url-14" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4>
<p><code>DELETE</code> <code>/druid/indexer/v1/pendingSegments/{datasource}</code></p>
@@ -226,6 +226,6 @@ which automates this operation to perform periodically.</p>
<p>The following request is an example of cleaning up pending segments for the <code>wikipedia_api</code> datasource.</p>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">cURL</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">HTTP</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-backgro [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-14">Sample response<a href="#sample-response-14" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4>
-<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
+<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>View the response</summary><div><div class="collapsibleContent_i85q"><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><sp [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/comparisons/druid-vs-elasticsearch.html/index.html b/docs/37.0.0/comparisons/druid-vs-elasticsearch.html/index.html
new file mode 100644
index 000000000..65d1181b5
--- /dev/null
+++ b/docs/37.0.0/comparisons/druid-vs-elasticsearch.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/comparisons/druid-vs-elasticsearch">
+ <link rel="canonical" href="/docs/37.0.0/comparisons/druid-vs-elasticsearch" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/comparisons/druid-vs-elasticsearch' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/comparisons/druid-vs-elasticsearch/index.html b/docs/37.0.0/comparisons/druid-vs-elasticsearch/index.html
similarity index 94%
copy from docs/latest/comparisons/druid-vs-elasticsearch/index.html
copy to docs/37.0.0/comparisons/druid-vs-elasticsearch/index.html
index e0831dfd0..6721aeeac 100644
--- a/docs/latest/comparisons/druid-vs-elasticsearch/index.html
+++ b/docs/37.0.0/comparisons/druid-vs-elasticsearch/index.html
@@ -3,13 +3,13 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Apache Druid vs Elasticsearch | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/do [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Apache Druid vs Elasticsearch | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/do [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
<p>Elasticsearch is a search system based on Apache Lucene. It provides full text search for schema-free documents
and provides access to raw event level data. Elasticsearch is increasingly adding more support for analytics and aggregations.
<a href="https://groups.google.com/forum/#!msg/druid-development/nlpwTHNclj8/sOuWlKOzPpYJ" target="_blank" rel="noopener noreferrer">Some members of the community</a> have pointed out
diff --git a/docs/37.0.0/comparisons/druid-vs-key-value.html/index.html b/docs/37.0.0/comparisons/druid-vs-key-value.html/index.html
new file mode 100644
index 000000000..551451568
--- /dev/null
+++ b/docs/37.0.0/comparisons/druid-vs-key-value.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/comparisons/druid-vs-key-value">
+ <link rel="canonical" href="/docs/37.0.0/comparisons/druid-vs-key-value" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/comparisons/druid-vs-key-value' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/comparisons/druid-vs-key-value/index.html b/docs/37.0.0/comparisons/druid-vs-key-value/index.html
similarity index 95%
copy from docs/latest/comparisons/druid-vs-key-value/index.html
copy to docs/37.0.0/comparisons/druid-vs-key-value/index.html
index d3137fa1b..7aa73ee6a 100644
--- a/docs/latest/comparisons/druid-vs-key-value/index.html
+++ b/docs/37.0.0/comparisons/druid-vs-key-value/index.html
@@ -3,13 +3,13 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Apache Druid vs. Key/Value Stores (HBase/Cassandra/OpenTSDB) | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" conte [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Apache Druid vs. Key/Value Stores (HBase/Cassandra/OpenTSDB) | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" conte [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
is supported in key/value stores in 2 ways:</p>
<ol>
<li>Pre-compute all permutations of possible user queries</li>
diff --git a/docs/37.0.0/comparisons/druid-vs-kudu.html/index.html b/docs/37.0.0/comparisons/druid-vs-kudu.html/index.html
new file mode 100644
index 000000000..33fde5c3b
--- /dev/null
+++ b/docs/37.0.0/comparisons/druid-vs-kudu.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/comparisons/druid-vs-kudu">
+ <link rel="canonical" href="/docs/37.0.0/comparisons/druid-vs-kudu" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/comparisons/druid-vs-kudu' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/comparisons/druid-vs-kudu/index.html b/docs/37.0.0/comparisons/druid-vs-kudu/index.html
similarity index 95%
copy from docs/latest/comparisons/druid-vs-kudu/index.html
copy to docs/37.0.0/comparisons/druid-vs-kudu/index.html
index 5dc087de1..47d64d860 100644
--- a/docs/latest/comparisons/druid-vs-kudu/index.html
+++ b/docs/37.0.0/comparisons/druid-vs-kudu/index.html
@@ -3,13 +3,13 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Apache Druid vs Kudu | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Apache Druid vs Kudu | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0 [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
the process for updating old values should be higher latency in Druid. However, the requirements in Kudu for maintaining extra head space to store
updates as well as organizing data by id instead of time has the potential to introduce some extra latency and accessing
of data that is not needed to answer a query at query time.</p>
diff --git a/docs/37.0.0/comparisons/druid-vs-redshift.html/index.html b/docs/37.0.0/comparisons/druid-vs-redshift.html/index.html
new file mode 100644
index 000000000..4d10e7410
--- /dev/null
+++ b/docs/37.0.0/comparisons/druid-vs-redshift.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/comparisons/druid-vs-redshift">
+ <link rel="canonical" href="/docs/37.0.0/comparisons/druid-vs-redshift" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/comparisons/druid-vs-redshift' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/comparisons/druid-vs-redshift/index.html b/docs/37.0.0/comparisons/druid-vs-redshift/index.html
similarity index 96%
copy from docs/latest/comparisons/druid-vs-redshift/index.html
copy to docs/37.0.0/comparisons/druid-vs-redshift/index.html
index 5099cb25d..8969c06f2 100644
--- a/docs/latest/comparisons/druid-vs-redshift/index.html
+++ b/docs/37.0.0/comparisons/druid-vs-redshift/index.html
@@ -3,13 +3,13 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Apache Druid vs Redshift | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/la [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Apache Druid vs Redshift | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37 [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
<p>In terms of drawing a differentiation, Redshift started out as ParAccel (Actian), which Amazon is licensing and has since heavily modified.</p>
<p>Aside from potential performance differences, there are some functional differences:</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="real-time-data-ingestion">Real-time data ingestion<a href="#real-time-data-ingestion" class="hash-link" aria-label="Direct link to Real-time data ingestion" title="Direct link to Real-time data ingestion"></a></h3>
diff --git a/docs/37.0.0/comparisons/druid-vs-spark.html/index.html b/docs/37.0.0/comparisons/druid-vs-spark.html/index.html
new file mode 100644
index 000000000..4cca03c82
--- /dev/null
+++ b/docs/37.0.0/comparisons/druid-vs-spark.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/comparisons/druid-vs-spark">
+ <link rel="canonical" href="/docs/37.0.0/comparisons/druid-vs-spark" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/comparisons/druid-vs-spark' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/comparisons/druid-vs-spark/index.html b/docs/37.0.0/comparisons/druid-vs-spark/index.html
similarity index 95%
copy from docs/latest/comparisons/druid-vs-spark/index.html
copy to docs/37.0.0/comparisons/druid-vs-spark/index.html
index 4fc05ce85..8f5991eea 100644
--- a/docs/latest/comparisons/druid-vs-spark/index.html
+++ b/docs/37.0.0/comparisons/druid-vs-spark/index.html
@@ -3,13 +3,13 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Apache Druid vs Spark | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/lates [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Apache Druid vs Spark | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0. [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
<p>Spark is a general cluster computing framework initially designed around the concept of Resilient Distributed Datasets (RDDs).
RDDs enable data reuse by persisting intermediate results
in memory and enable Spark to provide fast computations for iterative algorithms.
diff --git a/docs/37.0.0/comparisons/druid-vs-sql-on-hadoop.html/index.html b/docs/37.0.0/comparisons/druid-vs-sql-on-hadoop.html/index.html
new file mode 100644
index 000000000..e11b352fe
--- /dev/null
+++ b/docs/37.0.0/comparisons/druid-vs-sql-on-hadoop.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/comparisons/druid-vs-sql-on-hadoop">
+ <link rel="canonical" href="/docs/37.0.0/comparisons/druid-vs-sql-on-hadoop" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/comparisons/druid-vs-sql-on-hadoop' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/comparisons/druid-vs-sql-on-hadoop/index.html b/docs/37.0.0/comparisons/druid-vs-sql-on-hadoop/index.html
similarity index 95%
copy from docs/latest/comparisons/druid-vs-sql-on-hadoop/index.html
copy to docs/37.0.0/comparisons/druid-vs-sql-on-hadoop/index.html
index 6c803d40a..54aece797 100644
--- a/docs/latest/comparisons/druid-vs-sql-on-hadoop/index.html
+++ b/docs/37.0.0/comparisons/druid-vs-sql-on-hadoop/index.html
@@ -3,13 +3,13 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Apache Druid vs SQL-on-Hadoop | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/do [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Apache Druid vs SQL-on-Hadoop | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/do [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
execution engine for various data formats and data stores, and
many can be made to push down computations down to Druid, while providing a SQL interface to Druid.</p>
<p>For a direct comparison between the technologies and when to only use one or the other, things basically comes down to your
diff --git a/docs/37.0.0/configuration.html/index.html b/docs/37.0.0/configuration.html/index.html
new file mode 100644
index 000000000..90aad8644
--- /dev/null
+++ b/docs/37.0.0/configuration.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/configuration/">
+ <link rel="canonical" href="/docs/37.0.0/configuration/" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/configuration/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/configuration/auth.html/index.html b/docs/37.0.0/configuration/auth.html/index.html
new file mode 100644
index 000000000..d617509d0
--- /dev/null
+++ b/docs/37.0.0/configuration/auth.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/operations/auth">
+ <link rel="canonical" href="/docs/37.0.0/operations/auth" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/operations/auth' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/configuration/broker.html/index.html b/docs/37.0.0/configuration/broker.html/index.html
new file mode 100644
index 000000000..90aad8644
--- /dev/null
+++ b/docs/37.0.0/configuration/broker.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/configuration/">
+ <link rel="canonical" href="/docs/37.0.0/configuration/" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/configuration/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/configuration/caching.html/index.html b/docs/37.0.0/configuration/caching.html/index.html
new file mode 100644
index 000000000..90aad8644
--- /dev/null
+++ b/docs/37.0.0/configuration/caching.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/configuration/">
+ <link rel="canonical" href="/docs/37.0.0/configuration/" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/configuration/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/configuration/coordinator.html/index.html b/docs/37.0.0/configuration/coordinator.html/index.html
new file mode 100644
index 000000000..90aad8644
--- /dev/null
+++ b/docs/37.0.0/configuration/coordinator.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/configuration/">
+ <link rel="canonical" href="/docs/37.0.0/configuration/" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/configuration/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/configuration/extensions.html/index.html b/docs/37.0.0/configuration/extensions.html/index.html
new file mode 100644
index 000000000..dee940ace
--- /dev/null
+++ b/docs/37.0.0/configuration/extensions.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/configuration/extensions">
+ <link rel="canonical" href="/docs/37.0.0/configuration/extensions" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/configuration/extensions' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/configuration/extensions/index.html b/docs/37.0.0/configuration/extensions/index.html
similarity index 76%
copy from docs/latest/configuration/extensions/index.html
copy to docs/37.0.0/configuration/extensions/index.html
index f16626744..108171a75 100644
--- a/docs/latest/configuration/extensions/index.html
+++ b/docs/37.0.0/configuration/extensions/index.html
@@ -3,59 +3,59 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Extensions | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/configura [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Extensions | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/configura [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
are commonly used to add support for deep storages (like HDFS and S3), metadata stores (like MySQL
and PostgreSQL), new aggregators, new input formats, and so on.</p>
<p>Production clusters will generally use at least two extensions; one for deep storage and one for a
metadata store. Many clusters will also use additional extensions.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="core-extensions">Core extensions<a href="#core-extensions" class="hash-link" aria-label="Direct link to Core extensions" title="Direct link to Core extensions"></a></h2>
<p>Core extensions are maintained by Druid committers.</p>
-<table><thead><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">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">link</a></td></tr><tr><td>druid-basic-security</td><td>Support for Basic HTTP authentication and role-based a [...]
+<table><thead><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/37.0.0/development/extensions-core/avro">link</a></td></tr><tr><td>druid-azure-extensions</td><td>Microsoft Azure deep storage.</td><td><a href="/docs/37.0.0/development/extensions-core/azure">link</a></td></tr><tr><td>druid-basic-security</td><td>Support for Basic HTTP authentication and role-based a [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="community-extensions">Community extensions<a href="#community-extensions" class="hash-link" aria-label="Direct link to Community extensions" title="Direct link to Community extensions"></a></h2>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>Community extensions are not main [...]
<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" target="_blank" rel="noopener noreferrer">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">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">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">link</a></td></tr><tr><td>druid-cassandra-storage</td><td>Apache Cassandra deep storage.</td><td><a href="/d [...]
+<p>All of these community extensions can be downloaded using <a href="/docs/37.0.0/operations/pull-deps">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/37.0.0/development/extensions-contrib/aliyun-oss">link</a></td></tr><tr><td>ambari-metrics-emitter</td><td>Ambari Metrics Emitter</td><td><a href="/docs/37.0.0/development/extensions-contrib/ambari-metrics-emitter">link</a></td></tr><tr><td>druid-cassandra-storage</td><td>Apache Cassandra deep storage.</td><td><a href="/d [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="promoting-community-extensions-to-core-extensions">Promoting community extensions to core extensions<a href="#promoting-community-extensions-to-core-extensions" class="hash-link" aria-label="Direct link to Promoting community extensions to core extensions" title="Direct link to Promoting community extensions to core extensions"></a></h2>
<p>Please post on <a href="https://lists.apache.org/list.html?dev@druid.apache.org" target="_blank" rel="noopener noreferrer">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">here</a>.</p>
+<p>For information how to create your own extension, please see <a href="/docs/37.0.0/development/modules">here</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="loading-extensions">Loading extensions<a href="#loading-extensions" class="hash-link" aria-label="Direct link to Loading extensions" title="Direct link to Loading extensions"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="loading-core-extensions">Loading core extensions<a href="#loading-core-extensions" class="hash-link" aria-label="Direct link to Loading core extensions" title="Direct link to Loading core extensions"></a></h3>
-<p>Apache Druid bundles all <a href="/docs/latest/configuration/extensions#core-extensions">core extensions</a> out of the box.
-See the <a href="/docs/latest/configuration/extensions#core-extensions">list of extensions</a> for your options. You
+<p>Apache Druid bundles all <a href="/docs/37.0.0/configuration/extensions#core-extensions">core extensions</a> out of the box.
+See the <a href="/docs/37.0.0/configuration/extensions#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 postgresql-metadata-storage and
druid-hdfs-storage extensions, use the configuration:</p>
<div class="language-properties codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-properties codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">druid.extensions.loadList=["postgresql-metadata-storage", "druid [...]
<p>These extensions are located in the <code>extensions</code> directory of the distribution.</p>
-<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>Druid bundles two sets of configu [...]
-one for a <a href="/docs/latest/tutorials/cluster">clustered configuration</a>. Make sure you are updating the correct
+<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>Druid bundles two sets of configu [...]
+one for a <a href="/docs/37.0.0/tutorials/cluster">clustered configuration</a>. Make sure you are updating the correct
<code>common.runtime.properties</code> for your setup.</p></div></div>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>Because of licensing, the mysql-m [...]
-on how to install this library, see the <a href="/docs/latest/development/extensions-core/mysql">MySQL extension page</a>.</p></div></div>
+on how to install this library, see the <a href="/docs/37.0.0/development/extensions-core/mysql">MySQL extension page</a>.</p></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="loading-community-extensions">Loading community extensions<a href="#loading-community-extensions" class="hash-link" aria-label="Direct link to Loading community extensions" title="Direct link to Loading community extensions"></a></h3>
<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">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/37.0.0/operations/pull-deps">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>
-<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">java \</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token [...]
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">java \</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token [...]
<p>You only have to install the extension once. Then, add <code>"druid-example-extension"</code> to
<code>druid.extensions.loadList</code> in common.runtime.properties to instruct Druid to load the extension.</p>
-<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>Please make sure all the Extensio [...]
-<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>The Maven <code>groupId</code> fo [...]
+<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>Please make sure all the Extensio [...]
+<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>The Maven <code>groupId</code> fo [...]
of the extension, and the version is the latest Druid stable version.</p></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="loading-extensions-from-the-classpath">Loading extensions from the classpath<a href="#loading-extensions-from-the-classpath" class="hash-link" aria-label="Direct link to Loading extensions from the classpath" title="Direct link to Loading extensions from the classpath"></a></h3>
<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></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/latest/configuration/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Configuration reference</div></a><a class="pagination-nav__link pagination-nav__link--next" href= [...]
+this method to maintain class loader isolation so you must make sure that the jars on your classpath are mutually compatible.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/configuration/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Configuration reference</div></a><a class="pagination-nav__link pagination-nav__link--next" href= [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/configuration/hadoop.html/index.html b/docs/37.0.0/configuration/hadoop.html/index.html
new file mode 100644
index 000000000..2f6f78c67
--- /dev/null
+++ b/docs/37.0.0/configuration/hadoop.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/ingestion/hadoop">
+ <link rel="canonical" href="/docs/37.0.0/ingestion/hadoop" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/ingestion/hadoop' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/configuration/historical.html/index.html b/docs/37.0.0/configuration/historical.html/index.html
new file mode 100644
index 000000000..90aad8644
--- /dev/null
+++ b/docs/37.0.0/configuration/historical.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/configuration/">
+ <link rel="canonical" href="/docs/37.0.0/configuration/" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/configuration/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/configuration/human-readable-byte.html/index.html b/docs/37.0.0/configuration/human-readable-byte.html/index.html
new file mode 100644
index 000000000..cb3898a35
--- /dev/null
+++ b/docs/37.0.0/configuration/human-readable-byte.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/configuration/human-readable-byte">
+ <link rel="canonical" href="/docs/37.0.0/configuration/human-readable-byte" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/configuration/human-readable-byte' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/configuration/human-readable-byte/index.html b/docs/37.0.0/configuration/human-readable-byte/index.html
similarity index 96%
copy from docs/latest/configuration/human-readable-byte/index.html
copy to docs/37.0.0/configuration/human-readable-byte/index.html
index 5f9c37350..e71272e39 100644
--- a/docs/latest/configuration/human-readable-byte/index.html
+++ b/docs/37.0.0/configuration/human-readable-byte/index.html
@@ -3,13 +3,13 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Human-readable Byte Configuration Reference | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Human-readable Byte Configuration Reference | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
<p>These properties can be configured through 2 ways:</p>
<ol>
<li>a simple number in bytes</li>
diff --git a/docs/latest/configuration/index.html b/docs/37.0.0/configuration/index.html
similarity index 90%
copy from docs/latest/configuration/index.html
copy to docs/37.0.0/configuration/index.html
index 207cd27ba..21612c163 100644
--- a/docs/latest/configuration/index.html
+++ b/docs/37.0.0/configuration/index.html
@@ -3,13 +3,13 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Configuration reference | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/lat [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Configuration reference | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37. [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="recommended-configuration-file-organization">Recommended configuration file organization<a href="#recommended-configuration-file-organization" class="hash-link" aria-label="Direct link to Recommended configuration file organization" title="Direct link to Recommended configuration file organization"></a></h2>
<p>A recommended way of organizing Druid configuration files can be seen in the <code>conf</code> directory in the Druid package root, shown below:</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">$ ls -R conf</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token [...]
@@ -31,7 +31,7 @@
<p>There are four JVM parameters that we set on all of our services:</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#period-granularities">query granularities</a></p>
+<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/37.0.0/querying/granularities#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>
@@ -52,12 +52,12 @@
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="extensions">Extensions<a href="#extensions" class="hash-link" aria-label="Direct link to Extensions" title="Direct link to Extensions"></a></h3>
<p>Many of Druid's external dependencies can be plugged in as modules. Extensions can be provided using the following configs:</p>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.extensions.directory</code></td><td>The root extension directory where user can put extensions related files. Druid will load extensions stored under this directory.</td><td><code>extensions</code> (This is a relative path to Druid's working directory)</td></tr><tr><td><code>druid.extensions.hadoopDependenciesDir</code></td><td>The root Hadoop dependencies directory where u [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.extensions.directory</code></td><td>The root extension directory where user can put extensions related files. Druid will load extensions stored under this directory.</td><td><code>extensions</code> (This is a relative path to Druid's working directory)</td></tr><tr><td><code>druid.extensions.loadList</code></td><td>A JSON array of extensions to load from extension directori [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="modules">Modules<a href="#modules" class="hash-link" aria-label="Direct link to Modules" title="Direct link to Modules"></a></h3>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.modules.excludeList</code></td><td>A JSON array of canonical class names (e.g., <code>"org.apache.druid.somepackage.SomeModule"</code>) of module classes which shouldn't be loaded, even if they are found in extensions specified by <code>druid.extensions.loadList</code>, or in the list of core modules specified to be loaded on a particular Druid service type. Usefu [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="zookeeper">ZooKeeper<a href="#zookeeper" class="hash-link" aria-label="Direct link to ZooKeeper" title="Direct link to ZooKeeper"></a></h3>
<p>We recommend just setting the base ZK path and the ZK service host, but all ZK paths that Druid uses can be overwritten to absolute paths.</p>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><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 opti [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><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 opti [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="zookeeper-behavior">ZooKeeper behavior<a href="#zookeeper-behavior" class="hash-link" aria-label="Direct link to ZooKeeper behavior" title="Direct link to ZooKeeper behavior"></a></h4>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.zk.service.sessionTimeoutMs</code></td><td>ZooKeeper session timeout, in milliseconds.</td><td><code>30000</code></td></tr><tr><td><code>druid.zk.service.connectionTimeoutMs</code></td><td>ZooKeeper connection timeout, in milliseconds.</td><td><code>15000</code></td></tr><tr><td><code>druid.zk.service.compress</code></td><td>Boolean flag for whether or not created Znodes should [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="path-configuration">Path configuration<a href="#path-configuration" class="hash-link" aria-label="Direct link to Path configuration" title="Direct link to Path configuration"></a></h4>
@@ -80,17 +80,17 @@ and <code>druid.tlsPort</code> properties on each service. Please see <code>Conf
The <a href="https://docs.oracle.com/en/java/javase/17/docs/specs/security/standard-names.html" target="_blank" rel="noopener noreferrer">Java Cryptography Architecture
Standard Algorithm Name Documentation for JDK 17</a> lists all possible
values for the following properties, among others provided by the Java implementation.</p>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th><th>Required</th></tr></thead><tbody><tr><td><code>druid.server.https.keyStorePath</code></td><td>The file path or URL of the TLS/SSL KeyStore.</td><td>none</td><td>yes</td></tr><tr><td><code>druid.server.https.keyStoreType</code></td><td>The type of the KeyStore.</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 [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th><th>Required</th></tr></thead><tbody><tr><td><code>druid.server.https.keyStorePath</code></td><td>The file path or URL of the TLS/SSL KeyStore.</td><td>none</td><td>yes</td></tr><tr><td><code>druid.server.https.keyStoreType</code></td><td>The type of the KeyStore.</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 [...]
<p>Following table contains non-mandatory advanced configuration options, use caution.</p>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th><th>Required</th></tr></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" target="_blank" rel="noopener noreferrer">here</a>.</td><td><code>javax.net.ssl.KeyManagerFactory.getDefaultAlgorithm()</code></td><td>no</td></tr [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th><th>Required</th></tr></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" target="_blank" rel="noopener noreferrer">here</a>.</td><td><code>javax.net.ssl.KeyManagerFactory.getDefaultAlgorithm()</code></td><td>no</td></tr [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="internal-client-tls-configuration-requires-simple-client-sslcontext-extension">Internal client TLS configuration (requires <code>simple-client-sslcontext</code> extension)<a href="#internal-client-tls-configuration-requires-simple-client-sslcontext-extension" class="hash-link" aria-label="Direct link to internal-client-tls-configuration-requires-simple-client-sslcontext-extension" title="Direct link to internal-client-tls-configuration-r [...]
<p>These properties apply to the SSLContext that will be provided to the internal HTTP client that Druid services use to communicate with each other. These properties require the <code>simple-client-sslcontext</code> extension to be loaded. Without it, Druid services will be unable to communicate with each other when TLS is enabled.</p>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th><th>Required</th></tr></thead><tbody><tr><td><code>druid.client.https.protocol</code></td><td>SSL protocol to use.</td><td><code>TLSv1.2</code></td><td>no</td></tr><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.trustStore [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th><th>Required</th></tr></thead><tbody><tr><td><code>druid.client.https.protocol</code></td><td>SSL protocol to use.</td><td><code>TLSv1.2</code></td><td>no</td></tr><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.trustStore [...]
<p>This <a href="https://docs.oracle.com/en/java/javase/17/docs/specs/security/standard-names.html" target="_blank" rel="noopener noreferrer">document</a> lists all the possible
values for the above mentioned configs among others provided by Java implementation.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="authentication-and-authorization">Authentication and authorization<a href="#authentication-and-authorization" class="hash-link" aria-label="Direct link to Authentication and authorization" title="Direct link to Authentication and authorization"></a></h3>
<table><thead><tr><th>Property</th><th>Type</th><th>Description</th><th>Default</th><th>Required</th></tr></thead><tbody><tr><td><code>druid.auth.authenticatorChain</code></td><td>JSON List of Strings</td><td>List of Authenticator type names</td><td>["allowAll"]</td><td>no</td></tr><tr><td><code>druid.escalator.type</code></td><td>String</td><td>Type of the Escalator that should be used for internal Druid communications. This Escalator must use an authentication scheme that is [...]
-<p>For more information, please see <a href="/docs/latest/operations/auth">Authentication and Authorization</a>.</p>
+<p>For more information, please see <a href="/docs/37.0.0/operations/auth">Authentication and Authorization</a>.</p>
<p>For configuration options for specific auth extensions, please refer to the extension documentation.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="startup-logging">Startup logging<a href="#startup-logging" class="hash-link" aria-label="Direct link to Startup logging" title="Direct link to Startup logging"></a></h3>
<p>All services can log debugging information on startup.</p>
@@ -98,9 +98,9 @@ values for the above mentioned configs among others provided by Java implementat
<p>Note that some sensitive information may be logged if these settings are enabled.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="request-logging">Request logging<a href="#request-logging" class="hash-link" aria-label="Direct link to Request logging" title="Direct link to Request logging"></a></h3>
<p>All services that can serve queries can also log the query requests they see. Broker services can additionally log the SQL requests (both from HTTP and JDBC) they see.
-For an example of setting up request logging, see <a href="/docs/latest/operations/request-logging">Request logging</a>.</p>
+For an example of setting up request logging, see <a href="/docs/37.0.0/operations/request-logging">Request logging</a>.</p>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.request.logging.type</code></td><td>How to log every query request. Choices: <code>noop</code>, <a href="#file-request-logging"><code>file</code></a>, <a href="#emitter-request-logging"><code>emitter</code></a>, <a href="#slf4j-request-logging"><code>slf4j</code></a>, <a href="#filtered-request-logging"><code>filtered</code></a>, <a href="#composing-request-logging"><code>compos [...]
-<p>To enable sending all the HTTP requests to a log, set <code>org.apache.druid.jetty.RequestLog</code> to the <code>DEBUG</code> level. See <a href="/docs/latest/configuration/logging">Logging</a> for more information.</p>
+<p>To enable sending all the HTTP requests to a log, set <code>org.apache.druid.jetty.RequestLog</code> to the <code>DEBUG</code> level. See <a href="/docs/37.0.0/configuration/logging">Logging</a> for more information.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="file-request-logging">File request logging<a href="#file-request-logging" class="hash-link" aria-label="Direct link to File request logging" title="Direct link to File request logging"></a></h4>
<p>The <code>file</code> request logger stores daily request logs on disk.</p>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.request.logging.dir</code></td><td>Historical, Realtime, and Broker services maintain request logs of all of the requests they get (interaction is via POST, so normal request logs don’t generally capture information about the actual query), this specifies the directory to store the request logs in.</td><td>none</td></tr><tr><td><code>druid.request.logging.filePattern</code></td> [...]
@@ -121,9 +121,9 @@ For an example of setting up request logging, see <a href="/docs/latest/operatio
<p>The <code>filtered</code> request logger filters requests based on the query type or how long a query takes to complete.
For native queries, the logger only logs requests when the <code>query/time</code> metric exceeds the threshold provided in <code>queryTimeThresholdMs</code>.
For SQL queries, it only logs requests when the <code>sqlQuery/time</code> metric exceeds threshold provided in <code>sqlQueryTimeThresholdMs</code>.
-See <a href="/docs/latest/operations/metrics">Metrics</a> for more details on query metrics.</p>
+See <a href="/docs/37.0.0/operations/metrics">Metrics</a> for more details on query metrics.</p>
<p>Requests that meet the threshold are logged using the request logger type set in <code>druid.request.logging.delegate.type</code>.</p>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.request.logging.queryTimeThresholdMs</code></td><td>Threshold value for the <code>query/time</code> metric in milliseconds.</td><td>0, i.e., no filtering</td></tr><tr><td><code>druid.request.logging.sqlQueryTimeThresholdMs</code></td><td>Threshold value for the <code>sqlQuery/time</code> metric in milliseconds.</td><td>0, i.e., no filtering</td></tr><tr><td><code>druid.request.l [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.request.logging.queryTimeThresholdMs</code></td><td>Threshold value for the <code>query/time</code> metric in milliseconds.</td><td>0, i.e., no filtering</td></tr><tr><td><code>druid.request.logging.sqlQueryTimeThresholdMs</code></td><td>Threshold value for the <code>sqlQuery/time</code> metric in milliseconds.</td><td>0, i.e., no filtering</td></tr><tr><td><code>druid.request.l [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="composing-request-logging">Composing request logging<a href="#composing-request-logging" class="hash-link" aria-label="Direct link to Composing request logging" title="Direct link to Composing request logging"></a></h4>
<p>The <code>composing</code> request logger emits request logs to multiple request loggers.</p>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.request.logging.loggerProviders</code></td><td>List of request loggers for emitting request logs.</td><td>none</td></tr></tbody></table>
@@ -132,12 +132,12 @@ See <a href="/docs/latest/operations/metrics">Metrics</a> for more details on qu
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.request.logging.nativeQueryLogger</code></td><td>Request logger for emitting native query request logs.</td><td>none</td></tr><tr><td><code>druid.request.logging.sqlQueryLogger</code></td><td>Request logger for emitting SQL query request logs.</td><td>none</td></tr></tbody></table>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="audit-logging">Audit logging<a href="#audit-logging" class="hash-link" aria-label="Direct link to Audit logging" title="Direct link to Audit logging"></a></h3>
<p>Coordinator and Overlord log changes to lookups, segment load/drop rules, and dynamic configuration changes for auditing.</p>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.audit.manager.type</code></td><td>Type of audit manager used for handling audited events. Audited events are logged when set to <code>log</code> or persisted in metadata store when set to <code>sql</code>.</td><td>sql</td></tr><tr><td><code>druid.audit.manager.logLevel</code></td><td>Log level of audit events with possible values DEBUG, INFO, WARN. This property is used only whe [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.audit.manager.type</code></td><td>Type of audit manager used for handling audited events. Audited events are logged when set to <code>log</code> or persisted in metadata store when set to <code>sql</code>.</td><td>sql</td></tr><tr><td><code>druid.audit.manager.logLevel</code></td><td>Log level of audit events with possible values DEBUG, INFO, WARN. This property is used only whe [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="metadata-storage">Metadata storage<a href="#metadata-storage" class="hash-link" aria-label="Direct link to Metadata storage" title="Direct link to Metadata storage"></a></h3>
-<p>These properties specify the JDBC connection and other configuration around the metadata storage. The only services that connect to the metadata storage with these properties are the <a href="/docs/latest/design/coordinator">Coordinator</a> and <a href="/docs/latest/design/overlord">Overlord</a>.</p>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.metadata.storage.type</code></td><td>The type of metadata storage to use. One of <code>mysql</code>, <code>postgresql</code>, or <code>derby</code>.</td><td><code>derby</code></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 [...]
+<p>These properties specify the JDBC connection and other configuration around the metadata storage. The only services that connect to the metadata storage with these properties are the <a href="/docs/37.0.0/design/coordinator">Coordinator</a> and <a href="/docs/37.0.0/design/overlord">Overlord</a>.</p>
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.metadata.storage.type</code></td><td>The type of metadata storage to use. One of <code>mysql</code>, <code>postgresql</code>, or <code>derby</code>.</td><td><code>derby</code></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 [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="deep-storage">Deep storage<a href="#deep-storage" class="hash-link" aria-label="Direct link to Deep storage" title="Direct link to Deep storage"></a></h3>
-<p>The configurations concern how to push and pull <a href="/docs/latest/design/segments">Segments</a> from deep storage.</p>
+<p>The configurations concern how to push and pull <a href="/docs/37.0.0/design/segments">Segments</a> from deep storage.</p>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.storage.type</code></td><td>The type of deep storage to use. One of <code>local</code>, <code>noop</code>, <code>s3</code>, <code>hdfs</code>, <code>c*</code>.</td><td>local</td></tr></tbody></table>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="local-deep-storage">Local deep storage<a href="#local-deep-storage" class="hash-link" aria-label="Direct link to Local deep storage" title="Direct link to Local deep storage"></a></h4>
<p>Local deep storage uses the local filesystem.</p>
@@ -146,16 +146,16 @@ See <a href="/docs/latest/operations/metrics">Metrics</a> for more details on qu
<p>This deep storage doesn't do anything. There are no configs.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="s3-deep-storage">S3 deep storage<a href="#s3-deep-storage" class="hash-link" aria-label="Direct link to S3 deep storage" title="Direct link to S3 deep storage"></a></h4>
<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">S3 Deep Storage</a> for full configurations.</p>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><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 pe [...]
+The below table shows some important configurations for S3. See <a href="/docs/37.0.0/development/extensions-core/s3">S3 Deep Storage</a> for full configurations.</p>
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><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 pe [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="hdfs-deep-storage">HDFS deep storage<a href="#hdfs-deep-storage" class="hash-link" aria-label="Direct link to HDFS deep storage" title="Direct link to HDFS deep storage"></a></h4>
<p>This deep storage is used to interface with HDFS. You must load the <code>druid-hdfs-storage</code> extension.</p>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.storage.storageDirectory</code></td><td>HDFS directory to use as deep storage.</td><td>none</td></tr></tbody></table>
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.storage.storageDirectory</code></td><td>HDFS directory to use as deep storage.</td><td>none</td></tr><tr><td><code>druid.storage.compressionFormat</code></td><td>The compression format applied to the segments uploaded to HDFS. Only <code>zip</code> and <code>lz4</code> are supported.</td><td>zip</td></tr></tbody></table>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="cassandra-deep-storage">Cassandra deep storage<a href="#cassandra-deep-storage" class="hash-link" aria-label="Direct link to Cassandra deep storage" title="Direct link to Cassandra deep storage"></a></h4>
<p>This deep storage is used to interface with Cassandra. You must load the <code>druid-cassandra-storage</code> extension.</p>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.storage.host</code></td><td>Cassandra host.</td><td>none</td></tr><tr><td><code>druid.storage.keyspace</code></td><td>Cassandra key space.</td><td>none</td></tr></tbody></table>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="centralized-datasource-schema-experimental">Centralized datasource schema (Experimental)<a href="#centralized-datasource-schema-experimental" class="hash-link" aria-label="Direct link to Centralized datasource schema (Experimental)" title="Direct link to Centralized datasource schema (Experimental)"></a></h4>
-<p>This is an <a href="/docs/latest/development/experimental">experimental feature</a> to improve datasource schema management by persisting segment schemas to the metadata store and caching them on the Coordinator.
+<p>This is an <a href="/docs/37.0.0/development/experimental">experimental feature</a> to improve datasource schema management by persisting segment schemas to the metadata store and caching them on the Coordinator.
Traditionally, Brokers issue segment metadata queries to data nodes and tasks to fetch the schemas of all available segments.
Each Broker then individually builds the schema of a datasource by combining the schemas of all the segments of that datasource.
This mechanism is redundant and prone to errors as there is no single source of truth for schemas.</p>
@@ -168,30 +168,30 @@ This mechanism is redundant and prone to errors as there is no single source of
<li>Brokers still retain the ability to build a datasource schema if they are unable to fetch it from the Coordinator.</li>
</ul>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th><th>Required</th></tr></thead><tbody><tr><td><code>druid.centralizedDatasourceSchema.enabled</code></td><td>Boolean flag for enabling datasource schema building and caching on the Coordinator. This property should be specified in the common runtime properties.</td><td>false</td><td>No.</td></tr><tr><td><code>druid.indexer.fork.property.druid.centralizedDatasourceSchema.enabled</code></td><td>This config should be set [...]
-<p>If you enable this feature, you can query datasources that are only stored in deep storage and are not loaded on a Historical. For more information, see <a href="/docs/latest/querying/query-deep-storage">Query from deep storage</a>.</p>
+<p>If you enable this feature, you can query datasources that are only stored in deep storage and are not loaded on a Historical. For more information, see <a href="/docs/37.0.0/querying/query-deep-storage">Query from deep storage</a>.</p>
<p>For stale schema cleanup configs, refer to properties with the prefix <code>druid.coordinator.kill.segmentSchema</code> in <a href="#metadata-management">Metadata Management</a>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="ingestion-security-configuration">Ingestion security configuration<a href="#ingestion-security-configuration" class="hash-link" aria-label="Direct link to Ingestion security configuration" title="Direct link to Ingestion security configuration"></a></h3>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="hdfs-input-source">HDFS input source<a href="#hdfs-input-source" class="hash-link" aria-label="Direct link to HDFS input source" title="Direct link to HDFS input source"></a></h4>
<p>You can set the following property to specify permissible protocols for
-the <a href="/docs/latest/ingestion/input-sources#hdfs-input-source">HDFS input source</a>.</p>
+the <a href="/docs/37.0.0/ingestion/input-sources#hdfs-input-source">HDFS input source</a>.</p>
<table><thead><tr><th>Property</th><th>Possible values</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.ingestion.hdfs.allowedProtocols</code></td><td>List of protocols</td><td>Allowed protocols for the HDFS input source.</td><td><code>["hdfs"]</code></td></tr></tbody></table>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="http-input-source">HTTP input source<a href="#http-input-source" class="hash-link" aria-label="Direct link to HTTP input source" title="Direct link to HTTP input source"></a></h4>
<p>You can set the following property to specify permissible protocols for
-the <a href="/docs/latest/ingestion/input-sources#http-input-source">HTTP input source</a>.</p>
+the <a href="/docs/37.0.0/ingestion/input-sources#http-input-source">HTTP input source</a>.</p>
<table><thead><tr><th>Property</th><th>Possible values</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.ingestion.http.allowedProtocols</code></td><td>List of protocols</td><td>Allowed protocols for the HTTP input source.</td><td><code>["http", "https"]</code></td></tr><tr><td><code>druid.ingestion.http.allowedHeaders</code></td><td>A list of permitted request headers for the HTTP input source. By default, the list is empty, which means [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="external-data-access-security-configuration">External data access security configuration<a href="#external-data-access-security-configuration" class="hash-link" aria-label="Direct link to External data access security configuration" title="Direct link to External data access security configuration"></a></h3>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="jdbc-connections-to-external-databases">JDBC connections to external databases<a href="#jdbc-connections-to-external-databases" class="hash-link" aria-label="Direct link to JDBC connections to external databases" title="Direct link to JDBC connections to external databases"></a></h4>
<p>You can use the following properties to specify permissible JDBC options for:</p>
<ul>
-<li><a href="/docs/latest/ingestion/input-sources#sql-input-source">SQL input source</a></li>
-<li><a href="/docs/latest/querying/lookups-cached-global#jdbc-lookup">globally cached JDBC lookups</a></li>
-<li><a href="/docs/latest/development/extensions-core/druid-lookups#data-fetcher-layer">JDBC Data Fetcher for per-lookup caching</a>.</li>
+<li><a href="/docs/37.0.0/ingestion/input-sources#sql-input-source">SQL input source</a></li>
+<li><a href="/docs/37.0.0/querying/lookups-cached-global#jdbc-lookup">globally cached JDBC lookups</a></li>
+<li><a href="/docs/37.0.0/development/extensions-core/druid-lookups#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><thead><tr><th>Property</th><th>Possible values</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.access.jdbc.enforceAllowedProperties</code></td><td>Boolean</td><td>When true, Druid applies <code>druid.access.jdbc.allowedProperties</code> to JDBC connections starting with <code>jdbc:postgresql:</code>, <code>jdbc:mysql:</code>, or <code>jdbc:mariadb:</code>. When false, Druid allows any kind of JDBC connections without JDBC property validation. This [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="task-logging">Task logging<a href="#task-logging" class="hash-link" aria-label="Direct link to Task logging" title="Direct link to Task logging"></a></h3>
<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 services of generating logs, see the <a href="/docs/latest/ingestion/tasks">task reference</a>.</p>
+<p>For more information about ingestion tasks and the services of generating logs, see the <a href="/docs/37.0.0/ingestion/tasks">task reference</a>.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="log-long-term-storage">Log long-term storage<a href="#log-long-term-storage" class="hash-link" aria-label="Direct link to Log long-term storage" title="Direct link to Log long-term storage"></a></h4>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.indexer.logs.type</code></td><td>Where to store task logs. <code>noop</code>, <a href="#s3-task-logs"><code>s3</code></a>, <a href="#azure-blob-store-task-logs"><code>azure</code></a>, <a href="#google-cloud-storage-task-logs"><code>google</code></a>, <a href="#hdfs-task-logs"><code>hdfs</code></a>, <a href="#file-task-logs"><code>file</code></a></td><td><code>file</code></td>< [...]
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="file-task-logs">File task logs<a href="#file-task-logs" class="hash-link" aria-label="Direct link to File task logs" title="Direct link to File task logs"></a></h5>
@@ -239,10 +239,10 @@ This is the default Druid error response mode. To explicitly enable this strateg
<p>In this mode, Druid transforms any exceptions which are targeted at non-users personas. Instead of returning such exception directly, the strategy logs the exception against a random id and returns the id along with a generic error message to the user.</p>
<p>To enable this strategy, set <code>druid.server.http.errorResponseTransform.strategy</code> to <code>persona</code>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="overlord-discovery">Overlord discovery<a href="#overlord-discovery" class="hash-link" aria-label="Direct link to Overlord discovery" title="Direct link to Overlord discovery"></a></h3>
-<p>This config is used to find the <a href="/docs/latest/design/overlord">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/37.0.0/design/overlord">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></thead><tbody><tr><td><code>druid.selectors.indexing.serviceName</code></td><td>The druid.service name of the Overlord service. To start the Overlord with a different name, set it with this property.</td><td>druid/overlord</td></tr></tbody></table>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="coordinator-discovery">Coordinator discovery<a href="#coordinator-discovery" class="hash-link" aria-label="Direct link to Coordinator discovery" title="Direct link to Coordinator discovery"></a></h3>
-<p>This config is used to find the <a href="/docs/latest/design/coordinator">Coordinator</a> using Curator service discovery. This config is used by the realtime indexing services to get information about the segments loaded in the cluster.</p>
+<p>This config is used to find the <a href="/docs/37.0.0/design/coordinator">Coordinator</a> using Curator service discovery. This config is used by the realtime indexing services to get information about the segments loaded in the cluster.</p>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.selectors.coordinator.serviceName</code></td><td>The druid.service name of the Coordinator service. To start the Coordinator with a different name, set it with this property.</td><td>druid/coordinator</td></tr></tbody></table>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="announcing-segments">Announcing segments<a href="#announcing-segments" class="hash-link" aria-label="Direct link to Announcing segments" title="Direct link to Announcing segments"></a></h3>
<p>You can configure how to announce and unannounce Znodes in ZooKeeper (using Curator). For normal operations you do not need to override any of these configs.</p>
@@ -254,8 +254,8 @@ This is the default Druid error response mode. To explicitly enable this strateg
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="javascript">JavaScript<a href="#javascript" class="hash-link" aria-label="Direct link to JavaScript" title="Direct link to JavaScript"></a></h3>
<p>Druid supports dynamic runtime extension through JavaScript functions. This functionality can be configured through
the following properties.</p>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.javascript.enabled</code></td><td>Set to "true" to enable JavaScript functionality. This affects the JavaScript parser, filter, extractionFn, aggregator, post-aggregator, router strategy, and worker selection strategy.</td><td>false</td></tr></tbody></table>
-<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>JavaScript-based functionality is [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.javascript.enabled</code></td><td>Set to "true" to enable JavaScript functionality. This affects the JavaScript filter, extractionFn, aggregator, post-aggregator, router strategy, and worker selection strategy.</td><td>false</td></tr></tbody></table>
+<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>JavaScript-based functionality is [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="double-column-storage">Double column storage<a href="#double-column-storage" class="hash-link" aria-label="Direct link to Double column storage" title="Direct link to Double column storage"></a></h3>
<p>Prior to version 0.13.0, Druid's storage layer used a 32-bit float representation to store columns created by the
doubleSum, doubleMin, and doubleMax aggregators at indexing time.
@@ -272,15 +272,15 @@ Support for 64-bit floating point columns was released in Druid 0.11.0, so if yo
<p>This section contains the configuration options for endpoints that are supported by all services.</p>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.server.hiddenProperties</code></td><td>If property names or substring of property names (case insensitive) is in this list, responses of the <code>/status/properties</code> endpoint do not show these properties</td><td><code>["druid.s3.accessKey","druid.s3.secretKey","druid.metadata.storage.connector.password", "password", "key", [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="master-server">Master server<a href="#master-server" class="hash-link" aria-label="Direct link to Master server" title="Direct link to Master server"></a></h2>
-<p>This section contains the configuration options for the services that reside on Master servers (Coordinators and Overlords) in the suggested <a href="/docs/latest/design/architecture#druid-servers">three-server configuration</a>.</p>
+<p>This section contains the configuration options for the services that reside on Master servers (Coordinators and Overlords) in the suggested <a href="/docs/37.0.0/design/architecture#druid-servers">three-server configuration</a>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="coordinator">Coordinator<a href="#coordinator" class="hash-link" aria-label="Direct link to Coordinator" title="Direct link to Coordinator"></a></h3>
-<p>For general Coordinator services information, see <a href="/docs/latest/design/coordinator">Coordinator service</a>.</p>
+<p>For general Coordinator services information, see <a href="/docs/37.0.0/design/coordinator">Coordinator service</a>.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="static-configuration">Static Configuration<a href="#static-configuration" class="hash-link" aria-label="Direct link to Static Configuration" title="Direct link to Static Configuration"></a></h4>
<p>These Coordinator static configurations can be defined in the <code>coordinator/runtime.properties</code> file.</p>
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="coordinator-service-config">Coordinator service config<a href="#coordinator-service-config" class="hash-link" aria-label="Direct link to Coordinator service config" title="Direct link to Coordinator service config"></a></h5>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.host</code></td><td>The host for the current service. This is used to advertise the current service location as reachable from another service and should generally be specified such that <code>http://${druid.host}/</code> could actually talk to this service.</td><td><code>InetAddress.getLocalHost().getCanonicalHostName()</code></td></tr><tr><td><code>druid.bindOnHost</code></td> [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.host</code></td><td>The host for the current service. This is used to advertise the current service location as reachable from another service and should generally be specified such that <code>http://${druid.host}/</code> could actually talk to this service.</td><td><code>InetAddress.getLocalHost().getCanonicalHostName()</code></td></tr><tr><td><code>druid.bindOnHost</code></td> [...]
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="coordinator-operation">Coordinator operation<a href="#coordinator-operation" class="hash-link" aria-label="Direct link to Coordinator operation" title="Direct link to Coordinator operation"></a></h5>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.coordinator.period</code></td><td>The run period for the Coordinator. The Coordinator operates by maintaining the current state of the world in memory and periodically looking at the set of "used" segments and segments being served to make decisions about whether any changes need to be made to the data topology. This property sets the delay between each of these runs.< [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.coordinator.period</code></td><td>The run period for the Coordinator. The Coordinator operates by maintaining the current state of the world in memory and periodically looking at the set of "used" segments and segments being served to make decisions about whether any changes need to be made to the data topology. This property sets the delay between each of these runs.< [...]
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="data-management">Data management<a href="#data-management" class="hash-link" aria-label="Direct link to Data management" title="Direct link to Data management"></a></h5>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.coordinator.period.indexingPeriod</code></td><td>Period to run data management duties on the Coordinator including launching compact tasks and performing clean up of unused data. It is recommended to keep this value longer than <code>druid.manager.segments.pollDuration</code>.</td><td><code>PT1800S</code> (30 mins)</td></tr><tr><td><code>druid.coordinator.kill.pendingSegments.on [...]
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="metadata-management">Metadata management<a href="#metadata-management" class="hash-link" aria-label="Direct link to Metadata management" title="Direct link to Metadata management"></a></h5>
@@ -288,10 +288,10 @@ Support for 64-bit floating point columns was released in Druid 0.11.0, so if yo
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="segment-management">Segment management<a href="#segment-management" class="hash-link" aria-label="Direct link to Segment management" title="Direct link to Segment management"></a></h5>
<table><thead><tr><th>Property</th><th>Possible values</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.serverview.type</code></td><td>batch or http</td><td>Segment discovery method to use. "http" enables discovering segments using HTTP instead of ZooKeeper.</td><td>http</td></tr><tr><td><code>druid.coordinator.segment.awaitInitializationOnStart</code></td><td>true or false</td><td>Whether the Coordinator will wait for its view of segments to full [...]
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="metadata-retrieval">Metadata retrieval<a href="#metadata-retrieval" class="hash-link" aria-label="Direct link to Metadata retrieval" title="Direct link to Metadata retrieval"></a></h5>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.manager.config.pollDuration</code></td><td>How often the manager polls the config table for updates.</td><td><code>PT1M</code></td></tr><tr><td><code>druid.manager.segments.pollDuration</code></td><td>The duration between polls the Coordinator does for updates to the set of active segments. Generally defines the amount of lag time it can take for the Coordinator to notice new se [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.manager.config.pollDuration</code></td><td>How often the manager polls the config table for updates.</td><td><code>PT1M</code></td></tr><tr><td><code>druid.manager.segments.pollDuration</code></td><td>The duration between polls the Coordinator does for updates to the set of active segments. Generally defines the amount of lag time it can take for the Coordinator to notice new se [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="dynamic-configuration">Dynamic configuration<a href="#dynamic-configuration" class="hash-link" aria-label="Direct link to Dynamic configuration" title="Direct link to Dynamic configuration"></a></h4>
<p>The Coordinator has dynamic configurations to tune certain behavior on the fly, without requiring a service restart.
-You can configure these parameters using the <a href="/docs/latest/operations/web-console">web console</a>(recommended) or through the <a href="/docs/latest/api-reference/dynamic-configuration-api#coordinator-dynamic-configuration">Coordinator dynamic configuration API</a>.</p>
+You can configure these parameters using the <a href="/docs/37.0.0/operations/web-console">web console</a>(recommended) or through the <a href="/docs/37.0.0/api-reference/dynamic-configuration-api#coordinator-dynamic-configuration">Coordinator dynamic configuration API</a>.</p>
<p>The following table shows the dynamic configuration properties for the Coordinator.</p>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><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>smartSegmentLoading</code></td><td>Enables <a href="#smart-segment-loading">"smart" segment loading mode</a> which dynamically computes the optimal values o [...]
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="smart-segment-loading">Smart segment loading<a href="#smart-segment-loading" class="hash-link" aria-label="Direct link to Smart segment loading" title="Direct link to Smart segment loading"></a></h5>
@@ -303,60 +303,60 @@ Druid computes the values to optimize Coordinator performance, based on the curr
<p>When <code>smartSegmentLoading</code> is disabled, Druid uses the configured values of these properties.
Disable <code>smartSegmentLoading</code> only if you want to explicitly set the values of any of the above properties.</p>
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="lookups-dynamic-configuration">Lookups dynamic configuration<a href="#lookups-dynamic-configuration" class="hash-link" aria-label="Direct link to Lookups dynamic configuration" title="Direct link to Lookups dynamic configuration"></a></h5>
-<p>These configuration options control Coordinator lookup management. For configurations that affect lookup propagation, see <a href="/docs/latest/querying/lookups#dynamic-configuration">Dynamic configuration for lookups</a>.</p>
+<p>These configuration options control Coordinator lookup management. For configurations that affect lookup propagation, see <a href="/docs/37.0.0/querying/lookups#dynamic-configuration">Dynamic configuration for lookups</a>.</p>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.manager.lookups.hostDeleteTimeout</code></td><td>How long to wait for a <code>DELETE</code> request to a particular service before considering the <code>DELETE</code> a failure.</td><td><code>PT1S</code></td></tr><tr><td><code>druid.manager.lookups.hostUpdateTimeout</code></td><td>How long to wait for a <code>POST</code> request to a particular service before considering the <co [...]
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="automatic-compaction-dynamic-configuration">Automatic compaction dynamic configuration<a href="#automatic-compaction-dynamic-configuration" class="hash-link" aria-label="Direct link to Automatic compaction dynamic configuration" title="Direct link to Automatic compaction dynamic configuration"></a></h5>
-<p>You can set or update <a href="/docs/latest/data-management/automatic-compaction">automatic compaction</a> properties dynamically using the
-<a href="/docs/latest/api-reference/automatic-compaction-api">Automatic compaction API</a> without restarting Coordinators.</p>
-<p>For details about segment compaction, see <a href="/docs/latest/operations/segment-optimization">Segment size optimization</a>.</p>
+<p>You can set or update <a href="/docs/37.0.0/data-management/automatic-compaction">automatic compaction</a> properties dynamically using the
+<a href="/docs/37.0.0/api-reference/automatic-compaction-api">Automatic compaction API</a> without restarting Coordinators.</p>
+<p>For details about segment compaction, see <a href="/docs/37.0.0/operations/segment-optimization">Segment size optimization</a>.</p>
<p>You can configure automatic compaction through the following properties:</p>
-<table><thead><tr><th>Property</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>dataSource</code></td><td>The datasource name to be compacted.</td><td>yes</td></tr><tr><td><code>taskPriority</code></td><td><a href="/docs/latest/ingestion/tasks#lock-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 [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>dataSource</code></td><td>The datasource name to be compacted.</td><td>yes</td></tr><tr><td><code>taskPriority</code></td><td><a href="/docs/37.0.0/ingestion/tasks#lock-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 [...]
<p>Automatic compaction config example:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
<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. Frequent conflicts between compaction tasks and realtime tasks can cause the Coordinator's automatic compaction to hang.
You may see this issue with streaming ingestion from Kafka and Kinesis, which ingest late-arriving data.</p>
<p>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.
For example, if you want to skip over segments from thirty days prior to the end time of the most recent segment, assign <code>"skipOffsetFromLatest": "P30D"</code>.
-For more information, see <a href="/docs/latest/data-management/automatic-compaction#avoid-conflicts-with-ingestion">Avoid conflicts with ingestion</a>.</p>
+For more information, see <a href="/docs/37.0.0/data-management/automatic-compaction#avoid-conflicts-with-ingestion">Avoid conflicts with ingestion</a>.</p>
<h6 class="anchor anchorWithStickyNavbar_LWe7" id="automatic-compaction-tuningconfig">Automatic compaction tuningConfig<a href="#automatic-compaction-tuningconfig" class="hash-link" aria-label="Direct link to Automatic compaction tuningConfig" title="Direct link to Automatic compaction tuningConfig"></a></h6>
-<p>Auto-compaction supports a subset of the <a href="/docs/latest/ingestion/native-batch#tuningconfig">tuningConfig for Parallel task</a>.</p>
+<p>Auto-compaction supports a subset of the <a href="/docs/37.0.0/ingestion/native-batch#tuningconfig">tuningConfig for Parallel task</a>.</p>
<p>The following table shows the supported configurations for auto-compaction.</p>
-<table><thead><tr><th>Property</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td>type</td><td>The task type. If you're using Coordinator duties for auto-compaction, set it to <code>index_parallel</code>. If you're using compaction supervisors, set it to <code>autocompact</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 dep [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td>type</td><td>The task type. If you're using Coordinator duties for auto-compaction, set it to <code>index_parallel</code>. If you're using compaction supervisors, set it to <code>autocompact</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 dep [...]
<h6 class="anchor anchorWithStickyNavbar_LWe7" id="automatic-compaction-granularityspec">Automatic compaction granularitySpec<a href="#automatic-compaction-granularityspec" class="hash-link" aria-label="Direct link to Automatic compaction granularitySpec" title="Direct link to Automatic compaction granularitySpec"></a></h6>
-<table><thead><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">Query granularity</a> values.</td><td>No</td></tr><tr><td><code>queryGranularity</code></td><td>The resolution of timestamp storage within each segment. Defaults to &# [...]
+<table><thead><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/37.0.0/querying/granularities">Query granularity</a> values.</td><td>No</td></tr><tr><td><code>queryGranularity</code></td><td>The resolution of timestamp storage within each segment. Defaults to &# [...]
<h6 class="anchor anchorWithStickyNavbar_LWe7" id="automatic-compaction-dimensionsspec">Automatic compaction dimensionsSpec<a href="#automatic-compaction-dimensionsspec" class="hash-link" aria-label="Direct link to Automatic compaction dimensionsSpec" title="Direct link to Automatic compaction dimensionsSpec"></a></h6>
<table><thead><tr><th>Field</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>dimensions</code></td><td>A list of dimension names or objects. Defaults to null, which preserves the original dimensions. Note that setting this will cause segments manually compacted with <code>dimensionExclusions</code> to be compacted again.</td><td>No</td></tr></tbody></table>
<h6 class="anchor anchorWithStickyNavbar_LWe7" id="automatic-compaction-transformspec">Automatic compaction transformSpec<a href="#automatic-compaction-transformspec" class="hash-link" aria-label="Direct link to Automatic compaction transformSpec" title="Direct link to Automatic compaction transformSpec"></a></h6>
-<table><thead><tr><th>Field</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>filter</code></td><td>Conditionally filters input rows during compaction. Only rows that pass the filter will be included in the compacted segments. Any of Druid's standard <a href="/docs/latest/querying/filters">query filters</a> can be used. Defaults to null, which will not filter any row.</td><td>No</td></tr></tbody></table>
+<table><thead><tr><th>Field</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>filter</code></td><td>Conditionally filters input rows during compaction. Only rows that pass the filter will be included in the compacted segments. Any of Druid's standard <a href="/docs/37.0.0/querying/filters">query filters</a> can be used. Defaults to null, which will not filter any row.</td><td>No</td></tr></tbody></table>
<h6 class="anchor anchorWithStickyNavbar_LWe7" id="automatic-compaction-ioconfig">Automatic compaction ioConfig<a href="#automatic-compaction-ioconfig" class="hash-link" aria-label="Direct link to Automatic compaction ioConfig" title="Direct link to Automatic compaction ioConfig"></a></h6>
-<p>Auto-compaction supports a subset of the <a href="/docs/latest/ingestion/native-batch">ioConfig for Parallel task</a>.
+<p>Auto-compaction supports a subset of the <a href="/docs/37.0.0/ingestion/native-batch">ioConfig for Parallel task</a>.
The below is a list of the supported configurations for auto-compaction.</p>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th><th>Required</th></tr></thead><tbody><tr><td><code>dropExisting</code></td><td>If <code>true</code> the compaction task replaces all existing segments fully contained by the umbrella interval of the compacted segments when the task publishes new segments and tombstones. If compaction fails, Druid does not publish any segments or tombstones. WARNING: this functionality is still in beta. Note that changing this config d [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="overlord">Overlord<a href="#overlord" class="hash-link" aria-label="Direct link to Overlord" title="Direct link to Overlord"></a></h3>
-<p>For general Overlord service information, see <a href="/docs/latest/design/overlord">Overlord</a>.</p>
+<p>For general Overlord service information, see <a href="/docs/37.0.0/design/overlord">Overlord</a>.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="overlord-static-configuration">Overlord static configuration<a href="#overlord-static-configuration" class="hash-link" aria-label="Direct link to Overlord static configuration" title="Direct link to Overlord static configuration"></a></h4>
<p>These Overlord static configurations can be defined in the <code>overlord/runtime.properties</code> file.</p>
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="overlord-service-configs">Overlord service configs<a href="#overlord-service-configs" class="hash-link" aria-label="Direct link to Overlord service configs" title="Direct link to Overlord service configs"></a></h5>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.host</code></td><td>The host for the current service. This is used to advertise the current service location as reachable from another service and should generally be specified such that <code>http://${druid.host}/</code> could actually talk to this service.</td><td><code>InetAddress.getLocalHost().getCanonicalHostName()</code></td></tr><tr><td><code>druid.bindOnHost</code></td> [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.host</code></td><td>The host for the current service. This is used to advertise the current service location as reachable from another service and should generally be specified such that <code>http://${druid.host}/</code> could actually talk to this service.</td><td><code>InetAddress.getLocalHost().getCanonicalHostName()</code></td></tr><tr><td><code>druid.bindOnHost</code></td> [...]
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="overlord-operations">Overlord operations<a href="#overlord-operations" class="hash-link" aria-label="Direct link to Overlord operations" title="Direct link to Overlord operations"></a></h5>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.indexer.runner.type</code></td><td>Indicates whether tasks should be run locally using <code>local</code> or in a distributed environment using <code>remote</code>. The recommended option is <code>httpRemote</code>, which is similar to <code>remote</code> but uses HTTP to interact with Middle Managers instead of ZooKeeper.</td><td><code>httpRemote</code></td></tr><tr><td><code>d [...]
-<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">Overlord service</a>.</p>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.indexer.runner.taskAssignmentTimeout</code></td><td>How long to wait after a task has been assigned to a Middle Manager before throwing an error.</td><td><code>PT5M</code></td></tr><tr><td><code>druid.indexer.runner.minWorkerVersion</code></td><td>The minimum Middle Manager version to send tasks to. The version number is a string. This affects the expected behavior during certai [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.indexer.runner.type</code></td><td>Indicates whether tasks should be run locally using <code>local</code> or in a distributed environment using <code>remote</code>. The recommended option is <code>httpRemote</code>, which is similar to <code>remote</code> but uses HTTP to interact with Middle Managers instead of ZooKeeper.</td><td><code>httpRemote</code></td></tr><tr><td><code>d [...]
+<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/37.0.0/design/overlord">Overlord service</a>.</p>
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.indexer.runner.taskAssignmentTimeout</code></td><td>How long to wait after a task has been assigned to a Middle Manager before throwing an error.</td><td><code>PT5M</code></td></tr><tr><td><code>druid.indexer.runner.minWorkerVersion</code></td><td>The minimum Middle Manager version to send tasks to. The version number is a string. This affects the expected behavior during certai [...]
<p>If autoscaling is enabled, you can set these additional configs:</p>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.indexer.autoscale.strategy</code></td><td>Sets the strategy to run when autoscaling is required. One of <code>noop</code>, <code>ec2</code> or <code>gce</code>.</td><td><code>noop</code></td></tr><tr><td><code>druid.indexer.autoscale.doAutoscale</code></td><td>If set to true, autoscaling will be enabled.</td><td>false</td></tr><tr><td><code>druid.indexer.autoscale.provisionPerio [...]
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="supervisors">Supervisors<a href="#supervisors" class="hash-link" aria-label="Direct link to Supervisors" title="Direct link to Supervisors"></a></h5>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.supervisor.healthinessThreshold</code></td><td>The number of successful runs before an unhealthy supervisor is again considered healthy.</td><td>3</td></tr><tr><td><code>druid.supervisor.unhealthinessThreshold</code></td><td>The number of failed runs before the supervisor is considered unhealthy.</td><td>3</td></tr><tr><td><code>druid.supervisor.taskHealthinessThreshold</code></ [...]
-<p>The <code>druid.supervisor.idleConfig.*</code> specification in the Overlord runtime properties defines the default behavior for the entire cluster. See <a href="/docs/latest/ingestion/kinesis-ingestion#io-configuration">Idle Configuration in Kafka Supervisor IOConfig</a> to override it for an individual supervisor.</p>
-<h5 class="anchor anchorWithStickyNavbar_LWe7" id="segment-metadata-cache-experimental">Segment metadata cache (Experimental)<a href="#segment-metadata-cache-experimental" class="hash-link" aria-label="Direct link to Segment metadata cache (Experimental)" title="Direct link to Segment metadata cache (Experimental)"></a></h5>
+<p>The <code>druid.supervisor.idleConfig.*</code> specification in the Overlord runtime properties defines the default behavior for the entire cluster. See <a href="/docs/37.0.0/ingestion/kinesis-ingestion#io-configuration">Idle Configuration in Kafka Supervisor IOConfig</a> to override it for an individual supervisor.</p>
+<h5 class="anchor anchorWithStickyNavbar_LWe7" id="segment-metadata-cache">Segment metadata cache<a href="#segment-metadata-cache" class="hash-link" aria-label="Direct link to Segment metadata cache" title="Direct link to Segment metadata cache"></a></h5>
<p>The following properties pertain to segment metadata caching on the Overlord that may be used to speed up segment allocation and other metadata operations.</p>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.manager.segments.useIncrementalCache</code></td><td>Denotes the usage mode of the segment metadata incremental cache. Possible modes are: (a) <code>never</code>: Cache is disabled. (b) <code>always</code>: Reads are always done from the cache. Service start-up will be blocked until cache has synced with the metadata store at least once. Transactions will block until cache has sy [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.manager.segments.useIncrementalCache</code></td><td>Denotes the usage mode of the segment metadata incremental cache. Possible modes are: (a) <code>never</code>: Cache is disabled. (b) <code>always</code>: Reads are always done from the cache. Service start-up will be blocked until cache has synced with the metadata store at least once. Transactions will block until cache has sy [...]
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="auto-kill-unused-segments-experimental">Auto-kill unused segments (Experimental)<a href="#auto-kill-unused-segments-experimental" class="hash-link" aria-label="Direct link to Auto-kill unused segments (Experimental)" title="Direct link to Auto-kill unused segments (Experimental)"></a></h5>
-<p>These configs pertain to the new embedded mode of running <a href="/docs/latest/data-management/delete#auto-kill-data-on-the-overlord-experimental">kill tasks on the Overlord</a>.
-None of the configs that apply to <a href="/docs/latest/data-management/delete#auto-kill-data-using-coordinator-duties">auto-kill performed by the Coordinator</a> are used by this feature.</p>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.manager.segments.killUnused.enabled</code></td><td>Boolean flag to enable auto-kill of eligible unused segments on the Overlord. This feature can be used only when <a href="#segment-metadata-cache-experimental">segment metadata caching</a> is enabled on the Overlord and MUST NOT be enabled if <code>druid.coordinator.kill.on</code> is already set to <code>true</code> on the Coord [...]
+<p>These configs pertain to the new embedded mode of running <a href="/docs/37.0.0/data-management/delete#auto-kill-data-on-the-overlord-experimental">kill tasks on the Overlord</a>.
+None of the configs that apply to <a href="/docs/37.0.0/data-management/delete#auto-kill-data-using-coordinator-duties">auto-kill performed by the Coordinator</a> are used by this feature.</p>
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.manager.segments.killUnused.enabled</code></td><td>Boolean flag to enable auto-kill of eligible unused segments on the Overlord. This feature can be used only when <a href="#segment-metadata-cache">segment metadata caching</a> is enabled on the Overlord and MUST NOT be enabled if <code>druid.coordinator.kill.on</code> is already set to <code>true</code> on the Coordinator.</td>< [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="overlord-dynamic-configuration">Overlord dynamic configuration<a href="#overlord-dynamic-configuration" class="hash-link" aria-label="Direct link to Overlord dynamic configuration" title="Direct link to Overlord dynamic configuration"></a></h4>
<p>The Overlord has dynamic configurations to tune how Druid assigns tasks to workers.
-You can configure these parameters using the <a href="/docs/latest/operations/web-console">web console</a> or through the <a href="/docs/latest/api-reference/dynamic-configuration-api#overlord-dynamic-configuration">Overlord dynamic configuration API</a>.</p>
+You can configure these parameters using the <a href="/docs/37.0.0/operations/web-console">web console</a> or through the <a href="/docs/37.0.0/api-reference/dynamic-configuration-api#overlord-dynamic-configuration">Overlord dynamic configuration API</a>.</p>
<p>The following table shows the dynamic configuration properties for the Overlord.</p>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>selectStrategy</code></td><td>Describes how to assign tasks to Middle Managers. The type can be <code>equalDistribution</code>, <code>equalDistributionWithCategorySpec</code>, <code>fillCapacity</code>, <code>fillCapacityWithCategorySpec</code>, and <code>javascript</code>.</td><td><code>{"type":"equalDistribution"}</code></td></tr><tr><td><code>autoScaler</code></ [...]
<p>The following is an example of an Overlord dynamic config:</p>
@@ -425,8 +425,8 @@ If the selection logic is quite complex and cannot be easily tested in JavaScrip
its better to write a druid extension module with extending current worker selection strategies written in java.</p>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>type</code></td><td><code>javascript</code></td><td>required; must be <code>javascript</code></td></tr><tr><td><code>function</code></td><td>String representing JavaScript function</td><td></td></tr></tbody></table>
<p>The following example shows a function that sends <code>batch_index_task</code> to workers <code>10.0.0.1</code> and <code>10.0.0.2</code> and all other tasks to other available workers.</p>
-<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
-<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>JavaScript-based functionality is [...]
+<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
+<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>JavaScript-based functionality is [...]
<h6 class="anchor anchorWithStickyNavbar_LWe7" id="affinityconfig">affinityConfig<a href="#affinityconfig" class="hash-link" aria-label="Direct link to affinityConfig" title="Direct link to affinityConfig"></a></h6>
<p>Use the <code>affinityConfig</code> field to pass affinity configuration to the <code>equalDistribution</code> and <code>fillCapacity</code> strategies.
If not provided, the default is to have no affinity.</p>
@@ -445,20 +445,20 @@ If you don't provide it, it will default to not being used.</p>
<p>Amazon's EC2 together with Google's GCE are currently the only supported autoscalers.</p>
<p>EC2's autoscaler properties are:</p>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>type</code></td><td><code>ec2</code></td><td>0</td></tr><tr><td><code>minNumWorkers</code></td><td>The minimum number of workers that can be in the cluster at any given time.</td><td>0</td></tr><tr><td><code>maxNumWorkers</code></td><td>The maximum number of workers that can be in the cluster at any given time.</td><td>0</td></tr><tr><td><code>envConfig.availabilityZone</code></td><td [...]
-<p>For GCE's properties, please refer to the <a href="/docs/latest/development/extensions-contrib/gce-extensions">gce-extensions</a>.</p>
+<p>For GCE's properties, please refer to the <a href="/docs/37.0.0/development/extensions-contrib/gce-extensions">gce-extensions</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="data-server">Data server<a href="#data-server" class="hash-link" aria-label="Direct link to Data server" title="Direct link to Data server"></a></h2>
-<p>This section contains the configuration options for the services that reside on Data servers (Middle Managers/Peons and Historicals) in the suggested <a href="/docs/latest/design/architecture#druid-servers">three-server configuration</a>.</p>
-<p>Configuration options for the <a href="/docs/latest/design/indexer">Indexer process</a> are also provided here.</p>
+<p>This section contains the configuration options for the services that reside on Data servers (Middle Managers/Peons and Historicals) in the suggested <a href="/docs/37.0.0/design/architecture#druid-servers">three-server configuration</a>.</p>
+<p>Configuration options for the <a href="/docs/37.0.0/design/indexer">Indexer process</a> are also provided here.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="middle-manager-and-peon">Middle Manager and Peon<a href="#middle-manager-and-peon" class="hash-link" aria-label="Direct link to Middle Manager and Peon" title="Direct link to Middle Manager and Peon"></a></h3>
<p>These Middle Manager and Peon configurations can be defined in the <code>middleManager/runtime.properties</code> file.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="middle-manager-service-config">Middle Manager service config<a href="#middle-manager-service-config" class="hash-link" aria-label="Direct link to Middle Manager service config" title="Direct link to Middle Manager service config"></a></h4>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.host</code></td><td>The host for the current service. This is used to advertise the current service location as reachable from another service and should generally be specified such that <code>http://${druid.host}/</code> could actually talk to this service</td><td><code>InetAddress.getLocalHost().getCanonicalHostName()</code></td></tr><tr><td><code>druid.bindOnHost</code></td>< [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.host</code></td><td>The host for the current service. This is used to advertise the current service location as reachable from another service and should generally be specified such that <code>http://${druid.host}/</code> could actually talk to this service</td><td><code>InetAddress.getLocalHost().getCanonicalHostName()</code></td></tr><tr><td><code>druid.bindOnHost</code></td>< [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="middle-manager-configuration">Middle Manager configuration<a href="#middle-manager-configuration" class="hash-link" aria-label="Direct link to Middle Manager configuration" title="Direct link to Middle Manager configuration"></a></h4>
<p>Middle Managers pass their configurations down to their child peons. The Middle Manager requires the following configs:</p>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.indexer.runner.allowedPrefixes</code></td><td>Whitelist of prefixes for configs that can be passed down to child peons.</td><td><code>com.metamx</code>, <code>druid</code>, <code>org.apache.druid</code>, <code>user.timezone</code>, <code>file.encoding</code>, <code>java.io.tmpdir</code>, <code>hadoop</code></td></tr><tr><td><code>druid.indexer.runner.compressZnodes</code></td><t [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.indexer.runner.allowedPrefixes</code></td><td>Whitelist of prefixes for configs that can be passed down to child peons.</td><td><code>com.metamx</code>, <code>druid</code>, <code>org.apache.druid</code>, <code>user.timezone</code>, <code>file.encoding</code>, <code>java.io.tmpdir</code>, <code>hadoop</code></td></tr><tr><td><code>druid.indexer.runner.compressZnodes</code></td><t [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="peon-processing">Peon processing<a href="#peon-processing" class="hash-link" aria-label="Direct link to Peon processing" title="Direct link to Peon processing"></a></h4>
<p>Processing properties set on the Middle Manager are passed through to Peons.</p>
-<table><thead><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 v [...]
+<table><thead><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 v [...]
<p>The amount of direct memory needed by Druid is at least
<code>druid.processing.buffer.sizeBytes * (druid.processing.numMergeBuffers + druid.processing.numThreads + 1)</code>. You can
ensure at least this amount of direct memory is available by providing <code>-XX:MaxDirectMemorySize=<VALUE></code> in
@@ -473,7 +473,7 @@ ensure at least this amount of direct memory is available by providing <code>-XX
<p>Although Peons inherit the configurations of their parent Middle Managers, explicit child Peon configs in Middle Manager can be set by prefixing them with:</p>
<div class="language-properties codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-properties codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">druid.indexer.fork.property</span><br></span></code></pre><div class="buttonGro [...]
<p>Additional Peon configs include:</p>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.peon.mode</code></td><td>One of <code>local</code> or <code>remote</code>. Setting this property to <code>local</code> means you intend to run the Peon as a standalone process which is not recommended.</td><td><code>remote</code></td></tr><tr><td><code>druid.indexer.task.baseDir</code></td><td>Base temporary working directory.</td><td><code>System.getProperty("java.io.tmpdi [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.peon.mode</code></td><td>One of <code>local</code> or <code>remote</code>. Setting this property to <code>local</code> means you intend to run the Peon as a standalone process which is not recommended.</td><td><code>remote</code></td></tr><tr><td><code>druid.indexer.task.baseDir</code></td><td>Base temporary working directory.</td><td><code>System.getProperty("java.io.tmpdi [...]
<p>If the Peon is running in remote mode, there must be an Overlord up and running. Peons in remote mode can set the following configurations:</p>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.peon.taskActionClient.retry.minWait</code></td><td>The minimum retry time to communicate with Overlord.</td><td><code>PT5S</code></td></tr><tr><td><code>druid.peon.taskActionClient.retry.maxWait</code></td><td>The maximum retry time to communicate with Overlord.</td><td><code>PT1M</code></td></tr><tr><td><code>druid.peon.taskActionClient.retry.maxRetryCount</code></td><td>The ma [...]
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="segmentwriteoutmediumfactory">SegmentWriteOutMediumFactory<a href="#segmentwriteoutmediumfactory" class="hash-link" aria-label="Direct link to SegmentWriteOutMediumFactory" title="Direct link to SegmentWriteOutMediumFactory"></a></h5>
@@ -492,18 +492,18 @@ This type of medium is preferred, but it may require you to allow the JVM to hav
<p><strong>On-heap memory</strong> (<code>onHeapMemory</code>) creates buffers using the allocated heap memory of the JVM process running a task. 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>
</li>
</ul>
-<p>For most types of tasks, <code>SegmentWriteOutMediumFactory</code> can be configured per-task (see <a href="/docs/latest/ingestion/tasks">Tasks</a> for more information), but if it's not specified for a task, or it's not supported for a particular task type, then Druid uses the value from the following configuration:</p>
+<p>For most types of tasks, <code>SegmentWriteOutMediumFactory</code> can be configured per-task (see <a href="/docs/37.0.0/ingestion/tasks">Tasks</a> for more information), but if it's not specified for a task, or it's not supported for a particular task type, then Druid uses the value from the following configuration:</p>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.peon.defaultSegmentWriteOutMediumFactory.type</code></td><td><code>tmpFile</code>, <code>offHeapMemory</code>, or <code>onHeapMemory</code></td><td><code>tmpFile</code></td></tr></tbody></table>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="indexer">Indexer<a href="#indexer" class="hash-link" aria-label="Direct link to Indexer" title="Direct link to Indexer"></a></h3>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="indexer-process-configuration">Indexer process configuration<a href="#indexer-process-configuration" class="hash-link" aria-label="Direct link to Indexer process configuration" title="Direct link to Indexer process configuration"></a></h4>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><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><code>InetAddress.getLocalHost().getCanonicalHostName()</code></td></tr><tr><td><code>druid.bindOnHost</code></td [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><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><code>InetAddress.getLocalHost().getCanonicalHostName()</code></td></tr><tr><td><code>druid.bindOnHost</code></td [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="indexer-general-configuration">Indexer general configuration<a href="#indexer-general-configuration" class="hash-link" aria-label="Direct link to Indexer general configuration" title="Direct link to Indexer general configuration"></a></h4>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.worker.version</code></td><td>Version identifier for the Indexer.</td><td>0</td></tr><tr><td><code>druid.worker.capacity</code></td><td>Maximum number of tasks the Indexer can accept.</td><td>Number of available processors - 1</td></tr><tr><td><code>druid.worker.baseTaskDirs</code></td><td>List of base temporary working directories, one of which is assigned per task in a round-r [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.worker.version</code></td><td>Version identifier for the Indexer.</td><td>0</td></tr><tr><td><code>druid.worker.capacity</code></td><td>Maximum number of tasks the Indexer can accept.</td><td>Number of available processors - 1</td></tr><tr><td><code>druid.worker.baseTaskDirs</code></td><td>List of base temporary working directories, one of which is assigned per task in a round-r [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="indexer-concurrent-requests">Indexer concurrent requests<a href="#indexer-concurrent-requests" class="hash-link" aria-label="Direct link to Indexer concurrent requests" title="Direct link to Indexer concurrent requests"></a></h4>
<p>Druid uses Jetty to serve HTTP requests.</p>
-<table><thead><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#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 o [...]
+<table><thead><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/37.0.0/design/indexer#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 o [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="indexer-processing-resources">Indexer processing resources<a href="#indexer-processing-resources" class="hash-link" aria-label="Direct link to Indexer processing resources" title="Direct link to Indexer processing resources"></a></h4>
-<table><thead><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 mor [...]
+<table><thead><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 mor [...]
<p>The amount of direct memory needed by Druid is at least
<code>druid.processing.buffer.sizeBytes * (druid.processing.numMergeBuffers + druid.processing.numThreads + 1)</code>. You can
ensure at least this amount of direct memory is available by providing <code>-XX:MaxDirectMemorySize=<VALUE></code> at the command
@@ -516,12 +516,12 @@ 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 class="anchor anchorWithStickyNavbar_LWe7" id="historical">Historical<a href="#historical" class="hash-link" aria-label="Direct link to Historical" title="Direct link to Historical"></a></h3>
-<p>For general Historical service information, see <a href="/docs/latest/design/historical">Historical</a>.</p>
+<p>For general Historical service information, see <a href="/docs/37.0.0/design/historical">Historical</a>.</p>
<p>These Historical configurations can be defined in the <code>historical/runtime.properties</code> file.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="historical-service-configuration">Historical service configuration<a href="#historical-service-configuration" class="hash-link" aria-label="Direct link to Historical service configuration" title="Direct link to Historical service configuration"></a></h4>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.host</code></td><td>The host for the current service. This is used to advertise the current service location as reachable from another service and should generally be specified such that <code>http://${druid.host}/</code> could actually talk to this service</td><td><code>InetAddress.getLocalHost().getCanonicalHostName()</code></td></tr><tr><td><code>druid.bindOnHost</code></td>< [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.host</code></td><td>The host for the current service. This is used to advertise the current service location as reachable from another service and should generally be specified such that <code>http://${druid.host}/</code> could actually talk to this service</td><td><code>InetAddress.getLocalHost().getCanonicalHostName()</code></td></tr><tr><td><code>druid.bindOnHost</code></td>< [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="historical-general-configuration">Historical general configuration<a href="#historical-general-configuration" class="hash-link" aria-label="Direct link to Historical general configuration" title="Direct link to Historical general configuration"></a></h4>
-<table><thead><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 service wants assigned to it. The Coordinator service will attempt to assign segments to a Historical service 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, [...]
+<table><thead><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 service wants assigned to it. The Coordinator service will attempt to assign segments to a Historical service 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, [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="storing-segments">Storing segments<a href="#storing-segments" class="hash-link" aria-label="Direct link to Storing segments" title="Direct link to Storing segments"></a></h4>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.segmentCache.locations</code></td><td>Segments assigned to a Historical services are first stored on the local file system (in a disk cache) and then served by the Historical services. These locations define where that local cache resides. This value cannot be NULL or EMPTY. Here is an example <code>druid.segmentCache.locations=[{"path": "/mnt/druidSegments", [...]
<p>In <code>druid.segmentCache.locations</code>, <code>freeSpacePercent</code> was added because the <code>maxSize</code> setting is only a theoretical limit and assumes that much space will always be available for storing segments. In case of any druid bug leading to unaccounted segment files left alone on disk or some other service writing stuff to disk, This check can start failing segment loading early before filling up the disk completely and leaving the host usable otherwise.</p>
@@ -531,9 +531,9 @@ line.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="historical-query-configs">Historical query configs<a href="#historical-query-configs" class="hash-link" aria-label="Direct link to Historical query configs" title="Direct link to Historical query configs"></a></h4>
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="concurrent-requests">Concurrent requests<a href="#concurrent-requests" class="hash-link" aria-label="Direct link to Concurrent requests" title="Direct link to Concurrent requests"></a></h5>
<p>Druid uses Jetty to serve HTTP requests.</p>
-<table><thead><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.</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 [...]
+<table><thead><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.</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 [...]
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="processing">Processing<a href="#processing" class="hash-link" aria-label="Direct link to Processing" title="Direct link to Processing"></a></h5>
-<table><thead><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 [...]
+<table><thead><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 [...]
<p>The amount of direct memory needed by Druid is at least
<code>druid.processing.buffer.sizeBytes * (druid.processing.numMergeBuffers + druid.processing.numThreads + 1)</code>. You can
ensure at least this amount of direct memory is available by providing <code>-XX:MaxDirectMemorySize=<VALUE></code> at the command
@@ -545,13 +545,13 @@ line.</p>
<table><thead><tr><th>Property</th><th>Possible Values</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.historical.cache.useCache</code></td><td>true, false</td><td>Enable the cache on the Historical.</td><td>false</td></tr><tr><td><code>druid.historical.cache.populateCache</code></td><td>true, false</td><td>Populate the cache on the Historical.</td><td>false</td></tr><tr><td><code>druid.historical.cache.unCacheable</code></td><td>All druid query types</td> [...]
<p>See <a href="#cache-configuration">cache configuration</a> for how to configure cache settings.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="query-server">Query server<a href="#query-server" class="hash-link" aria-label="Direct link to Query server" title="Direct link to Query server"></a></h2>
-<p>This section contains the configuration options for the services that reside on Query servers (Brokers) in the suggested <a href="/docs/latest/design/architecture#druid-servers">three-server configuration</a>.</p>
-<p>Configuration options for the <a href="/docs/latest/design/router">Router process</a> are also provided here.</p>
+<p>This section contains the configuration options for the services that reside on Query servers (Brokers) in the suggested <a href="/docs/37.0.0/design/architecture#druid-servers">three-server configuration</a>.</p>
+<p>Configuration options for the <a href="/docs/37.0.0/design/router">Router process</a> are also provided here.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="broker">Broker<a href="#broker" class="hash-link" aria-label="Direct link to Broker" title="Direct link to Broker"></a></h3>
-<p>For general Broker process information, see <a href="/docs/latest/design/broker">here</a>.</p>
+<p>For general Broker process information, see <a href="/docs/37.0.0/design/broker">here</a>.</p>
<p>These Broker configurations can be defined in the <code>broker/runtime.properties</code> file.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="broker-process-configs">Broker process configs<a href="#broker-process-configs" class="hash-link" aria-label="Direct link to Broker process configs" title="Direct link to Broker process configs"></a></h4>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><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><code>InetAddress.getLocalHost().getCanonicalHostName()</code></td></tr><tr><td><code>druid.bindOnHost</code></td [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><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><code>InetAddress.getLocalHost().getCanonicalHostName()</code></td></tr><tr><td><code>druid.bindOnHost</code></td [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="query-configuration">Query configuration<a href="#query-configuration" class="hash-link" aria-label="Direct link to Query configuration" title="Direct link to Query configuration"></a></h4>
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="query-routing">Query routing<a href="#query-routing" class="hash-link" aria-label="Direct link to Query routing" title="Direct link to Query routing"></a></h5>
<table><thead><tr><th>Property</th><th>Possible Values</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.broker.balancer.type</code></td><td><code>random</code>, <code>connectionCount</code></td><td>Determines how the broker balances connections to Historical processes. <code>random</code> choose randomly, <code>connectionCount</code> picks the process with the fewest number of active connections to</td><td><code>random</code></td></tr><tr><td><code>druid.br [...]
@@ -560,17 +560,17 @@ line.</p>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.query.scheduler.numThreads</code></td><td>Maximum number of concurrently-running queries. When this parameter is set lower than <code>druid.server.http.numThreads</code>, query requests beyond the limit are put into the Jetty request queue. This has the effect of reserving the leftover Jetty threads for non-query requests.<br><br>When this parameter is set equal to or higher tha [...]
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="prioritization-strategies">Prioritization strategies<a href="#prioritization-strategies" class="hash-link" aria-label="Direct link to Prioritization strategies" title="Direct link to Prioritization strategies"></a></h5>
<h6 class="anchor anchorWithStickyNavbar_LWe7" id="manual-prioritization-strategy">Manual prioritization strategy<a href="#manual-prioritization-strategy" class="hash-link" aria-label="Direct link to Manual prioritization strategy" title="Direct link to Manual prioritization strategy"></a></h6>
-<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-reference">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/37.0.0/querying/query-context-reference">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 class="anchor anchorWithStickyNavbar_LWe7" id="threshold-prioritization-strategy">Threshold prioritization strategy<a href="#threshold-prioritization-strategy" class="hash-link" aria-label="Direct link to Threshold prioritization strategy" title="Direct link to Threshold prioritization strategy"></a></h6>
<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>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.query.scheduler.prioritization.periodThreshold</code></td><td>ISO duration threshold for how old data can be queried before automatically adjusting query priority.</td><td>none</td></tr><tr><td><code>druid.query.scheduler.prioritization.durationThreshold</code></td><td>ISO duration threshold for maximum duration a queries interval can span before the priority is automatically ad [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.query.scheduler.prioritization.periodThreshold</code></td><td>ISO duration threshold for how old data can be queried before automatically adjusting query priority.</td><td>none</td></tr><tr><td><code>druid.query.scheduler.prioritization.durationThreshold</code></td><td>ISO duration threshold for maximum duration a queries interval can span before the priority is automatically ad [...]
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="laning-strategies">Laning strategies<a href="#laning-strategies" class="hash-link" aria-label="Direct link to Laning strategies" title="Direct link to Laning strategies"></a></h5>
<h6 class="anchor anchorWithStickyNavbar_LWe7" id="no-laning-strategy">No laning strategy<a href="#no-laning-strategy" class="hash-link" aria-label="Direct link to No laning strategy" title="Direct link to No laning strategy"></a></h6>
<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 class="anchor anchorWithStickyNavbar_LWe7" id="highlow-laning-strategy">'High/Low' laning strategy<a href="#highlow-laning-strategy" class="hash-link" aria-label="Direct link to 'High/Low' laning strategy" title="Direct link to 'High/Low' laning strategy"></a></h6>
<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 consu [...]
-<p>If the <code>low</code> lane is specified in the <a href="/docs/latest/querying/query-context-reference">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/37.0.0/querying/query-context-reference">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><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.query.scheduler.laning.maxLowPercent</code></td><td>Maximum percent of the smaller number of <code>druid.server.http.numThreads</code> or <code>druid.query.scheduler.numThreads</code>, defining the number of HTTP threads that can be used by queries with a priority lower than 0. Value must be an integer in the range 1 to 100, and will be rounded up</td><td>No default, must be set [...]
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="guardrails-for-materialization-of-subqueries">Guardrails for materialization of subqueries<a href="#guardrails-for-materialization-of-subqueries" class="hash-link" aria-label="Direct link to Guardrails for materialization of subqueries" title="Direct link to Guardrails for materialization of subqueries"></a></h5>
@@ -594,21 +594,21 @@ rows in the order of magnitude of around 10 million and above. In those scenario
<p>If you choose to modify or set any of the above limits, you must also think about the heap size of all Brokers, Historicals, and task Peons that process data for the subqueries to accommodate the subquery results.
There is no formula to calculate the correct value. Trial and error is the best approach.</p>
<h6 class="anchor anchorWithStickyNavbar_LWe7" id="manual-laning-strategy">Manual laning strategy<a href="#manual-laning-strategy" class="hash-link" aria-label="Direct link to Manual laning strategy" title="Direct link to Manual laning strategy"></a></h6>
-<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-reference">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/37.0.0/querying/query-context-reference">query context</a> will be subjected to those limits.</p>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.query.scheduler.laning.lanes.{name}</code></td><td>Maximum percent or exact limit of queries that can concurrently run in the defined lanes. Any number of lanes may be defined like this. The lane names 'total' and 'default' are reserved for internal use.</td><td>No default, must define at least one lane with a limit above 0. If <code>druid.query.scheduler.lan [...]
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="server-configuration">Server configuration<a href="#server-configuration" class="hash-link" aria-label="Direct link to Server configuration" title="Direct link to Server configuration"></a></h5>
<p>Druid uses Jetty to serve HTTP requests. Each query being processed consumes a single thread from <code>druid.server.http.numThreads</code>, so consider defining <code>druid.query.scheduler.numThreads</code> to a lower value in order to reserve HTTP threads for responding to health checks, lookup loading, and other non-query, (in most cases) comparatively very short-lived, HTTP requests.</p>
-<table><thead><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.</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 [...]
+<table><thead><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.</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 [...]
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="client-configuration">Client configuration<a href="#client-configuration" class="hash-link" aria-label="Direct link to Client configuration" title="Direct link to Client configuration"></a></h5>
<p>Druid Brokers use an HTTP client to communicate with data servers (Historical servers and real-time tasks). This
client has the following configuration options.</p>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.broker.http.numConnections</code></td><td>Size of connection pool for the Broker to connect to Historical and real-time processes. If there are more queries than this number that all need to speak to the same process, then they will queue up.</td><td>20</td></tr><tr><td><code>druid.broker.http.eagerInitialization</code></td><td>Indicates that http connections from Broker to Hist [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.broker.http.numConnections</code></td><td>Size of connection pool for the Broker to connect to Historical and real-time processes. If there are more queries than this number that all need to speak to the same process, then they will queue up.</td><td>20</td></tr><tr><td><code>druid.broker.http.eagerInitialization</code></td><td>Indicates that http connections from Broker to Hist [...]
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="retry-policy">Retry policy<a href="#retry-policy" class="hash-link" aria-label="Direct link to Retry policy" title="Direct link to Retry policy"></a></h5>
<p>Druid broker can optionally retry queries internally for transient errors.</p>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.broker.retryPolicy.numTries</code></td><td>Number of tries.</td><td>1</td></tr></tbody></table>
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="processing-1">Processing<a href="#processing-1" class="hash-link" aria-label="Direct link to Processing" title="Direct link to Processing"></a></h5>
<p>The broker uses processing configs for nested groupBy queries.</p>
-<table><thead><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 v [...]
+<table><thead><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 v [...]
<p>The amount of direct memory needed by Druid is at least
<code>druid.processing.buffer.sizeBytes * (druid.processing.numMergeBuffers + 1)</code>. You can
ensure at least this amount of direct memory is available by providing <code>-XX:MaxDirectMemorySize=<VALUE></code> at the command
@@ -622,9 +622,12 @@ of these queries.</p>
to adjust it as they see fit. A common use of this configuration is to override the query priority of the cluster generated
queries in order to avoid running as a default priority of 0.</p>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.broker.internal.query.config.context</code></td><td>A string formatted <code>key:value</code> map of a query context to add to internally generated broker queries.</td><td>null</td></tr></tbody></table>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="dynamic-configuration-1">Dynamic configuration<a href="#dynamic-configuration-1" class="hash-link" aria-label="Direct link to Dynamic configuration" title="Direct link to Dynamic configuration"></a></h4>
+<p>The Broker has dynamic configurations to tune certain behavior dynamically, without requiring a service restart.
+You can configure these parameters using the <a href="/docs/37.0.0/operations/web-console">web console</a> (recommended) or through the <a href="/docs/37.0.0/api-reference/dynamic-configuration-api#broker-dynamic-configuration">Broker dynamic configuration API</a>.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sql">SQL<a href="#sql" class="hash-link" aria-label="Direct link to SQL" title="Direct link to SQL"></a></h4>
<p>The Druid SQL server is configured through the following properties on the Broker.</p>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.sql.enable</code></td><td>Whether to enable SQL at all, including background metadata fetching. If false, this overrides all other SQL-related properties and disables SQL metadata, serving, and planning completely.</td><td>true</td></tr><tr><td><code>druid.sql.avatica.enable</code></td><td>Whether to enable JDBC querying at <code>/druid/v2/sql/avatica/</code>.</td><td>true</td>< [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.sql.enable</code></td><td>Whether to enable SQL at all, including background metadata fetching. If false, this overrides all other SQL-related properties and disables SQL metadata, serving, and planning completely.</td><td>true</td></tr><tr><td><code>druid.sql.avatica.enable</code></td><td>Whether to enable JDBC querying at <code>/druid/v2/sql/avatica/</code>.</td><td>true</td>< [...]
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>Previous versions of Druid had pr [...]
These properties are no longer available. Since Druid 0.18.0, you can use <code>druid.server.http.maxSubqueryRows</code> to control the maximum
number of rows permitted across all subqueries.</p></div></div>
@@ -632,25 +635,25 @@ number of rows permitted across all subqueries.</p></div></div>
<p>You can optionally only configure caching to be enabled on the Broker by setting caching configs here.</p>
<table><thead><tr><th>Property</th><th>Possible Values</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.broker.cache.useCache</code></td><td>true, false</td><td>Enable the cache on the Broker.</td><td>false</td></tr><tr><td><code>druid.broker.cache.populateCache</code></td><td>true, false</td><td>Populate the cache on the Broker.</td><td>false</td></tr><tr><td><code>druid.broker.cache.useResultLevelCache</code></td><td>true, false</td><td>Enable result leve [...]
<p>See <a href="#cache-configuration">cache configuration</a> for how to configure cache settings.</p>
-<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>Note: Even if cache is enabled, f [...]
-See <a href="/docs/latest/querying/caching">Query caching</a> for more information.</p></div></div>
+<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>Note: Even if cache is enabled, f [...]
+See <a href="/docs/37.0.0/querying/caching">Query caching</a> for more information.</p></div></div>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="segment-discovery">Segment discovery<a href="#segment-discovery" class="hash-link" aria-label="Direct link to Segment discovery" title="Direct link to Segment discovery"></a></h4>
<table><thead><tr><th>Property</th><th>Possible Values</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.serverview.type</code></td><td>batch or http</td><td>Segment discovery method to use. "http" enables discovering segments using HTTP instead of ZooKeeper.</td><td>http</td></tr><tr><td><code>druid.broker.segment.watchedTiers</code></td><td>List of strings</td><td>The Broker watches segment announcements from processes that serve segments to buil [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="metrics-monitors">Metrics monitors<a href="#metrics-monitors" class="hash-link" aria-label="Direct link to Metrics monitors" title="Direct link to Metrics monitors"></a></h2>
-<p>You can configure Druid services to emit <a href="/docs/latest/operations/metrics">metrics</a> regularly from a number of <a href="#metrics-monitors-for-each-service">monitors</a> via <a href="#metrics-emitters">emitters</a>. The following table lists general configurations for metrics:</p>
+<p>You can configure Druid services to emit <a href="/docs/37.0.0/operations/metrics">metrics</a> regularly from a number of <a href="#metrics-monitors-for-each-service">monitors</a> via <a href="#metrics-emitters">emitters</a>. The following table lists general configurations for metrics:</p>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.monitoring.emissionPeriod</code></td><td>Frequency that Druid emits metrics.</td><td><code>PT1M</code></td></tr><tr><td><a href="#metrics-monitors-for-each-service"><code>druid.monitoring.monitors</code></a></td><td>Sets list of Druid monitors used by a service.</td><td>none (no monitors)</td></tr><tr><td><a href="#metrics-emitters"><code>druid.emitter</code></a></td><td>Setting [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="metrics-monitors-for-each-service">Metrics monitors for each service<a href="#metrics-monitors-for-each-service" class="hash-link" aria-label="Direct link to Metrics monitors for each service" title="Direct link to Metrics monitors for each service"></a></h3>
<p>Metric monitoring is an essential part of Druid operations.
Monitors can be enabled by configuring the property <code>druid.monitoring.monitors</code> in the common configuration file, <code>common.runtime.properties</code>.
If a monitor is not supported on a certain service, it will simply be ignored while starting up that service.</p>
<p>The following table lists available monitors and the respective services where they are supported:</p>
-<table><thead><tr><th>Name</th><th>Description</th><th>Service</th></tr></thead><tbody><tr><td><code>org.apache.druid.client.cache.CacheMonitor</code></td><td>Emits metrics (to logs) about the segment results cache for Historical and Broker services. Reports typical cache statistics include hits, misses, rates, and size (bytes and number of entries), as well as timeouts and and errors.</td><td>Broker, Historical, Indexer, Peon</td></tr><tr><td><code>org.apache.druid.java.util.metrics.Osh [...]
+<table><thead><tr><th>Name</th><th>Description</th><th>Service</th></tr></thead><tbody><tr><td><code>org.apache.druid.client.cache.CacheMonitor</code></td><td>Emits metrics (to logs) about the segment results cache for Historical and Broker services. Reports typical cache statistics include hits, misses, rates, and size (bytes and number of entries), as well as timeouts and and errors.</td><td>Broker, Historical, Indexer, Peon</td></tr><tr><td><code>org.apache.druid.java.util.metrics.Osh [...]
<p>For example, if you only wanted monitors on all services for system and JVM information, you'd add the following to <code>common.runtime.properties</code>:</p>
<div class="language-properties codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-properties codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">druid.monitoring.monitors=["org.apache.druid.java.util.metrics.OshiSysMoni [...]
<p>All the services in your Druid deployment would have these two monitors.</p>
<p>If you want any service specific monitors though, you need to add all the monitors you want to run for that service to the service's <code>runtime.properties</code> file even if they are listed in the common file. The service specific properties take precedence.</p>
-<p>The following example adds the <code>TaskCountStatsMonitor</code> and <code>TaskSlotCountStatsMonitor</code> as well as the <code>OshiSysMonitor</code> and <code>JvmMonitor</code> from the previous example to the Overlord service (<code>coordinator-overlord/runtime.properties</code>):</p>
-<div class="language-properties codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-properties codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">druid.monitoring.monitors=["org.apache.druid.server.metrics.TaskCountStats [...]
+<p>The following example adds the <code>TaskCountStatsMonitor</code>, <code>TaskSlotCountStatsMonitor</code>, and <code>SupervisorStatsMonitor</code> as well as the <code>OshiSysMonitor</code> and <code>JvmMonitor</code> from the previous example to the Overlord service (<code>coordinator-overlord/runtime.properties</code>):</p>
+<div class="language-properties codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-properties codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">druid.monitoring.monitors=["org.apache.druid.server.metrics.TaskCountStats [...]
<p>If you don't include <code>OshiSysMonitor</code> and <code>JvmMonitor</code> in the Overlord's <code>runtime.properties</code> file, the monitors don't get loaded onto the Overlord despite being specified in the common file.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="metrics-emitters">Metrics emitters<a href="#metrics-emitters" class="hash-link" aria-label="Direct link to Metrics emitters" title="Direct link to Metrics emitters"></a></h3>
<p>There are several emitters available:</p>
@@ -668,14 +671,14 @@ If a monitor is not supported on a certain service, it will simply be ignored wh
<code>druid.emitter.logging.loggerClass</code> to emit events. Each event is logged as a single <code>json</code> object with a
<a href="https://logging.apache.org/log4j/2.x/manual/markers.html" target="_blank" rel="noopener noreferrer">Marker</a> as the feed of the event. Users may wish to edit the
log4j config to route these logs to different sources based on the feed of the event.</p>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.emitter.logging.loggerClass</code></td><td>The class used for logging.</td><td><code>org.apache.druid.java.util.emitter.core.LoggingEmitter</code></td></tr><tr><td><code>druid.emitter.logging.logLevel</code></td><td>Choices: debug, info, warn, error. The log level at which message are logged.</td><td>info</td></tr></tbody></table>
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.emitter.logging.loggerClass</code></td><td>The class used for logging.</td><td><code>org.apache.druid.java.util.emitter.core.LoggingEmitter</code></td></tr><tr><td><code>druid.emitter.logging.logLevel</code></td><td>Choices: debug, info, warn, error. The log level at which message are logged.</td><td>info</td></tr><tr><td><code>druid.emitter.logging.shouldFilterMetrics</code></t [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="http-emitter-module">HTTP emitter module<a href="#http-emitter-module" class="hash-link" aria-label="Direct link to HTTP emitter module" title="Direct link to HTTP emitter module"></a></h4>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><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/o [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><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/37.0.0/o [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="http-emitter-module-tls-overrides">HTTP emitter module TLS overrides<a href="#http-emitter-module-tls-overrides" class="hash-link" aria-label="Direct link to HTTP emitter module TLS overrides" title="Direct link to HTTP emitter module TLS overrides"></a></h4>
-<p>By default, when sending events to a TLS-enabled receiver, the HTTP Emitter uses an SSLContext obtained from the service described at <a href="/docs/latest/operations/tls-support">Druid's internal communication over TLS</a>, that is the same SSLContext that would be used for internal communications between Druid services.</p>
+<p>By default, when sending events to a TLS-enabled receiver, the HTTP Emitter uses an SSLContext obtained from the service described at <a href="/docs/37.0.0/operations/tls-support">Druid's internal communication over TLS</a>, that is the same SSLContext that would be used for internal communications between Druid services.</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>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.emitter.http.ssl.useDefaultJavaContext</code></td><td>If set to true, the HttpEmitter will use <code>SSLContext.getDefault()</code>, the default Java SSLContext, and all other properties below are ignored.</td><td>false</td></tr><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 sto [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.emitter.http.ssl.useDefaultJavaContext</code></td><td>If set to true, the HttpEmitter will use <code>SSLContext.getDefault()</code>, the default Java SSLContext, and all other properties below are ignored.</td><td>false</td></tr><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 sto [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="parametrized-http-emitter-module">Parametrized HTTP emitter module<a href="#parametrized-http-emitter-module" class="hash-link" aria-label="Direct link to Parametrized HTTP emitter module" title="Direct link to Parametrized HTTP emitter module"></a></h4>
<p>The parametrized emitter takes the same configs as the <a href="#http-emitter-module"><code>http</code> emitter</a> using the prefix <code>druid.emitter.parametrized.httpEmitting.</code>.
For example:</p>
@@ -690,7 +693,7 @@ Instead use <code>recipientBaseUrlPattern</code> described in the table below.</
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="composing-emitter-module">Composing emitter module<a href="#composing-emitter-module" class="hash-link" aria-label="Direct link to Composing emitter module" title="Direct link to Composing emitter module"></a></h4>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.emitter.composing.emitters</code></td><td>List of emitter modules to load, such as ["logging","http"].</td><td>[]</td></tr></tbody></table>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="graphite-emitter">Graphite emitter<a href="#graphite-emitter" class="hash-link" aria-label="Direct link to Graphite emitter" title="Direct link to Graphite emitter"></a></h4>
-<p>To use graphite as emitter set <code>druid.emitter=graphite</code>. For configuration details, see <a href="/docs/latest/development/extensions-contrib/graphite">Graphite emitter</a> for the Graphite emitter Druid extension.</p>
+<p>To use graphite as emitter set <code>druid.emitter=graphite</code>. For configuration details, see <a href="/docs/37.0.0/development/extensions-contrib/graphite">Graphite emitter</a> for the Graphite emitter Druid extension.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="switching-emitter">Switching emitter<a href="#switching-emitter" class="hash-link" aria-label="Direct link to Switching emitter" title="Direct link to Switching emitter"></a></h4>
<p>To use switching as emitter set <code>druid.emitter=switching</code>.</p>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.emitter.switching.emitters</code></td><td>JSON map of feed to list of emitter modules that will be used for the mapped feed, such as <code>{"metrics":["http"], "alerts":["logging"]}</code></td><td></td></tr><tr><td><code>druid.emitter.switching.defaultEmitters</code></td><td>JSON list of emitter modules to load that will be used if there i [...]
@@ -714,7 +717,7 @@ for both Broker and Historical processes, when defined in the common properties
<p>A highly performant local cache implementation for Druid based on <a href="https://github.com/ben-manes/caffeine" target="_blank" rel="noopener noreferrer">Caffeine</a>. Requires a JRE8u60 or higher if using <code>COMMON_FJP</code>.</p>
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration"></a></h5>
<p>The following table shows the configuration options known to this module:</p>
-<table><thead><tr><th><code>runtime.properties</code></th><th>Description</th><th>Default</th></tr></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">here</a>.</td><td>min(1GiB, Runtime.maxMe [...]
+<table><thead><tr><th><code>runtime.properties</code></th><th>Description</th><th>Default</th></tr></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/37.0.0/configuration/human-readable-byte">here</a>.</td><td>min(1GiB, Runtime.maxMe [...]
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="druidcachecacheexecutorfactory"><code>druid.cache.cacheExecutorFactory</code><a href="#druidcachecacheexecutorfactory" class="hash-link" aria-label="Direct link to druidcachecacheexecutorfactory" title="Direct link to druidcachecacheexecutorfactory"></a></h5>
<p>The following are the possible values for <code>druid.cache.cacheExecutorFactory</code>, which controls how maintenance tasks are run:</p>
<ul>
@@ -737,7 +740,7 @@ If there is an L1 miss and L2 hit, it will also populate L1.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="general-query-configuration">General query configuration<a href="#general-query-configuration" class="hash-link" aria-label="Direct link to General query configuration" title="Direct link to General query configuration"></a></h2>
<p>This section describes configurations that control behavior of Druid's query types, applicable to Broker, Historical, and Middle Manager processes.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="overriding-default-query-context-values">Overriding default query context values<a href="#overriding-default-query-context-values" class="hash-link" aria-label="Direct link to Overriding default query context values" title="Direct link to Overriding default query context values"></a></h3>
-<p>You can override any <a href="/docs/latest/querying/query-context-reference#general-parameters">query context general parameter</a> default value by setting the runtime property in the format of <code>druid.query.default.context.{query_context_key}</code>.
+<p>You can override any <a href="/docs/37.0.0/querying/query-context-reference#general-parameters">query context general parameter</a> default value by setting the runtime property in the format of <code>druid.query.default.context.{query_context_key}</code>.
The <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. You can override the runtime property value if the value for the same key is specified in the query contexts.</p>
<p>The precedence chain for query context values is as follows:</p>
<p>hard-coded default value in Druid code <code><-</code> runtime property not prefixed with <code>druid.query.default.context</code>
@@ -756,18 +759,16 @@ If runtime property only contains <code>druid.query.default.context.maxQueuedByt
<code>druid.broker.http.maxQueuedBytes=x</code> and <code>druid.query.default.context.maxQueuedBytes=y</code>, then the value of
<code>druid.query.default.context.maxQueuedBytes</code>, <code>y</code>, is use (given that query does not have <code>maxQueuedBytes</code> in the
context). If query does have <code>maxQueuedBytes</code> in the context, then that value is use instead.</p>
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="topn-query-config">TopN query config<a href="#topn-query-config" class="hash-link" aria-label="Direct link to TopN query config" title="Direct link to TopN query config"></a></h3>
-<table><thead><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#aliasing">TopN Aliasing</a> for details.</td><td>1000</td></tr></tbody></table>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="search-query-config">Search query config<a href="#search-query-config" class="hash-link" aria-label="Direct link to Search query config" title="Direct link to Search query config"></a></h3>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.query.search.maxSearchLimit</code></td><td>Maximum number of search results to return.</td><td>1000</td></tr><tr><td><code>druid.query.search.searchStrategy</code></td><td>Default search query strategy.</td><td><code>useIndexes</code></td></tr></tbody></table>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="segmentmetadata-query-config">SegmentMetadata query config<a href="#segmentmetadata-query-config" class="hash-link" aria-label="Direct link to SegmentMetadata query config" title="Direct link to SegmentMetadata query config"></a></h3>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.query.segmentMetadata.defaultHistory</code></td><td>When no interval is specified in the query, use a default interval of defaultHistory before the end time of the most recent segment, specified in ISO8601 format. This property also controls the duration of the default interval used by <code>GET</code> <code>/druid/v2/datasources/{dataSourceName}</code> interactions for retrievi [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="groupby-query-config">GroupBy query config<a href="#groupby-query-config" class="hash-link" aria-label="Direct link to GroupBy query config" title="Direct link to GroupBy query config"></a></h3>
-<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 Middle Manager processes. You can set the query context parameters through the <a href="/docs/latest/querying/query-context-reference">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 Middle Manager processes. You can set the query context parameters through the <a href="/docs/37.0.0/querying/query-context-reference">query context</a>.</p>
<p>Supported runtime properties:</p>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.query.groupBy.maxSelectorDictionarySize</code></td><td>Maximum amount of heap space (approximately) to use for per-segment string dictionaries. See <a href="/docs/latest/querying/groupbyquery#memory-tuning-and-resource-limits">groupBy memory tuning and resource limits</a> for details.</td><td>100000000</td></tr><tr><td><code>druid.query.groupBy.maxMergingDictionarySize</code></t [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.query.groupBy.maxSelectorDictionarySize</code></td><td>Maximum amount of heap space (approximately) to use for per-segment string dictionaries. See <a href="/docs/37.0.0/querying/groupbyquery#memory-tuning-and-resource-limits">groupBy memory tuning and resource limits</a> for details.</td><td>100000000</td></tr><tr><td><code>druid.query.groupBy.maxMergingDictionarySize</code></t [...]
<p>Supported query contexts:</p>
-<table><thead><tr><th>Key</th><th>Description</th></tr></thead><tbody><tr><td><code>maxSelectorDictionarySize</code></td><td>Can be used to lower the value of <code>druid.query.groupBy.maxMergingDictionarySize</code> for this query.</td></tr><tr><td><code>maxMergingDictionarySize</code></td><td>Can be used to lower the value of <code>druid.query.groupBy.maxMergingDictionarySize</code> for this query.</td></tr><tr><td><code>maxOnDiskStorage</code></td><td>Can be used to set <code>maxOnDis [...]
+<table><thead><tr><th>Key</th><th>Description</th></tr></thead><tbody><tr><td><code>maxSelectorDictionarySize</code></td><td>Can be used to lower the value of <code>druid.query.groupBy.maxMergingDictionarySize</code> for this query.</td></tr><tr><td><code>maxMergingDictionarySize</code></td><td>Can be used to lower the value of <code>druid.query.groupBy.maxMergingDictionarySize</code> for this query.</td></tr><tr><td><code>maxOnDiskStorage</code></td><td>Can be used to set <code>maxOnDis [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="advanced-configurations">Advanced configurations<a href="#advanced-configurations" class="hash-link" aria-label="Direct link to Advanced configurations" title="Direct link to Advanced configurations"></a></h3>
<p>Supported runtime properties:</p>
<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.query.groupBy.singleThreaded</code></td><td>Merge results using a single thread.</td><td>false</td></tr><tr><td><code>druid.query.groupBy.bufferGrouperInitialBuckets</code></td><td>Initial number of buckets in the off-heap hash table used for grouping results. Set to 0 to use a reasonable default (1024).</td><td>0</td></tr><tr><td><code>druid.query.groupBy.bufferGrouperMaxLoadFa [...]
@@ -775,8 +776,8 @@ context). If query does have <code>maxQueuedBytes</code> in the context, then th
<table><thead><tr><th>Key</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>groupByIsSingleThreaded</code></td><td>Overrides the value of <code>druid.query.groupBy.singleThreaded</code> for this query.</td><td></td></tr><tr><td><code>bufferGrouperInitialBuckets</code></td><td>Overrides the value of <code>druid.query.groupBy.bufferGrouperInitialBuckets</code> for this query.</td><td>none</td></tr><tr><td><code>bufferGrouperMaxLoadFactor</code></td><td>Overrides the [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="router">Router<a href="#router" class="hash-link" aria-label="Direct link to Router" title="Direct link to Router"></a></h3>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="router-process-configs">Router process configs<a href="#router-process-configs" class="hash-link" aria-label="Direct link to Router process configs" title="Direct link to Router process configs"></a></h4>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><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><code>InetAddress.getLocalHost().getCanonicalHostName()</code></td></tr><tr><td><code>druid.bindOnHost</code></td [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><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><code>InetAddress.getLocalHost().getCanonicalHostName()</code></td></tr><tr><td><code>druid.bindOnHost</code></td [...]
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="runtime-configuration">Runtime configuration<a href="#runtime-configuration" class="hash-link" aria-label="Direct link to Runtime configuration" title="Direct link to Runtime configuration"></a></h4>
-<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.router.defaultBrokerServiceName</code></td><td>The default Broker to connect to in case service discovery fails.</td><td><code>druid/broker</code></td></tr><tr><td><code>druid.router.tierToBrokerMap</code></td><td>Queries for a certain tier of data are routed to their appropriate Broker. This value should be an ordered JSON map of tiers to Broker names. The priority of Brokers i [...]
+<table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.router.defaultBrokerServiceName</code></td><td>The default Broker to connect to in case service discovery fails.</td><td><code>druid/broker</code></td></tr><tr><td><code>druid.router.tierToBrokerMap</code></td><td>Queries for a certain tier of data are routed to their appropriate Broker. This value should be an ordered JSON map of tiers to Broker names. The priority of Brokers i [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/configuration/indexing-service.html/index.html b/docs/37.0.0/configuration/indexing-service.html/index.html
new file mode 100644
index 000000000..90aad8644
--- /dev/null
+++ b/docs/37.0.0/configuration/indexing-service.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/configuration/">
+ <link rel="canonical" href="/docs/37.0.0/configuration/" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/configuration/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/configuration/logging.html/index.html b/docs/37.0.0/configuration/logging.html/index.html
new file mode 100644
index 000000000..dc9a935a4
--- /dev/null
+++ b/docs/37.0.0/configuration/logging.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/configuration/logging">
+ <link rel="canonical" href="/docs/37.0.0/configuration/logging" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/configuration/logging' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/configuration/logging/index.html b/docs/37.0.0/configuration/logging/index.html
similarity index 94%
copy from docs/latest/configuration/logging/index.html
copy to docs/37.0.0/configuration/logging/index.html
index 7e4f5fc0e..da0f6d91c 100644
--- a/docs/latest/configuration/logging/index.html
+++ b/docs/37.0.0/configuration/logging/index.html
@@ -3,14 +3,14 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Logging | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/configuratio [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Logging | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/configuratio [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
-The same services also emit periodic <a href="/docs/latest/configuration/#metrics-monitors">metrics</a> about their state.
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+The same services also emit periodic <a href="/docs/37.0.0/configuration/#metrics-monitors">metrics</a> about their state.
To disable metric info logs set the following runtime property: <code>-Ddruid.emitter.logging.logLevel=debug</code>.</p>
<p>Druid uses <a href="http://logging.apache.org/log4j/2.x/" target="_blank" rel="noopener noreferrer">log4j2</a> for logging.
The default configuration file log4j2.xml ships with Druid at the following path: <code>conf/druid/{config}/_common/log4j2.xml</code>.</p>
@@ -19,7 +19,7 @@ If that's not suitable in your case, modify the <code>log4j2.xml</code> acc
<p>The following example log4j2.xml is based upon the micro quickstart:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain"><?xml version="1.0" encoding="UTF-8" ?></span><br></span><span class="token-lin [...]
<p>Peons always output logs to standard output. Middle Managers redirect task logs from standard output to
-<a href="/docs/latest/configuration/#log-long-term-storage">long-term storage</a>.</p>
+<a href="/docs/37.0.0/configuration/#log-long-term-storage">long-term storage</a>.</p>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>Druid shares the log4j configurat [...]
However, you must define a console appender in the logger for your peon processes.
If you don't define a console appender, Druid creates and configures a new console appender
@@ -42,6 +42,6 @@ If necessary, you can truncate it using the Linux command <code>truncate --size
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="set-the-logs-to-asynchronously-write">Set the logs to asynchronously write<a href="#set-the-logs-to-asynchronously-write" class="hash-link" aria-label="Direct link to Set the logs to asynchronously write" title="Direct link to Set the logs to asynchronously write"></a></h2>
<p>If your logs are really chatty, you can set them to write asynchronously.
The following example shows a <code>log4j2.xml</code> that configures some of the more chatty classes to write asynchronously:</p>
-<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain"><?xml version="1.0" encoding="UTF-8" ?></span><br></span><span class="token-lin [...]
+<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain"><?xml version="1.0" encoding="UTF-8" ?></span><br></span><span class="token-lin [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/configuration/production-cluster.html/index.html b/docs/37.0.0/configuration/production-cluster.html/index.html
new file mode 100644
index 000000000..ade69fc93
--- /dev/null
+++ b/docs/37.0.0/configuration/production-cluster.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/tutorials/cluster">
+ <link rel="canonical" href="/docs/37.0.0/tutorials/cluster" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/tutorials/cluster' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/configuration/realtime.html/index.html b/docs/37.0.0/configuration/realtime.html/index.html
new file mode 100644
index 000000000..d898121ba
--- /dev/null
+++ b/docs/37.0.0/configuration/realtime.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/ingestion/standalone-realtime">
+ <link rel="canonical" href="/docs/37.0.0/ingestion/standalone-realtime" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/ingestion/standalone-realtime' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/configuration/simple-cluster.html/index.html b/docs/37.0.0/configuration/simple-cluster.html/index.html
new file mode 100644
index 000000000..ade69fc93
--- /dev/null
+++ b/docs/37.0.0/configuration/simple-cluster.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/tutorials/cluster">
+ <link rel="canonical" href="/docs/37.0.0/tutorials/cluster" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/tutorials/cluster' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/configuration/zookeeper.html/index.html b/docs/37.0.0/configuration/zookeeper.html/index.html
new file mode 100644
index 000000000..7218244aa
--- /dev/null
+++ b/docs/37.0.0/configuration/zookeeper.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/design/zookeeper">
+ <link rel="canonical" href="/docs/37.0.0/design/zookeeper" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/design/zookeeper' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/data-management.html/index.html b/docs/37.0.0/data-management.html/index.html
new file mode 100644
index 000000000..5e439ed20
--- /dev/null
+++ b/docs/37.0.0/data-management.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/data-management/">
+ <link rel="canonical" href="/docs/37.0.0/data-management/" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/data-management/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/data-management/automatic-compaction.html/index.html b/docs/37.0.0/data-management/automatic-compaction.html/index.html
new file mode 100644
index 000000000..1e2218abb
--- /dev/null
+++ b/docs/37.0.0/data-management/automatic-compaction.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/data-management/automatic-compaction">
+ <link rel="canonical" href="/docs/37.0.0/data-management/automatic-compaction" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/data-management/automatic-compaction' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/data-management/automatic-compaction/index.html b/docs/37.0.0/data-management/automatic-compaction/index.html
similarity index 80%
copy from docs/latest/data-management/automatic-compaction/index.html
copy to docs/37.0.0/data-management/automatic-compaction/index.html
index 74f45741c..ea7b7a0f5 100644
--- a/docs/latest/data-management/automatic-compaction/index.html
+++ b/docs/37.0.0/data-management/automatic-compaction/index.html
@@ -3,23 +3,26 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Automatic compaction | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Automatic compaction | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0 [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>Auto-compaction skips datasources [...]
-<p>As a best practice, you should set up auto-compaction for all Druid datasources. You can run compaction tasks manually for cases where you want to allocate more system resources. For example, you may choose to run multiple compaction tasks in parallel to compact an existing datasource for the first time. See <a href="/docs/latest/data-management/compaction">Compaction</a> for additional details and use cases.</p>
+<p>There are two ways to run automatic compaction in Druid:</p>
+<ul>
+<li><strong>Compaction supervisors on the Overlord</strong> (recommended): Provides better reactivity, support for the MSQ task engine, and easier management through the supervisor framework. See <a href="#auto-compaction-using-compaction-supervisors">Auto-compaction using compaction supervisors</a>.</li>
+<li><strong>Coordinator duties</strong>: An alternative approach that runs compaction as a Coordinator duty. See <a href="#auto-compaction-using-coordinator-duties">Auto-compaction using Coordinator duties</a>.</li>
+</ul>
+<p>As a best practice, you should set up auto-compaction for all Druid datasources. You can run compaction tasks manually for cases where you want to allocate more system resources. For example, you may choose to run multiple compaction tasks in parallel to compact an existing datasource for the first time. See <a href="/docs/37.0.0/data-management/compaction">Compaction</a> for additional details and use cases.</p>
<p>This topic guides you through setting up automatic compaction for your Druid cluster. See the <a href="#examples">examples</a> for common use cases for automatic compaction.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="auto-compaction-syntax">Auto-compaction syntax<a href="#auto-compaction-syntax" class="hash-link" aria-label="Direct link to Auto-compaction syntax" title="Direct link to Auto-compaction syntax"></a></h2>
<p>You can configure automatic compaction dynamically without restarting Druid.
The automatic compaction system uses the following syntax:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
-<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>Experimental</div><div class="admonitionContent_BuS1"><p>The MSQ task engine is av [...]
-<p>For automatic compaction using Coordinator duties, you submit the spec to the <a href="#manage-auto-compaction-using-the-web-console">Compaction config UI</a> or the <a href="#manage-auto-compaction-using-coordinator-apis">Compaction configuration API</a>.</p>
-<p>Most fields in the auto-compaction configuration correlate to a typical <a href="/docs/latest/ingestion/ingestion-spec">Druid ingestion spec</a>.
+<p>Most fields in the auto-compaction configuration correlate to a typical <a href="/docs/37.0.0/ingestion/ingestion-spec">Druid ingestion spec</a>.
The following properties only apply to auto-compaction:</p>
<ul>
<li><code>skipOffsetFromLatest</code></li>
@@ -28,107 +31,34 @@ The following properties only apply to auto-compaction:</p>
</ul>
<p>Since the automatic compaction system provides a management layer on top of manual compaction tasks,
the auto-compaction configuration does not include task-specific properties found in a typical Druid ingestion spec.
-The following properties are automatically set by the Coordinator:</p>
+The following properties are automatically set by the auto-compaction system:</p>
<ul>
<li><code>type</code>: Set to <code>compact</code>.</li>
-<li><code>id</code>: Generated using the task type, datasource name, interval, and timestamp. The task ID is prefixed with <code>coordinator-issued</code>.</li>
+<li><code>id</code>: Generated using the task type, datasource name, interval, and timestamp. The task ID is prefixed with <code>auto</code>.</li>
<li><code>context</code>: Set according to the user-provided <code>taskContext</code>.</li>
</ul>
-<p>Compaction tasks typically fetch all <a href="/docs/latest/data-management/manual-compaction#compaction-io-configuration">relevant segments</a> prior to launching any subtasks,
+<p>Compaction tasks typically fetch all <a href="/docs/37.0.0/data-management/manual-compaction#compaction-io-configuration">relevant segments</a> prior to launching any subtasks,
<em>unless</em> the following properties are all set to non-null values. It is strongly recommended to set them to non-null values to
maximize performance and minimize disk usage of the <code>compact</code> tasks launched by auto-compaction:</p>
<ul>
-<li><a href="/docs/latest/data-management/manual-compaction#compaction-granularity-spec"><code>granularitySpec</code></a>, with non-null values for each of <code>segmentGranularity</code>, <code>queryGranularity</code>, and <code>rollup</code></li>
-<li><a href="/docs/latest/data-management/manual-compaction#compaction-dimensions-spec"><code>dimensionsSpec</code></a></li>
+<li><a href="/docs/37.0.0/data-management/manual-compaction#compaction-granularity-spec"><code>granularitySpec</code></a>, with non-null values for each of <code>segmentGranularity</code>, <code>queryGranularity</code>, and <code>rollup</code></li>
+<li><a href="/docs/37.0.0/data-management/manual-compaction#compaction-dimensions-spec"><code>dimensionsSpec</code></a></li>
<li><code>metricsSpec</code></li>
</ul>
-<p>For more details on each of the specs in an auto-compaction configuration, see <a href="/docs/latest/configuration/#automatic-compaction-dynamic-configuration">Automatic compaction dynamic configuration</a>.</p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="auto-compaction-using-coordinator-duties">Auto-compaction using Coordinator duties<a href="#auto-compaction-using-coordinator-duties" class="hash-link" aria-label="Direct link to Auto-compaction using Coordinator duties" title="Direct link to Auto-compaction using Coordinator duties"></a></h2>
-<p>You can control how often the Coordinator checks to see if auto-compaction is needed. The Coordinator <a href="/docs/latest/configuration/#data-management">indexing period</a>, <code>druid.coordinator.period.indexingPeriod</code>, controls the frequency of compaction tasks.
-The default indexing period is 30 minutes, meaning that the Coordinator first checks for segments to compact at most 30 minutes from when auto-compaction is enabled.
-This time period also affects other Coordinator duties such as cleanup of unused segments and stale pending segments.
-To configure the auto-compaction time period without interfering with <code>indexingPeriod</code>, see <a href="#change-compaction-frequency">Set frequency of compaction runs</a>.</p>
-<p>At every invocation of auto-compaction, the Coordinator initiates a <a href="/docs/latest/design/coordinator#segment-search-policy-in-automatic-compaction">segment search</a> to determine eligible segments to compact.
-When there are eligible segments to compact, the Coordinator issues compaction tasks based on available worker capacity.
-If a compaction task takes longer than the indexing period, the Coordinator waits for it to finish before resuming the period for segment search.</p>
-<p>No additional configuration is needed to run automatic compaction tasks using the Coordinator and native engine. This is the default behavior for Druid.
-You can configure it for a datasource through the web console or programmatically via an API.
-This process differs for manual compaction tasks, which can be submitted from the <a href="/docs/latest/operations/web-console">Tasks view of the web console</a> or the <a href="/docs/latest/api-reference/tasks-api">Tasks API</a>.</p>
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="manage-auto-compaction-using-the-web-console">Manage auto-compaction using the web console<a href="#manage-auto-compaction-using-the-web-console" class="hash-link" aria-label="Direct link to Manage auto-compaction using the web console" title="Direct link to Manage auto-compaction using the web console"></a></h3>
-<p>Use the web console to enable automatic compaction for a datasource as follows:</p>
-<ol>
-<li>Click <strong>Datasources</strong> in the top-level navigation.</li>
-<li>In the <strong>Compaction</strong> column, click the edit icon for the datasource to compact.</li>
-<li>In the <strong>Compaction config</strong> dialog, configure the auto-compaction settings. The dialog offers a form view as well as a JSON view. Editing the form updates the JSON specification, and editing the JSON updates the form field, if present. Form fields not present in the JSON indicate default values. You may add additional properties to the JSON for auto-compaction settings not displayed in the form. See <a href="#auto-compaction-syntax">Configure automatic compaction</a> fo [...]
-<li>Click <strong>Submit</strong>.</li>
-<li>Refresh the <strong>Datasources</strong> view. The <strong>Compaction</strong> column for the datasource changes from “Not enabled” to “Awaiting first run.”</li>
-</ol>
-<p>The following screenshot shows the compaction config dialog for a datasource with auto-compaction enabled.
-<img decoding="async" loading="lazy" alt="Compaction config in web console" src="/assets/images/compaction-config-2d5e391fe681a9c978060c383357b531.png" width="1250" height="640" class="img_ev3q"></p>
-<p>To disable auto-compaction for a datasource, click <strong>Delete</strong> from the <strong>Compaction config</strong> dialog. Druid does not retain your auto-compaction configuration.</p>
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="manage-auto-compaction-using-coordinator-apis">Manage auto-compaction using Coordinator APIs<a href="#manage-auto-compaction-using-coordinator-apis" class="hash-link" aria-label="Direct link to Manage auto-compaction using Coordinator APIs" title="Direct link to Manage auto-compaction using Coordinator APIs"></a></h3>
-<p>Use the <a href="/docs/latest/api-reference/automatic-compaction-api#manage-automatic-compaction">Automatic compaction API</a> to configure automatic compaction.
-To enable auto-compaction for a datasource, create a JSON object with the desired auto-compaction settings.
-See <a href="#auto-compaction-syntax">Configure automatic compaction</a> for the syntax of an auto-compaction spec.
-Send the JSON object as a payload in a <a href="/docs/latest/api-reference/automatic-compaction-api#create-or-update-automatic-compaction-configuration"><code>POST</code> request</a> to <code>/druid/coordinator/v1/config/compaction</code>.
-The following example configures auto-compaction for the <code>wikipedia</code> datasource:</p>
-<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">curl --location --request POST 'http://localhost:8081/druid/coordinator/v1/config/compacti [...]
-<p>To disable auto-compaction for a datasource, send a <a href="/docs/latest/api-reference/automatic-compaction-api#remove-automatic-compaction-configuration"><code>DELETE</code> request</a> to <code>/druid/coordinator/v1/config/compaction/{dataSource}</code>. Replace <code>{dataSource}</code> with the name of the datasource for which to disable auto-compaction. For example:</p>
-<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">curl --location --request DELETE 'http://localhost:8081/druid/coordinator/v1/config/compac [...]
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="change-compaction-frequency">Change compaction frequency<a href="#change-compaction-frequency" class="hash-link" aria-label="Direct link to Change compaction frequency" title="Direct link to Change compaction frequency"></a></h3>
-<p>If you want the Coordinator to check for compaction more frequently than its indexing period, create a separate group to handle compaction duties.
-Set the time period of the duty group in the <code>coordinator/runtime.properties</code> file.
-The following example shows how to create a duty group named <code>compaction</code> and set the auto-compaction period to 1 minute:</p>
-<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">druid.coordinator.dutyGroups=["compaction"]</span><br></span><span class="token-line" style="co [...]
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="view-coordinator-duty-auto-compaction-stats">View Coordinator duty auto-compaction stats<a href="#view-coordinator-duty-auto-compaction-stats" class="hash-link" aria-label="Direct link to View Coordinator duty auto-compaction stats" title="Direct link to View Coordinator duty auto-compaction stats"></a></h3>
-<p>After the Coordinator has initiated auto-compaction, you can view compaction statistics for the datasource, including the number of bytes, segments, and intervals already compacted and those awaiting compaction. The Coordinator also reports the total bytes, segments, and intervals not eligible for compaction in accordance with its <a href="/docs/latest/design/coordinator#segment-search-policy-in-automatic-compaction">segment search policy</a>.</p>
-<p>In the web console, the Datasources view displays auto-compaction statistics. The Tasks view shows the task information for compaction tasks that were triggered by the automatic compaction system.</p>
-<p>To get statistics by API, send a <a href="/docs/latest/api-reference/automatic-compaction-api#view-automatic-compaction-status"><code>GET</code> request</a> to <code>/druid/coordinator/v1/compaction/status</code>. To filter the results to a particular datasource, pass the datasource name as a query parameter to the request—for example, <code>/druid/coordinator/v1/compaction/status?dataSource=wikipedia</code>.</p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="avoid-conflicts-with-ingestion">Avoid conflicts with ingestion<a href="#avoid-conflicts-with-ingestion" class="hash-link" aria-label="Direct link to Avoid conflicts with ingestion" title="Direct link to Avoid conflicts with ingestion"></a></h2>
-<p>Compaction tasks may be interrupted when they interfere with ingestion. For example, this occurs when an ingestion task needs to write data to a segment for a time interval locked for compaction. If there are continuous failures that prevent compaction from making progress, consider one of the following strategies:</p>
-<ul>
-<li>Enable <a href="#enable-concurrent-append-and-replace">concurrent append and replace tasks</a> on your datasource and on the ingestion tasks.</li>
-<li>Set <code>skipOffsetFromLatest</code> to reduce the chance of conflicts between ingestion and compaction. See more details in <a href="#skip-compaction-for-latest-segments">Skip compaction for latest segments</a>.</li>
-<li>Increase the priority value of compaction tasks relative to ingestion tasks. Only recommended for advanced users. This approach can cause ingestion jobs to fail or lag. To change the priority of compaction tasks, set <code>taskPriority</code> to the desired priority value in the auto-compaction configuration. For details on the priority values of different task types, see <a href="/docs/latest/ingestion/tasks#lock-priority">Lock priority</a>.</li>
-</ul>
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="enable-concurrent-append-and-replace">Enable concurrent append and replace<a href="#enable-concurrent-append-and-replace" class="hash-link" aria-label="Direct link to Enable concurrent append and replace" title="Direct link to Enable concurrent append and replace"></a></h3>
-<p>You can use concurrent append and replace to safely replace the existing data in an interval of a datasource while new data is being appended to that interval even during compaction.</p>
-<p>To do this, you need to update your datasource to allow concurrent append and replace tasks:</p>
-<ul>
-<li>If you're using the API, include the following <code>taskContext</code> property in your API call: <code>"useConcurrentLocks": true</code></li>
-<li>If you're using the UI, enable <strong>Use concurrent locks</strong> in the <strong>Compaction config</strong> for your datasource.</li>
-</ul>
-<p>You'll also need to update your ingestion jobs for the datasource to include the task context <code>"useConcurrentLocks": true</code>.</p>
-<p>For information on how to do this, see <a href="/docs/latest/ingestion/concurrent-append-replace">Concurrent append and replace</a>.</p>
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="skip-compaction-for-latest-segments">Skip compaction for latest segments<a href="#skip-compaction-for-latest-segments" class="hash-link" aria-label="Direct link to Skip compaction for latest segments" title="Direct link to Skip compaction for latest segments"></a></h3>
-<p>The Coordinator compacts segments from newest to oldest. In the auto-compaction configuration, you can set a time period, relative to the end time of the most recent segment, for segments that should not be compacted. Assign this value to <code>skipOffsetFromLatest</code>. Note that this offset is not relative to the current time but to the latest segment time. For example, if you want to skip over segments from five days prior to the end time of the most recent segment, assign <code> [...]
-<p>To set <code>skipOffsetFromLatest</code>, consider how frequently you expect the stream to receive late arriving data. If your stream only occasionally receives late arriving data, the auto-compaction system robustly compacts your data even though data is ingested outside the <code>skipOffsetFromLatest</code> window. For most realtime streaming ingestion use cases, it is reasonable to set <code>skipOffsetFromLatest</code> to a few hours or a day.</p>
-<h2 class="anchor anchorWithStickyNavbar_LWe7" id="examples">Examples<a href="#examples" class="hash-link" aria-label="Direct link to Examples" title="Direct link to Examples"></a></h2>
-<p>The following examples demonstrate potential use cases in which auto-compaction may improve your Druid performance. See more details in <a href="/docs/latest/data-management/compaction#compaction-guidelines">Compaction strategies</a>. The examples in this section do not change the underlying data.</p>
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="change-segment-granularity">Change segment granularity<a href="#change-segment-granularity" class="hash-link" aria-label="Direct link to Change segment granularity" title="Direct link to Change segment granularity"></a></h3>
-<p>You have a stream set up to ingest data with <code>HOUR</code> segment granularity into the <code>wikistream</code> datasource. You notice that your Druid segments are smaller than the <a href="/docs/latest/operations/segment-optimization">recommended segment size</a> of 5 million rows per segment. You wish to automatically compact segments to <code>DAY</code> granularity while leaving the latest week of data <em>not</em> compacted because your stream consistently receives data within [...]
-<p>The following auto-compaction configuration compacts existing <code>HOUR</code> segments into <code>DAY</code> segments while leaving the latest week of data not compacted:</p>
-<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="update-partitioning-scheme">Update partitioning scheme<a href="#update-partitioning-scheme" class="hash-link" aria-label="Direct link to Update partitioning scheme" title="Direct link to Update partitioning scheme"></a></h3>
-<p>For your <code>wikipedia</code> datasource, you want to optimize segment access when regularly ingesting data without compromising compute time when querying the data. Your ingestion spec for batch append uses <a href="/docs/latest/ingestion/native-batch#dynamic-partitioning">dynamic partitioning</a> to optimize for write-time operations, while your stream ingestion partitioning is configured by the stream service. You want to implement auto-compaction to reorganize the data with a su [...]
-<p>The following auto-compaction configuration compacts updates the <code>wikipedia</code> segments to use multi-dimension range partitioning:</p>
-<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
+<p>For more details on each of the specs in an auto-compaction configuration, see <a href="/docs/37.0.0/configuration/#automatic-compaction-dynamic-configuration">Automatic compaction dynamic configuration</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="auto-compaction-using-compaction-supervisors">Auto-compaction using compaction supervisors<a href="#auto-compaction-using-compaction-supervisors" class="hash-link" aria-label="Direct link to Auto-compaction using compaction supervisors" title="Direct link to Auto-compaction using compaction supervisors"></a></h2>
-<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>Experimental</div><div class="admonitionContent_BuS1"><p>Compaction supervisors ar [...]
-<p>You can run automatic compaction using compaction supervisors on the Overlord rather than Coordinator duties. Compaction supervisors provide the following benefits over Coordinator duties:</p>
+<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>For advanced time-based data life [...]
+<p>The recommended way to run automatic compaction is using compaction supervisors on the Overlord. Compaction supervisors provide the following benefits:</p>
<ul>
<li>Can use the supervisor framework to get information about the auto-compaction, such as status or state</li>
<li>More easily suspend or resume compaction for a datasource</li>
<li>Can use either the native compaction engine or the <a href="#use-msq-for-auto-compaction">MSQ task engine</a></li>
<li>More reactive and submits tasks as soon as a compaction slot is available</li>
<li>Tracked compaction task status to avoid re-compacting an interval repeatedly</li>
+<li>Can be configured to store compact fingerprints instead of full compaction state in metadata storage</li>
+<li>Supports minor compaction through the <a href="/docs/37.0.0/api-reference/automatic-compaction-api#compaction-policy-mostfragmentedfirst">Most fragmented first policy</a></li>
</ul>
-<p>To use compaction supervisors, update the <a href="/docs/latest/api-reference/automatic-compaction-api#update-cluster-level-compaction-config">compaction dynamic config</a> and set:</p>
-<ul>
-<li><code>useSupervisors</code> to <code>true</code> so that compaction tasks can be run as supervisor tasks</li>
-<li><code>engine</code> to <code>msq</code> to use the MSQ task engine as the compaction engine or to <code>native</code> (default value) to use the native engine.</li>
-</ul>
-<p>Compaction supervisors use the same syntax as auto-compaction using Coordinator duties with one key difference: you submit the auto-compaction as a supervisor spec. In the spec, set the <code>type</code> to <code>autocompact</code> and include the auto-compaction config in the <code>spec</code>.</p>
+<p>To use a compaction supervisor, submit the auto-compaction configuration as a supervisor spec. Set <code>type</code> to <code>autocompact</code> and include the auto-compaction config in the <code>spec</code>.</p>
<p>To submit an automatic compaction task, you can submit a supervisor spec through the <a href="#manage-compaction-supervisors-with-the-web-console">web console</a> or the <a href="#manage-compaction-supervisors-with-supervisor-apis">supervisor API</a>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="manage-compaction-supervisors-with-the-web-console">Manage compaction supervisors with the web console<a href="#manage-compaction-supervisors-with-the-web-console" class="hash-link" aria-label="Direct link to Manage compaction supervisors with the web console" title="Direct link to Manage compaction supervisors with the web console"></a></h3>
<p>To submit a supervisor spec for MSQ task engine automatic compaction, perform the following steps:</p>
@@ -149,20 +79,21 @@ The following example shows how to create a duty group named <code>compaction</c
<p>Submitting an automatic compaction as a supervisor task uses the same endpoint as supervisor tasks for streaming ingestion.</p>
<p>The following example configures auto-compaction for the <code>wikipedia</code> datasource:</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">curl --location --request POST 'http://localhost:8081/druid/indexer/v1/supervisor' \< [...]
-<p>Note that if you omit <code>spec.engine</code>, Druid uses the default compaction engine. You can control the default compaction engine with the <code>druid.supervisor.compaction.engine</code> Overlord runtime property. If <code>spec.engine</code> and <code>druid.supervisor.compaction.engine</code> are omitted, Druid defaults to the native engine.</p>
+<p>Note that if you omit <code>spec.engine</code>, Druid uses the default compaction engine. You can control the default compaction engine by setting <code>engine</code> in the <a href="/docs/37.0.0/api-reference/automatic-compaction-api#update-cluster-level-compaction-config">compaction dynamic config</a>. If <code>spec.engine</code> and <code>engine</code> in compaction dynamic config are omitted, Druid defaults to the <code>native</code> engine.</p>
<p>To stop the automatic compaction task, suspend or terminate the supervisor through the UI or API.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="use-msq-for-auto-compaction">Use MSQ for auto-compaction<a href="#use-msq-for-auto-compaction" class="hash-link" aria-label="Direct link to Use MSQ for auto-compaction" title="Direct link to Use MSQ for auto-compaction"></a></h3>
<p>The MSQ task engine is available as a compaction engine if you configure auto-compaction to use compaction supervisors. To use the MSQ task engine for automatic compaction, make sure the following requirements are met:</p>
<ul>
-<li>In your Overlord runtime properties, set the following properties:<!-- -->
+<li>Enable <a href="/docs/37.0.0/configuration/#metadata-retrieval">incremental segment metadata caching</a> on the Overlord.</li>
+<li>Enable <a href="#auto-compaction-using-compaction-supervisors">Auto-compaction using compaction supervisors</a>.</li>
+<li>Update the <a href="/docs/37.0.0/api-reference/automatic-compaction-api#update-cluster-level-compaction-config">compaction dynamic config</a> and set <code>engine</code> to <code>msq</code> to use the MSQ task engine as the default compaction engine for all compaction supervisors.<!-- -->
<ul>
-<li><code>druid.supervisor.compaction.enabled</code> to <code>true</code> so that compaction tasks can be run as a supervisor task.</li>
-<li>Optionally, set <code>druid.supervisor.compaction.engine</code> to <code>msq</code> to specify the MSQ task engine as the default compaction engine. If you don't do this, you'll need to set <code>spec.engine</code> to <code>msq</code> for each compaction supervisor spec where you want to use the MSQ task engine.</li>
+<li>Alternatively, you may override the default engine by setting <code>spec.engine</code> to <code>msq</code> in the compaction supervisor for the relevant datasource.</li>
</ul>
</li>
-<li>Have at least two compaction task slots available or set <code>compactionConfig.taskContext.maxNumTasks</code> to two or more. The MSQ task engine requires at least two tasks to run, one controller task and one worker task.</li>
+<li>Have at least two compaction task slots available or set <code>spec.taskContext.maxNumTasks</code> to two or more. The MSQ task engine requires at least two tasks to run, one controller task and one worker task.</li>
</ul>
-<p>You can use <a href="/docs/latest/multi-stage-query/reference#context-parameters">MSQ task engine context parameters</a> in <code>spec.taskContext</code> when configuring your datasource for automatic compaction, such as setting the maximum number of tasks using the <code>spec.taskContext.maxNumTasks</code> parameter. Some of the MSQ task engine context parameters overlap with automatic compaction parameters. When these settings overlap, set one or the other.</p>
+<p>You can use <a href="/docs/37.0.0/multi-stage-query/reference#context-parameters">MSQ task engine context parameters</a> in <code>spec.taskContext</code> when configuring your datasource for automatic compaction, such as setting the maximum number of tasks using the <code>spec.taskContext.maxNumTasks</code> parameter. Some of the MSQ task engine context parameters overlap with automatic compaction parameters. When these settings overlap, set one or the other.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="msq-task-engine-limitations">MSQ task engine limitations<a href="#msq-task-engine-limitations" class="hash-link" aria-label="Direct link to MSQ task engine limitations" title="Direct link to MSQ task engine limitations"></a></h4>
<p>When using the MSQ task engine for auto-compaction, keep the following limitations in mind:</p>
<ul>
@@ -194,13 +125,91 @@ The following example shows how to create a duty group named <code>compaction</c
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">{"type": "count", "name": "count"}</span><br></span></code></pre> [...]
</li>
</ul>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="auto-compaction-using-coordinator-duties">Auto-compaction using Coordinator duties<a href="#auto-compaction-using-coordinator-duties" class="hash-link" aria-label="Direct link to Auto-compaction using Coordinator duties" title="Direct link to Auto-compaction using Coordinator duties"></a></h2>
+<p>As an alternative to compaction supervisors, you can run automatic compaction using Coordinator duties. The Coordinator <a href="/docs/37.0.0/configuration/#data-management">indexing period</a>, <code>druid.coordinator.period.indexingPeriod</code>, controls the frequency of compaction tasks.
+The default indexing period is 30 minutes, meaning that the Coordinator first checks for segments to compact at most 30 minutes from when auto-compaction is enabled.
+This time period also affects other Coordinator duties such as cleanup of unused segments and stale pending segments.
+To configure the auto-compaction time period without interfering with <code>indexingPeriod</code>, see <a href="#change-compaction-frequency">Set frequency of compaction runs</a>.</p>
+<p>At every invocation of auto-compaction, the Coordinator initiates a <a href="/docs/37.0.0/design/coordinator#segment-search-policy-in-automatic-compaction">segment search</a> to determine eligible segments to compact.
+When there are eligible segments to compact, the Coordinator issues compaction tasks based on available worker capacity.
+If a compaction task takes longer than the indexing period, the Coordinator waits for it to finish before resuming the period for segment search.</p>
+<p>You can configure Coordinator-based auto-compaction for a datasource through the web console or programmatically via an API.
+This process differs for manual compaction tasks, which can be submitted from the <a href="/docs/37.0.0/operations/web-console">Tasks view of the web console</a> or the <a href="/docs/37.0.0/api-reference/tasks-api">Tasks API</a>.</p>
+<p>To use Coordinator-based auto-compaction, the following configuration requirements must be met:</p>
+<ul>
+<li>update the <a href="/docs/37.0.0/api-reference/automatic-compaction-api#update-cluster-level-compaction-config">compaction dynamic config</a> and set:<!-- -->
+<ul>
+<li><code>useSupervisors</code> to <code>false</code></li>
+<li><code>engine</code> to <code>native</code> to use the native engine, since MSQ task engine is not supported as the compaction engine in Coordinator.</li>
+</ul>
+</li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="manage-auto-compaction-using-the-web-console">Manage auto-compaction using the web console<a href="#manage-auto-compaction-using-the-web-console" class="hash-link" aria-label="Direct link to Manage auto-compaction using the web console" title="Direct link to Manage auto-compaction using the web console"></a></h3>
+<p>Use the web console to enable automatic compaction for a datasource as follows:</p>
+<ol>
+<li>Click <strong>Datasources</strong> in the top-level navigation.</li>
+<li>In the <strong>Compaction</strong> column, click the edit icon for the datasource to compact.</li>
+<li>In the <strong>Compaction config</strong> dialog, configure the auto-compaction settings. The dialog offers a form view as well as a JSON view. Editing the form updates the JSON specification, and editing the JSON updates the form field, if present. Form fields not present in the JSON indicate default values. You may add additional properties to the JSON for auto-compaction settings not displayed in the form. See <a href="#auto-compaction-syntax">Configure automatic compaction</a> fo [...]
+<li>Click <strong>Submit</strong>.</li>
+<li>Refresh the <strong>Datasources</strong> view. The <strong>Compaction</strong> column for the datasource changes from "Not enabled" to "Awaiting first run."</li>
+</ol>
+<p>The following screenshot shows the compaction config dialog for a datasource with auto-compaction enabled.
+<img decoding="async" loading="lazy" alt="Compaction config in web console" src="/assets/images/compaction-config-2d5e391fe681a9c978060c383357b531.png" width="1250" height="640" class="img_ev3q"></p>
+<p>To disable auto-compaction for a datasource, click <strong>Delete</strong> from the <strong>Compaction config</strong> dialog. Druid does not retain your auto-compaction configuration.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="manage-auto-compaction-using-coordinator-apis">Manage auto-compaction using Coordinator APIs<a href="#manage-auto-compaction-using-coordinator-apis" class="hash-link" aria-label="Direct link to Manage auto-compaction using Coordinator APIs" title="Direct link to Manage auto-compaction using Coordinator APIs"></a></h3>
+<p>Use the <a href="/docs/37.0.0/api-reference/automatic-compaction-api#manage-automatic-compaction">Automatic compaction API</a> to configure automatic compaction.
+To enable auto-compaction for a datasource, create a JSON object with the desired auto-compaction settings.
+See <a href="#auto-compaction-syntax">Configure automatic compaction</a> for the syntax of an auto-compaction spec.
+Send the JSON object as a payload in a <a href="/docs/37.0.0/api-reference/automatic-compaction-api#create-or-update-automatic-compaction-configuration"><code>POST</code> request</a> to <code>/druid/coordinator/v1/config/compaction</code>.
+The following example configures auto-compaction for the <code>wikipedia</code> datasource:</p>
+<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">curl --location --request POST 'http://localhost:8081/druid/coordinator/v1/config/compacti [...]
+<p>To disable auto-compaction for a datasource, send a <a href="/docs/37.0.0/api-reference/automatic-compaction-api#remove-automatic-compaction-configuration"><code>DELETE</code> request</a> to <code>/druid/coordinator/v1/config/compaction/{dataSource}</code>. Replace <code>{dataSource}</code> with the name of the datasource for which to disable auto-compaction. For example:</p>
+<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">curl --location --request DELETE 'http://localhost:8081/druid/coordinator/v1/config/compac [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="change-compaction-frequency">Change compaction frequency<a href="#change-compaction-frequency" class="hash-link" aria-label="Direct link to Change compaction frequency" title="Direct link to Change compaction frequency"></a></h3>
+<p>If you want the Coordinator to check for compaction more frequently than its indexing period, create a separate group to handle compaction duties.
+Set the time period of the duty group in the <code>coordinator/runtime.properties</code> file.
+The following example shows how to create a duty group named <code>compaction</code> and set the auto-compaction period to 1 minute:</p>
+<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">druid.coordinator.dutyGroups=["compaction"]</span><br></span><span class="token-line" style="co [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="view-coordinator-duty-auto-compaction-stats">View Coordinator duty auto-compaction stats<a href="#view-coordinator-duty-auto-compaction-stats" class="hash-link" aria-label="Direct link to View Coordinator duty auto-compaction stats" title="Direct link to View Coordinator duty auto-compaction stats"></a></h3>
+<p>After the Coordinator has initiated auto-compaction, you can view compaction statistics for the datasource, including the number of bytes, segments, and intervals already compacted and those awaiting compaction. The Coordinator also reports the total bytes, segments, and intervals not eligible for compaction in accordance with its <a href="/docs/37.0.0/design/coordinator#segment-search-policy-in-automatic-compaction">segment search policy</a>.</p>
+<p>In the web console, the Datasources view displays auto-compaction statistics. The Tasks view shows the task information for compaction tasks that were triggered by the automatic compaction system.</p>
+<p>To get statistics by API, send a <a href="/docs/37.0.0/api-reference/automatic-compaction-api#view-automatic-compaction-status"><code>GET</code> request</a> to <code>/druid/coordinator/v1/compaction/status</code>. To filter the results to a particular datasource, pass the datasource name as a query parameter to the request—for example, <code>/druid/coordinator/v1/compaction/status?dataSource=wikipedia</code>.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="avoid-conflicts-with-ingestion">Avoid conflicts with ingestion<a href="#avoid-conflicts-with-ingestion" class="hash-link" aria-label="Direct link to Avoid conflicts with ingestion" title="Direct link to Avoid conflicts with ingestion"></a></h2>
+<p>Compaction tasks may be interrupted when they interfere with ingestion. For example, this occurs when an ingestion task needs to write data to a segment for a time interval locked for compaction. If there are continuous failures that prevent compaction from making progress, consider one of the following strategies:</p>
+<ul>
+<li>Enable <a href="#enable-concurrent-append-and-replace">concurrent append and replace tasks</a> on your datasource and on the ingestion tasks.</li>
+<li>Set <code>skipOffsetFromLatest</code> to reduce the chance of conflicts between ingestion and compaction. See more details in <a href="#skip-compaction-for-latest-segments">Skip compaction for latest segments</a>.</li>
+<li>Increase the priority value of compaction tasks relative to ingestion tasks. Only recommended for advanced users. This approach can cause ingestion jobs to fail or lag. To change the priority of compaction tasks, set <code>taskPriority</code> to the desired priority value in the auto-compaction configuration. For details on the priority values of different task types, see <a href="/docs/37.0.0/ingestion/tasks#lock-priority">Lock priority</a>.</li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="enable-concurrent-append-and-replace">Enable concurrent append and replace<a href="#enable-concurrent-append-and-replace" class="hash-link" aria-label="Direct link to Enable concurrent append and replace" title="Direct link to Enable concurrent append and replace"></a></h3>
+<p>You can use concurrent append and replace to safely replace the existing data in an interval of a datasource while new data is being appended to that interval even during compaction.</p>
+<p>To do this, you need to update your datasource to allow concurrent append and replace tasks:</p>
+<ul>
+<li>If you're using the API, include the following <code>taskContext</code> property in your API call: <code>"useConcurrentLocks": true</code></li>
+<li>If you're using the UI, enable <strong>Use concurrent locks</strong> in the <strong>Compaction config</strong> for your datasource.</li>
+</ul>
+<p>You'll also need to update your ingestion jobs for the datasource to include the task context <code>"useConcurrentLocks": true</code>.</p>
+<p>For information on how to do this, see <a href="/docs/37.0.0/ingestion/concurrent-append-replace">Concurrent append and replace</a>.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="skip-compaction-for-latest-segments">Skip compaction for latest segments<a href="#skip-compaction-for-latest-segments" class="hash-link" aria-label="Direct link to Skip compaction for latest segments" title="Direct link to Skip compaction for latest segments"></a></h3>
+<p>The Coordinator compacts segments from newest to oldest. In the auto-compaction configuration, you can set a time period, relative to the end time of the most recent segment, for segments that should not be compacted. Assign this value to <code>skipOffsetFromLatest</code>. Note that this offset is not relative to the current time but to the latest segment time. For example, if you want to skip over segments from five days prior to the end time of the most recent segment, assign <code> [...]
+<p>To set <code>skipOffsetFromLatest</code>, consider how frequently you expect the stream to receive late arriving data. If your stream only occasionally receives late arriving data, the auto-compaction system robustly compacts your data even though data is ingested outside the <code>skipOffsetFromLatest</code> window. For most realtime streaming ingestion use cases, it is reasonable to set <code>skipOffsetFromLatest</code> to a few hours or a day.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="examples">Examples<a href="#examples" class="hash-link" aria-label="Direct link to Examples" title="Direct link to Examples"></a></h2>
+<p>The following examples demonstrate potential use cases in which auto-compaction may improve your Druid performance. See more details in <a href="/docs/37.0.0/data-management/compaction#compaction-guidelines">Compaction strategies</a>. The examples in this section do not change the underlying data.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="change-segment-granularity">Change segment granularity<a href="#change-segment-granularity" class="hash-link" aria-label="Direct link to Change segment granularity" title="Direct link to Change segment granularity"></a></h3>
+<p>You have a stream set up to ingest data with <code>HOUR</code> segment granularity into the <code>wikistream</code> datasource. You notice that your Druid segments are smaller than the <a href="/docs/37.0.0/operations/segment-optimization">recommended segment size</a> of 5 million rows per segment. You wish to automatically compact segments to <code>DAY</code> granularity while leaving the latest week of data <em>not</em> compacted because your stream consistently receives data within [...]
+<p>The following auto-compaction configuration compacts existing <code>HOUR</code> segments into <code>DAY</code> segments while leaving the latest week of data not compacted:</p>
+<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="update-partitioning-scheme">Update partitioning scheme<a href="#update-partitioning-scheme" class="hash-link" aria-label="Direct link to Update partitioning scheme" title="Direct link to Update partitioning scheme"></a></h3>
+<p>For your <code>wikipedia</code> datasource, you want to optimize segment access when regularly ingesting data without compromising compute time when querying the data. Your ingestion spec for batch append uses <a href="/docs/37.0.0/ingestion/native-batch#dynamic-partitioning">dynamic partitioning</a> to optimize for write-time operations, while your stream ingestion partitioning is configured by the stream service. You want to implement auto-compaction to reorganize the data with a su [...]
+<p>The following auto-compaction configuration compacts updates the <code>wikipedia</code> segments to use multi-dimension range partitioning:</p>
+<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="learn-more">Learn more<a href="#learn-more" class="hash-link" aria-label="Direct link to Learn more" title="Direct link to Learn more"></a></h2>
<p>See the following topics for more information:</p>
<ul>
-<li><a href="/docs/latest/data-management/compaction">Compaction</a> for an overview of compaction in Druid.</li>
-<li><a href="/docs/latest/data-management/manual-compaction">Manual compaction</a> for how to manually perform compaction tasks.</li>
-<li><a href="/docs/latest/operations/segment-optimization">Segment optimization</a> for guidance on evaluating and optimizing Druid segment size.</li>
-<li><a href="/docs/latest/design/coordinator#automatic-compaction">Coordinator process</a> for details on how the Coordinator plans compaction tasks.</li>
-</ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/latest/data-management/compaction"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Compaction</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/latest/data-management/manual-compaction"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__ [...]
+<li><a href="/docs/37.0.0/data-management/compaction">Compaction</a> for an overview of compaction in Druid.</li>
+<li><a href="/docs/37.0.0/data-management/manual-compaction">Manual compaction</a> for how to manually perform compaction tasks.</li>
+<li><a href="/docs/37.0.0/operations/segment-optimization">Segment optimization</a> for guidance on evaluating and optimizing Druid segment size.</li>
+<li><a href="/docs/37.0.0/design/coordinator#automatic-compaction">Coordinator process</a> for details on how the Coordinator plans compaction tasks.</li>
+</ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/data-management/compaction"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Compaction</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/37.0.0/data-management/manual-compaction"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__ [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/data-management/cascading-reindexing.html/index.html b/docs/37.0.0/data-management/cascading-reindexing.html/index.html
new file mode 100644
index 000000000..b8a3fc9b3
--- /dev/null
+++ b/docs/37.0.0/data-management/cascading-reindexing.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/data-management/cascading-reindexing">
+ <link rel="canonical" href="/docs/37.0.0/data-management/cascading-reindexing" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/data-management/cascading-reindexing' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/data-management/cascading-reindexing/index.html b/docs/37.0.0/data-management/cascading-reindexing/index.html
new file mode 100644
index 000000000..85ddca420
--- /dev/null
+++ b/docs/37.0.0/data-management/cascading-reindexing/index.html
@@ -0,0 +1,155 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-data-management/cascading-reindexing" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">Cascading reindexing | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0 [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<p>Cascading reindexing is a compaction supervisor template that lets you define age-based rules to automatically apply different compaction configurations as data ages. Instead of a single flat compaction configuration for an entire datasource, you define rules that say "for data older than X, apply configuration Y." Reindexing is a more general term than compaction. Reindexing not only can merge segments with the same schema and partitioning, but also can change the segment s [...]
+<p>For example, you might want to:</p>
+<ul>
+<li>Keep recent data in hourly segments, but coarsen to daily segments after 90 days to help reduce segment count and storage footprint.</li>
+<li>Delete some unwanted rows from data older than 30 days.</li>
+<li>Change compression settings for older data.</li>
+<li>Roll up older data to a coarser query granularity</li>
+</ul>
+<p>Cascading reindexing handles all of this automatically by generating a timeline of compaction intervals and applying the appropriate rules to each interval.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="prerequisites">Prerequisites<a href="#prerequisites" class="hash-link" aria-label="Direct link to Prerequisites" title="Direct link to Prerequisites"></a></h2>
+<p>Before using cascading reindexing, ensure your cluster meets the following requirements:</p>
+<ul>
+<li><strong>MSQ compaction engine</strong>: Set <code>engine</code> to <code>msq</code> in the compaction dynamic config or in the supervisor spec.</li>
+<li><strong>At least two compaction task slots</strong>: The MSQ task engine requires at least two tasks (one controller, one worker).</li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-cascading-reindexing-works">How cascading reindexing works<a href="#how-cascading-reindexing-works" class="hash-link" aria-label="Direct link to How cascading reindexing works" title="Direct link to How cascading reindexing works"></a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="rule-based-configuration">Rule-based configuration<a href="#rule-based-configuration" class="hash-link" aria-label="Direct link to Rule-based configuration" title="Direct link to Rule-based configuration"></a></h3>
+<p>Cascading reindexing uses a rule-based system where each rule controls a specific aspect of compaction and specifies an age threshold for when it applies. There are four rule types, each controlling an orthogonal aspect of the compaction config output for an interval:</p>
+<table><thead><tr><th>Rule type</th><th>What it controls</th><th>Additive?</th></tr></thead><tbody><tr><td><a href="#partitioning-rules">Partitioning</a></td><td>Segment granularity, partitions spec, optional virtual columns for range partitioning</td><td>No</td></tr><tr><td><a href="#deletion-rules">Deletion</a></td><td>Rows to remove from segments</td><td>Yes</td></tr><tr><td><a href="#index-spec-rules">Index spec</a></td><td>Compression and encoding settings</td><td>No</td></tr><tr><t [...]
+<p>Every rule has an <code>olderThan</code> field — an <a href="https://en.wikipedia.org/wiki/ISO_8601#Durations" target="_blank" rel="noopener noreferrer">ISO 8601 period</a> that defines the age threshold. A rule with <code>"olderThan": "P30D"</code> applies to data whose interval ends before the current time minus 30 days.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="additive-vs-non-additive-rules">Additive vs non-additive rules<a href="#additive-vs-non-additive-rules" class="hash-link" aria-label="Direct link to Additive vs non-additive rules" title="Direct link to Additive vs non-additive rules"></a></h3>
+<p><strong>Non-additive rules</strong> (partitioning, index spec, data schema): Only one rule of each type can apply per interval. When multiple rules of the same type match, the rule with the oldest threshold (largest period) takes precedence.</p>
+<p><strong>Additive rules</strong> (deletion): Multiple deletion rules can apply to the same interval. When they do, they combine as <code>NOT(A OR B OR C)</code>, where A, B, and C are the <code>deleteWhere</code> filters from each rule. In other words, the compacted data retains only the rows that don't match any of the deletion filters.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="timeline-generation">Timeline generation<a href="#timeline-generation" class="hash-link" aria-label="Direct link to Timeline generation" title="Direct link to Timeline generation"></a></h3>
+<p>The cascading reindexing template generates a timeline of non-overlapping search intervals, each with its own set of applicable rules. Here is how the timeline is constructed:</p>
+<ol>
+<li>
+<p><strong>Build a base timeline from partitioning rules.</strong> Each partitioning rule defines a segment granularity and an age threshold. The template sorts rules by threshold (oldest first) and creates intervals with boundaries aligned to each rule's segment granularity.</p>
+</li>
+<li>
+<p><strong>Split at non-partitioning rule thresholds.</strong> If deletion, index spec, or data schema rules have thresholds that fall inside a base interval, the template splits that interval at the threshold (aligned to the interval's segment granularity). This ensures rules are applied as precisely as possible.</p>
+</li>
+<li>
+<p><strong>Validate granularity ordering.</strong> The template validates that segment granularity stays the same or becomes finer as you move from past to present. For example, DAY for old data and HOUR for recent data is valid, but HOUR for old data and DAY for recent data is not.</p>
+</li>
+</ol>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="timeline-generation-example">Timeline generation example<a href="#timeline-generation-example" class="hash-link" aria-label="Direct link to Timeline generation example" title="Direct link to Timeline generation example"></a></h4>
+<p>Suppose the current time is <code>2026-03-26T00:00:00Z</code> and you configure the following rules:</p>
+<ul>
+<li><strong>Partitioning rule A</strong>: <code>olderThan: P7D</code>, <code>segmentGranularity: HOUR</code></li>
+<li><strong>Partitioning rule B</strong>: <code>olderThan: P90D</code>, <code>segmentGranularity: DAY</code></li>
+<li><strong>Deletion rule C</strong>: <code>olderThan: P30D</code>, <code>deleteWhere: isRobot = true</code></li>
+</ul>
+<p>The template generates these search intervals:</p>
+<table><thead><tr><th>Search interval</th><th>Segment granularity</th><th>Source</th><th>Active rules</th></tr></thead><tbody><tr><td><code>[-inf, 2025-12-26)</code></td><td>DAY</td><td>Partitioning rule B</td><td>B, C</td></tr><tr><td><code>[2025-12-26, 2026-02-24)</code></td><td>DAY</td><td>Default (from template)</td><td>C</td></tr><tr><td><code>[2026-02-24, 2026-03-19)</code></td><td>HOUR</td><td>Partitioning rule A</td><td>A</td></tr></tbody></table>
+<p>How this works step by step:</p>
+<ol>
+<li>Partitioning rule B (<code>olderThan: P90D</code>) creates the interval <code>[-inf, 2025-12-26)</code> with DAY granularity. Partitioning rule A (<code>olderThan: P7D</code>) creates <code>[2025-12-26, 2026-03-19)</code> with HOUR granularity.</li>
+<li>Deletion rule C (<code>olderThan: P30D</code>) has a threshold of <code>2026-02-24</code>. This falls inside rule A's interval, so that interval is split at <code>2026-02-24</code> (which is already DAY-aligned). The older sub-interval <code>[2025-12-26, 2026-02-24)</code> picks up deletion rule C; the newer sub-interval <code>[2026-02-24, 2026-03-19)</code> does not.</li>
+<li>Granularity validation passes because DAY (older) to HOUR (newer) is valid — granularity becomes finer toward the present.</li>
+</ol>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="how-defaults-work">How defaults work<a href="#how-defaults-work" class="hash-link" aria-label="Direct link to How defaults work" title="Direct link to How defaults work"></a></h3>
+<p>The template requires <code>defaultSegmentGranularity</code> and <code>defaultPartitionsSpec</code>. These are used for any interval where no partitioning rule matches. This happens in two scenarios:</p>
+<ol>
+<li><strong>No partitioning rules defined at all.</strong> If you only define deletion, index spec, or data schema rules, all intervals use the default granularity and partitions spec.</li>
+<li><strong>Non-partitioning rules have a more recent threshold than the newest partitioning rule.</strong> For example, if your only partitioning rule is <code>olderThan: P90D</code> but you have a deletion rule with <code>olderThan: P30D</code>, intervals between 30 and 90 days old will use the defaults.</li>
+</ol>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="supervisor-spec-reference">Supervisor spec reference<a href="#supervisor-spec-reference" class="hash-link" aria-label="Direct link to Supervisor spec reference" title="Direct link to Supervisor spec reference"></a></h2>
+<p>To submit a cascading reindexing supervisor, wrap the template spec inside a compaction supervisor spec:</p>
+<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="template-properties">Template properties<a href="#template-properties" class="hash-link" aria-label="Direct link to Template properties" title="Direct link to Template properties"></a></h3>
+<p>The following table describes the properties of the <code>reindexCascade</code> template:</p>
+<table><thead><tr><th>Field</th><th>Description</th><th>Required</th><th>Default</th></tr></thead><tbody><tr><td><code>type</code></td><td>Must be <code>reindexCascade</code>.</td><td>Yes</td><td></td></tr><tr><td><code>dataSource</code></td><td>The datasource to compact.</td><td>Yes</td><td></td></tr><tr><td><code>ruleProvider</code></td><td><a href="#rule-provider-types">Rule provider</a> configuration that supplies reindexing rules.</td><td>Yes</td><td></td></tr><tr><td><code>defaultS [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="rule-provider-types">Rule provider types<a href="#rule-provider-types" class="hash-link" aria-label="Direct link to Rule provider types" title="Direct link to Rule provider types"></a></h3>
+<p>A rule provider supplies the reindexing rules to the template. Druid supports two provider types.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="inline-provider">Inline provider<a href="#inline-provider" class="hash-link" aria-label="Direct link to Inline provider" title="Direct link to Inline provider"></a></h4>
+<p>The inline provider (<code>type: inline</code>) defines rules directly in the supervisor spec. This is currently the only concrete implementation.</p>
+<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
+<table><thead><tr><th>Field</th><th>Description</th><th>Required</th><th>Default</th></tr></thead><tbody><tr><td><code>type</code></td><td>Must be <code>inline</code>.</td><td>Yes</td><td></td></tr><tr><td><code>partitioningRules</code></td><td>List of <a href="#partitioning-rules">partitioning rules</a>.</td><td>No</td><td><code>[]</code></td></tr><tr><td><code>deletionRules</code></td><td>List of <a href="#deletion-rules">deletion rules</a>.</td><td>No</td><td><code>[]</code></td></tr> [...]
+<p>At least one rule must be defined across all rule lists.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="composing-provider">Composing provider<a href="#composing-provider" class="hash-link" aria-label="Direct link to Composing provider" title="Direct link to Composing provider"></a></h4>
+<p>The composing provider (<code>type: composing</code>) chains multiple rule providers together with first-wins semantics. For each rule type, Druid uses the rules from the first provider that has non-empty rules of that type.</p>
+<p>This rule provider exists in anticipation of future community contributed providers, such as a provider that sources rules from the Druid Catalog.</p>
+<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
+<table><thead><tr><th>Field</th><th>Description</th><th>Required</th><th>Default</th></tr></thead><tbody><tr><td><code>type</code></td><td>Must be <code>composing</code>.</td><td>Yes</td><td></td></tr><tr><td><code>providers</code></td><td>Ordered list of <a href="#rule-provider-types">rule providers</a>. Provider order determines precedence.</td><td>Yes</td><td></td></tr></tbody></table>
+<p>The composing provider is ready only when all child providers are ready.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="reindexing-rule-types">Reindexing rule types<a href="#reindexing-rule-types" class="hash-link" aria-label="Direct link to Reindexing rule types" title="Direct link to Reindexing rule types"></a></h3>
+<p>All rule types share the following common fields:</p>
+<table><thead><tr><th>Field</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>id</code></td><td>Unique identifier for the rule.</td><td>Yes</td></tr><tr><td><code>description</code></td><td>Human-readable description.</td><td>No</td></tr><tr><td><code>olderThan</code></td><td>ISO 8601 period defining the age threshold. The rule applies to data older than the current time minus this period. Must be non-negative.</td><td>Yes</td></tr></tbody></table>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="partitioning-rules">Partitioning rules<a href="#partitioning-rules" class="hash-link" aria-label="Direct link to Partitioning rules" title="Direct link to Partitioning rules"></a></h4>
+<p>Partitioning rules control how data is physically laid out into segments. This includes the time bucketing (segment granularity) and how data within a time bucket is split (partitions spec).</p>
+<p>This is a non-additive rule — only one partitioning rule applies per interval.</p>
+<table><thead><tr><th>Field</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>id</code></td><td>Rule identifier.</td><td>Yes</td></tr><tr><td><code>description</code></td><td>Human-readable description.</td><td>No</td></tr><tr><td><code>olderThan</code></td><td>ISO 8601 period.</td><td>Yes</td></tr><tr><td><code>segmentGranularity</code></td><td>Time granularity for segment buckets. Supported values: <code>MINUTE</code>, <code>FIFTEEN_MINUTE</code>, <code>HOUR</c [...]
+<p>Example:</p>
+<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="deletion-rules">Deletion rules<a href="#deletion-rules" class="hash-link" aria-label="Direct link to Deletion rules" title="Direct link to Deletion rules"></a></h4>
+<p>Deletion rules specify rows to remove during compaction. The <code>deleteWhere</code> field defines a <a href="/docs/37.0.0/querying/filters">Druid filter</a> that matches rows to <strong>delete</strong>. During processing, Druid wraps these filters in NOT logic — the compacted data retains rows that do <strong>not</strong> match the filter.</p>
+<p>This is an additive rule — multiple deletion rules can apply to the same interval.</p>
+<table><thead><tr><th>Field</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>id</code></td><td>Rule identifier.</td><td>Yes</td></tr><tr><td><code>description</code></td><td>Human-readable description.</td><td>No</td></tr><tr><td><code>olderThan</code></td><td>ISO 8601 period.</td><td>Yes</td></tr><tr><td><code>deleteWhere</code></td><td>A <a href="/docs/37.0.0/querying/filters">Druid filter</a> matching rows to remove.</td><td>Yes</td></tr><tr><td><code>virtual [...]
+<p><strong>What you write vs what happens:</strong></p>
+<p>If you define two deletion rules:</p>
+<ul>
+<li>Rule 1: <code>deleteWhere: isRobot = true</code></li>
+<li>Rule 2: <code>deleteWhere: countryName = null</code></li>
+</ul>
+<p>Druid applies them as: <code>NOT(isRobot = true OR countryName = null)</code>. The compacted segments retain only rows where <code>isRobot</code> is not true <strong>and</strong> <code>countryName</code> is not null.</p>
+<p>Example:</p>
+<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="index-spec-rules">Index spec rules<a href="#index-spec-rules" class="hash-link" aria-label="Direct link to Index spec rules" title="Direct link to Index spec rules"></a></h4>
+<p>Index spec rules control compression and encoding settings for compacted segments, independently of partitioning.</p>
+<p>This is a non-additive rule — only one index spec rule applies per interval.</p>
+<table><thead><tr><th>Field</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>id</code></td><td>Rule identifier.</td><td>Yes</td></tr><tr><td><code>description</code></td><td>Human-readable description.</td><td>No</td></tr><tr><td><code>olderThan</code></td><td>ISO 8601 period.</td><td>Yes</td></tr><tr><td><code>indexSpec</code></td><td>An <a href="/docs/37.0.0/ingestion/ingestion-spec#indexspec">IndexSpec</a> object defining bitmap type, metric compression, and [...]
+<p>Example:</p>
+<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="data-schema-rules">Data schema rules<a href="#data-schema-rules" class="hash-link" aria-label="Direct link to Data schema rules" title="Direct link to Data schema rules"></a></h4>
+<p>Data schema rules control the schema of compacted segments, including dimensions, metrics, query granularity, rollup, and projections.</p>
+<p>This is a non-additive rule — only one data schema rule applies per interval. At least one of the optional fields must be non-null.</p>
+<table><thead><tr><th>Field</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>id</code></td><td>Rule identifier.</td><td>Yes</td></tr><tr><td><code>description</code></td><td>Human-readable description.</td><td>No</td></tr><tr><td><code>olderThan</code></td><td>ISO 8601 period.</td><td>Yes</td></tr><tr><td><code>dimensionsSpec</code></td><td><a href="/docs/37.0.0/ingestion/ingestion-spec#dimensionsspec">Dimensions config</a> for the compacted segments.</td><td>No [...]
+<p>Example:</p>
+<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example"></a></h2>
+<p>The following example uses the <code>wikipedia</code> datasource and demonstrates a cascading reindexing supervisor with a partitioning rule and a deletion rule that does the following:</p>
+<ul>
+<li>Data older than 30 days is compacted into daily range-partitioned segments.</li>
+<li>Rows that have a <code>isRobot</code> column with a <code>true</code> value are deleted from data older than 90 days.</li>
+<li>The <code>skipOffsetFromLatest</code> setting skips the most recent day of data.</li>
+</ul>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">curl --location --request POST 'http://localhost:8081/druid/indexer/v1/supervisor' [...]
+<p>This creates three timeline intervals:</p>
+<ul>
+<li><code>[-inf, now - 90D)</code>: DAY granularity, bot edits deleted.</li>
+<li><code>[now - 90D, now - 30D)</code>: DAY granularity, no deletions.</li>
+<li><code>[now - 30D, now - 1D)</code>: HOUR granularity (defaults), no deletions. Data within the last day is skipped.</li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="limitations">Limitations<a href="#limitations" class="hash-link" aria-label="Direct link to Limitations" title="Direct link to Limitations"></a></h2>
+<ul>
+<li><strong>MSQ task engine only.</strong> Cascading reindexing requires the MSQ task engine. The native engine is not supported.</li>
+<li><strong>Compaction supervisors only.</strong> This feature is not available for auto-compaction using Coordinator duties.</li>
+<li><strong>No <code>partitionsSpec</code> in <code>tuningConfig</code>.</strong> Partitioning is controlled exclusively by rules and defaults. Setting <code>partitionsSpec</code> inside <code>tuningConfig</code> causes a validation error.</li>
+<li><strong>Granularity must not coarsen toward the present.</strong> Segment granularity must stay the same or become finer as you move from older to newer data. For example, DAY to HOUR is valid; HOUR to DAY is not.</li>
+<li><strong><code>skipOffsetFromLatest</code> and <code>skipOffsetFromNow</code> are mutually exclusive.</strong> You can set one or the other, not both.</li>
+<li><strong><code>ALL</code> segment granularity is not supported.</strong> This is the same limitation as standard auto-compaction.</li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="learn-more">Learn more<a href="#learn-more" class="hash-link" aria-label="Direct link to Learn more" title="Direct link to Learn more"></a></h2>
+<p>See the following topics for more information:</p>
+<ul>
+<li><a href="/docs/37.0.0/data-management/automatic-compaction">Automatic compaction</a> for general auto-compaction configuration.</li>
+<li><a href="/docs/37.0.0/data-management/automatic-compaction#auto-compaction-using-compaction-supervisors">Auto-compaction using compaction supervisors</a> for supervisor setup and management.</li>
+<li><a href="/docs/37.0.0/data-management/automatic-compaction#use-msq-for-auto-compaction">MSQ task engine for auto-compaction</a> for MSQ engine requirements and limitations.</li>
+<li><a href="/docs/37.0.0/data-management/compaction">Compaction</a> for an overview of compaction in Druid.</li>
+</ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/data-management/manual-compaction"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Manual compaction</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/37.0.0/querying/sql"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label"> [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/data-management/compaction.html/index.html b/docs/37.0.0/data-management/compaction.html/index.html
new file mode 100644
index 000000000..ab5be4656
--- /dev/null
+++ b/docs/37.0.0/data-management/compaction.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/data-management/compaction">
+ <link rel="canonical" href="/docs/37.0.0/data-management/compaction" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/data-management/compaction' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/data-management/compaction/index.html b/docs/37.0.0/data-management/compaction/index.html
similarity index 74%
copy from docs/latest/data-management/compaction/index.html
copy to docs/37.0.0/data-management/compaction/index.html
index 4d943f24b..de3789fc9 100644
--- a/docs/latest/data-management/compaction/index.html
+++ b/docs/37.0.0/data-management/compaction/index.html
@@ -3,18 +3,18 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Compaction | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/data-mana [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Compaction | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/data-mana [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="compaction-guidelines">Compaction guidelines<a href="#compaction-guidelines" class="hash-link" aria-label="Direct link to Compaction guidelines" title="Direct link to Compaction guidelines"></a></h2>
<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 many small segments.</li>
-<li>If you append data using <code>appendToExisting</code> for <a href="/docs/latest/ingestion/native-batch">native batch</a> ingestion creating suboptimal segments.</li>
+<li>If you append data using <code>appendToExisting</code> for <a href="/docs/37.0.0/ingestion/native-batch">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>
@@ -24,48 +24,49 @@
<li>If you don't need fine-grained granularity for older data, you can use compaction to change older segments to a coarser query granularity. For example, from <code>minute</code> to <code>hour</code> or <code>hour</code> to <code>day</code>. This reduces the storage space required for older data.</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#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/37.0.0/ingestion/rollup#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">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/37.0.0/operations/segment-optimization">Segment optimization</a> for additional guidance to determine if compaction will help in your environment.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="ways-to-run-compaction">Ways to run compaction<a href="#ways-to-run-compaction" class="hash-link" aria-label="Direct link to Ways to run compaction" title="Direct link to Ways to run compaction"></a></h2>
<p>Automatic compaction, also called auto-compaction, works in most use cases and should be your first option.</p>
-<p>The Coordinator uses its <a href="/docs/latest/design/coordinator#segment-search-policy-in-automatic-compaction">segment search policy</a> to periodically identify segments for compaction starting from newest to oldest. When the Coordinator discovers segments that have not been compacted or segments that were compacted with a different or changed spec, it submits compaction tasks for the time interval covering those segments.</p>
-<p>To learn more, see <a href="/docs/latest/data-management/automatic-compaction">Automatic compaction</a>.</p>
+<p>The Coordinator uses its <a href="/docs/37.0.0/design/coordinator#segment-search-policy-in-automatic-compaction">segment search policy</a> to periodically identify segments for compaction starting from newest to oldest. When the Coordinator discovers segments that have not been compacted or segments that were compacted with a different or changed spec, it submits compaction tasks for the time interval covering those segments.</p>
+<p>To learn more, see <a href="/docs/37.0.0/data-management/automatic-compaction">Automatic compaction</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>
<li>You want to force compaction for a specific time range or you want to compact data out of chronological order.</li>
</ul>
-<p>See <a href="/docs/latest/data-management/manual-compaction#setting-up-manual-compaction">Setting up a manual compaction task</a> for more about manual compaction tasks.</p>
+<p>See <a href="/docs/37.0.0/data-management/manual-compaction#setting-up-manual-compaction">Setting up a manual compaction task</a> for more about manual compaction tasks.</p>
+<p>For advanced data lifecycle management where you need different compaction configurations at different data ages — such as coarsening segment granularity, deleting old rows, or changing compression over time — see <a href="/docs/37.0.0/data-management/cascading-reindexing">Cascading reindexing</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="data-handling-with-compaction">Data handling with compaction<a href="#data-handling-with-compaction" class="hash-link" aria-label="Direct link to Data handling with compaction" title="Direct link to Data handling with compaction"></a></h2>
-<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 "true" in the compaction task to configure Druid to replace all existing segments fully contained by the interval. See the suggestion for reindexing with finer granularity under <a href="/docs/latest/ingestion/native-batch#implementation-considerations">Implementation considerations</a> for an example.</p>
+<p>During compaction, Druid overwrites the original set of segments with the compacted set. Druid also locks 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 "true" in the compaction task to configure Druid to replace all existing segments fully contained by the interval. See the suggestion for reindexing with finer granularity under <a href="/docs/37.0.0/ingestion/native-batch#implementation-considerations">Implementation considerations</a> for an example.</p>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>WARNING: <code>dropExisting</code [...]
<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 adjust the auto-compaction starting point from the current time to reduce the [...]
Another option is to set the compaction task to higher priority than the ingestion task.
-For more information, see <a href="/docs/latest/data-management/automatic-compaction#avoid-conflicts-with-ingestion">Avoid conflicts with ingestion</a>.</p>
+For more information, see <a href="/docs/37.0.0/data-management/automatic-compaction#avoid-conflicts-with-ingestion">Avoid conflicts with ingestion</a>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="segment-granularity-handling">Segment granularity handling<a href="#segment-granularity-handling" class="hash-link" aria-label="Direct link to Segment granularity handling" title="Direct link to Segment granularity handling"></a></h3>
-<p>Unless you modify the segment granularity in <a href="/docs/latest/data-management/manual-compaction#compaction-granularity-spec"><code>granularitySpec</code></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>Unless you modify the segment granularity in <a href="/docs/37.0.0/data-management/manual-compaction#compaction-granularity-spec"><code>granularitySpec</code></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.</p>
<p>For example consider two overlapping segments: segment "A" for the interval 01/01/2020-01/02/2020 with day granularity and segment "B" for the interval 01/01/2020-02/01/2020. Druid attempts to combine and compact the overlapped segments. In this example, the earliest start time for the two segments is 01/01/2020 and the latest end time of the two segments is 02/01/2020. Druid compacts the segments together even though they have different segment granularity. Druid [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="query-granularity-handling">Query granularity handling<a href="#query-granularity-handling" class="hash-link" aria-label="Direct link to Query granularity handling" title="Direct link to Query granularity handling"></a></h3>
-<p>Unless you modify the query granularity in the <a href="/docs/latest/data-management/manual-compaction#compaction-granularity-spec"><code>granularitySpec</code></a>, Druid retains the query granularity for the compacted segments. If segments have different query granularities before compaction, Druid chooses the finest level of granularity for the resulting compacted segment. For example if a compaction task combines two segments, one with day query granularity and one with minute que [...]
+<p>Unless you modify the query granularity in the <a href="/docs/37.0.0/data-management/manual-compaction#compaction-granularity-spec"><code>granularitySpec</code></a>, Druid retains the query granularity for the compacted segments. If segments have different query granularities before compaction, Druid chooses the finest level of granularity for the resulting compacted segment. For example if a compaction task combines two segments, one with day query granularity and one with minute que [...]
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>In Apache Druid 0.21.0 and prior, [...]
<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 class="anchor anchorWithStickyNavbar_LWe7" id="dimension-handling">Dimension handling<a href="#dimension-handling" class="hash-link" aria-label="Direct link to Dimension handling" title="Direct link to Dimension handling"></a></h3>
-<p>Apache Druid supports schema changes. Therefore, dimensions can be different across segments even if they are a part of the same datasource. See <a href="/docs/latest/design/segments#segments-with-different-schemas">Segments with different schemas</a>. If the input segments have different dimensions, the resulting compacted segment includes 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 datasource. See <a href="/docs/37.0.0/design/segments#segments-with-different-schemas">Segments with different schemas</a>. If the input segments have different dimensions, the resulting compacted segment includes 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 class="anchor anchorWithStickyNavbar_LWe7" id="rollup">Rollup<a href="#rollup" class="hash-link" aria-label="Direct link to Rollup" title="Direct link to Rollup"></a></h3>
<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">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#analysistypes">Segment Metadata Queries</a>.</p>
+See <a href="/docs/37.0.0/ingestion/rollup">Roll-up</a> for more details.
+You can check that your segments are rolled up or not by using <a href="/docs/37.0.0/querying/segmentmetadataquery#analysistypes">Segment Metadata Queries</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="learn-more">Learn more<a href="#learn-more" class="hash-link" aria-label="Direct link to Learn more" title="Direct link to Learn more"></a></h2>
<p>See the following topics for more information:</p>
<ul>
-<li><a href="/docs/latest/operations/segment-optimization">Segment optimization</a> for guidance to determine if compaction will help in your case.</li>
-<li><a href="/docs/latest/data-management/manual-compaction">Manual compaction</a> for how to run a one-time compaction task.</li>
-<li><a href="/docs/latest/data-management/automatic-compaction">Automatic compaction</a> for how to enable and configure automatic compaction.</li>
-</ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/latest/data-management/schema-changes"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Schema changes</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/latest/data-management/automatic-compaction"><div class="pagination-nav__sublabel">Next</div><div class="pagin [...]
+<li><a href="/docs/37.0.0/operations/segment-optimization">Segment optimization</a> for guidance to determine if compaction will help in your case.</li>
+<li><a href="/docs/37.0.0/data-management/manual-compaction">Manual compaction</a> for how to run a one-time compaction task.</li>
+<li><a href="/docs/37.0.0/data-management/automatic-compaction">Automatic compaction</a> for how to enable and configure automatic compaction.</li>
+</ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/data-management/schema-changes"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Schema changes</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/37.0.0/data-management/automatic-compaction"><div class="pagination-nav__sublabel">Next</div><div class="pagin [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/data-management/delete.html/index.html b/docs/37.0.0/data-management/delete.html/index.html
new file mode 100644
index 000000000..d0d833b97
--- /dev/null
+++ b/docs/37.0.0/data-management/delete.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/data-management/delete">
+ <link rel="canonical" href="/docs/37.0.0/data-management/delete" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/data-management/delete' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/data-management/delete/index.html b/docs/37.0.0/data-management/delete/index.html
similarity index 90%
copy from docs/latest/data-management/delete/index.html
copy to docs/37.0.0/data-management/delete/index.html
index eb91946a6..059fbb072 100644
--- a/docs/latest/data-management/delete/index.html
+++ b/docs/37.0.0/data-management/delete/index.html
@@ -3,19 +3,19 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Data deletion | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/data-m [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Data deletion | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/data-m [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
-<p>Apache Druid stores data <a href="/docs/latest/design/storage">partitioned by time chunk</a> and supports
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<p>Apache Druid stores data <a href="/docs/37.0.0/design/storage">partitioned by time chunk</a> and supports
deleting data for time chunks by dropping segments. This is a fast, metadata-only operation.</p>
<p>Deletion by time range happens in two steps:</p>
<ol>
-<li>Segments to be deleted must first be marked as <a href="/docs/latest/design/storage#segment-lifecycle">"unused"</a>. This can
-happen when a segment is dropped by a <a href="/docs/latest/operations/rule-configuration">drop rule</a> or when you manually mark a
+<li>Segments to be deleted must first be marked as <a href="/docs/37.0.0/design/storage#segment-lifecycle">"unused"</a>. This can
+happen when a segment is dropped by a <a href="/docs/37.0.0/operations/rule-configuration">drop rule</a> or when you manually mark a
segment unused through the Coordinator API or web console. This is a soft delete: the data is not available for
querying, but the segment files remains in deep storage, and the segment records remains in the metadata store.</li>
<li>Once a segment is marked "unused", you can use a <a href="#kill-task"><code>kill</code> task</a> to permanently delete the segment file from
@@ -23,26 +23,26 @@ deep storage and remove its record from the metadata store. This is a hard delet
you have a backup.</li>
</ol>
<p>For documentation on disabling segments using the Coordinator API, see the
-<a href="/docs/latest/api-reference/legacy-metadata-api#datasources">Legacy metadata API reference</a>.</p>
-<p>A data deletion tutorial is available at <a href="/docs/latest/tutorials/tutorial-delete-data">Tutorial: Deleting data</a>.</p>
+<a href="/docs/37.0.0/api-reference/legacy-metadata-api#datasources">Legacy metadata API reference</a>.</p>
+<p>A data deletion tutorial is available at <a href="/docs/37.0.0/tutorials/tutorial-delete-data">Tutorial: Deleting data</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="delete-data-automatically-using-drop-rules">Delete data automatically using drop rules<a href="#delete-data-automatically-using-drop-rules" class="hash-link" aria-label="Direct link to Delete data automatically using drop rules" title="Direct link to Delete data automatically using drop rules"></a></h2>
-<p>Druid supports <a href="/docs/latest/operations/rule-configuration">load and drop rules</a>, which are used to define intervals of time
+<p>Druid supports <a href="/docs/37.0.0/operations/rule-configuration">load and drop rules</a>, which are used to define intervals of time
where data should be preserved, and intervals where data should be discarded. Data that falls under a drop rule is
marked unused, in the same manner as if you <a href="#delete-data-for-a-time-range-manually">manually mark that time range unused</a>. This is a
fast, metadata-only operation.</p>
<p>Data that is dropped in this way is marked unused, but remains in deep storage. To permanently delete it, use a
<a href="#kill-task"><code>kill</code> task</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="delete-specific-records">Delete specific records<a href="#delete-specific-records" class="hash-link" aria-label="Direct link to Delete specific records" title="Direct link to Delete specific records"></a></h2>
-<p>Druid supports deleting specific records using <a href="/docs/latest/data-management/update#reindex">reindexing</a> with a filter. The filter specifies which
+<p>Druid supports deleting specific records using <a href="/docs/37.0.0/data-management/update#reindex">reindexing</a> with a filter. The filter specifies which
data remains after reindexing, so it must be the inverse of the data you want to delete. Because segments must be
rewritten to delete data in this way, it can be a time-consuming operation.</p>
<p>For example, to delete records where <code>userName</code> is <code>'bob'</code> with native batch indexing, use a
-<a href="/docs/latest/ingestion/ingestion-spec#transformspec"><code>transformSpec</code></a> with filter <code>{"type": "not", "field": {"type": "selector", "dimension": "userName", "value": "bob"}}</code>.</p>
-<p>To delete the same records using SQL, use <a href="/docs/latest/multi-stage-query/concepts#overwrite-data-with-replace">REPLACE</a> with <code>WHERE userName <> 'bob'</code>.</p>
-<p>To reindex using <a href="/docs/latest/ingestion/native-batch">native batch</a>, use the <a href="/docs/latest/ingestion/input-sources#druid-input-source"><code>druid</code> input
+<a href="/docs/37.0.0/ingestion/ingestion-spec#transformspec"><code>transformSpec</code></a> with filter <code>{"type": "not", "field": {"type": "selector", "dimension": "userName", "value": "bob"}}</code>.</p>
+<p>To delete the same records using SQL, use <a href="/docs/37.0.0/multi-stage-query/concepts#overwrite-data-with-replace">REPLACE</a> with <code>WHERE userName <> 'bob'</code>.</p>
+<p>To reindex using <a href="/docs/37.0.0/ingestion/native-batch">native batch</a>, use the <a href="/docs/37.0.0/ingestion/input-sources#druid-input-source"><code>druid</code> input
source</a>. If needed,
-<a href="/docs/latest/ingestion/ingestion-spec#transformspec"><code>transformSpec</code></a> can be used to filter or modify data during the
-reindexing job. To reindex with SQL, use <a href="/docs/latest/multi-stage-query/reference#replace"><code>REPLACE <table> OVERWRITE</code></a>
+<a href="/docs/37.0.0/ingestion/ingestion-spec#transformspec"><code>transformSpec</code></a> can be used to filter or modify data during the
+reindexing job. To reindex with SQL, use <a href="/docs/37.0.0/multi-stage-query/reference#replace"><code>REPLACE <table> OVERWRITE</code></a>
with <code>SELECT ... FROM <table></code>. (Druid does not have <code>UPDATE</code> or <code>ALTER TABLE</code> statements.) Any SQL SELECT query can be
used to filter, modify, or enrich the data during the reindexing job.</p>
<p>Data that is deleted in this way is marked unused, but remains in deep storage. To permanently delete it, use a <a href="#kill-task"><code>kill</code>
@@ -64,10 +64,10 @@ deep storage. This operation cannot be undone.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="auto-kill-data-using-coordinator-duties">Auto-kill data using Coordinator duties<a href="#auto-kill-data-using-coordinator-duties" class="hash-link" aria-label="Direct link to Auto-kill data using Coordinator duties" title="Direct link to Auto-kill data using Coordinator duties"></a></h3>
<p>Instead of submitting <code>kill</code> tasks manually to permanently delete data for a given interval, you can enable auto-kill of unused segments on the Coordinator.
The Coordinator runs a duty periodically to identify intervals containing unused segments that are eligible for kill. It then launches a <code>kill</code> task for each of these intervals.</p>
-<p>Refer to <a href="/docs/latest/configuration/#data-management">Data management on the Coordinator</a> to configure auto-kill of unused segments on the Coordinator.</p>
+<p>Refer to <a href="/docs/37.0.0/configuration/#data-management">Data management on the Coordinator</a> to configure auto-kill of unused segments on the Coordinator.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="auto-kill-data-on-the-overlord-experimental">Auto-kill data on the Overlord (Experimental)<a href="#auto-kill-data-on-the-overlord-experimental" class="hash-link" aria-label="Direct link to Auto-kill data on the Overlord (Experimental)" title="Direct link to Auto-kill data on the Overlord (Experimental)"></a></h3>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>This is an experimental feature t [...]
-<li>Can be used only if <a href="/docs/latest/configuration/#segment-metadata-cache-experimental">segment metadata caching</a> is enabled on the Overlord.</li>
+<li>Can be used only if <a href="/docs/37.0.0/configuration/#segment-metadata-cache">segment metadata caching</a> is enabled on the Overlord.</li>
<li>MUST NOT be used if auto-kill of unused segments is already enabled on the Coordinator.</li>
</ul></div></div>
<p>This is an experimental feature to run kill tasks in an "embedded" mode on the Overlord itself.</p>
@@ -83,7 +83,7 @@ The Coordinator runs a duty periodically to identify intervals containing unused
<li>can keep up with a large number of unused segments in the cluster.</li>
<li>take advantage of the segment metadata cache on the Overlord.</li>
</ul>
-<p>Refer to <a href="/docs/latest/configuration/#auto-kill-unused-segments-experimental">Auto-kill unused segments on the Overlord</a> to configure auto-kill of unused segments on the Overlord.
-See <a href="/docs/latest/operations/metrics#auto-kill-unused-segments">Auto-kill metrics</a> for the metrics emitted by embedded kill tasks.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/latest/data-management/update"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Data updates</div></a><a class="pagination-nav__link pagination-nav__link [...]
+<p>Refer to <a href="/docs/37.0.0/configuration/#auto-kill-unused-segments-experimental">Auto-kill unused segments on the Overlord</a> to configure auto-kill of unused segments on the Overlord.
+See <a href="/docs/37.0.0/operations/metrics#auto-kill-unused-segments">Auto-kill metrics</a> for the metrics emitted by embedded kill tasks.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/data-management/update"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Data updates</div></a><a class="pagination-nav__link pagination-nav__link [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/latest/data-management/index.html b/docs/37.0.0/data-management/index.html
similarity index 86%
copy from docs/latest/data-management/index.html
copy to docs/37.0.0/data-management/index.html
index 5467c1323..8331d80a4 100644
--- a/docs/latest/data-management/index.html
+++ b/docs/37.0.0/data-management/index.html
@@ -3,21 +3,21 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Data management | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/data [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Data management | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/data [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
-files called <a href="/docs/latest/design/segments">segments</a>. Data management operations involving replacing, or deleting,
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+files called <a href="/docs/37.0.0/design/segments">segments</a>. Data management operations involving replacing, or deleting,
these segments include:</p>
<ul>
-<li><a href="/docs/latest/data-management/update">Updates</a> to existing data.</li>
-<li><a href="/docs/latest/data-management/delete">Deletion</a> of existing data.</li>
-<li><a href="/docs/latest/data-management/schema-changes">Schema changes</a> for new and existing data.</li>
-<li><a href="/docs/latest/data-management/compaction">Compaction</a> and <a href="/docs/latest/data-management/automatic-compaction">automatic compaction</a>, which reindex existing data to
+<li><a href="/docs/37.0.0/data-management/update">Updates</a> to existing data.</li>
+<li><a href="/docs/37.0.0/data-management/delete">Deletion</a> of existing data.</li>
+<li><a href="/docs/37.0.0/data-management/schema-changes">Schema changes</a> for new and existing data.</li>
+<li><a href="/docs/37.0.0/data-management/compaction">Compaction</a> and <a href="/docs/37.0.0/data-management/automatic-compaction">automatic compaction</a>, which reindex existing data to
optimize storage footprint and performance.</li>
-</ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/latest/ingestion/faq"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Troubleshooting FAQ</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/latest/data-management/update"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Data upd [...]
+</ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/ingestion/faq"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Troubleshooting FAQ</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/37.0.0/data-management/update"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Data upd [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/data-management/manual-compaction.html/index.html b/docs/37.0.0/data-management/manual-compaction.html/index.html
new file mode 100644
index 000000000..a94ba884f
--- /dev/null
+++ b/docs/37.0.0/data-management/manual-compaction.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/data-management/manual-compaction">
+ <link rel="canonical" href="/docs/37.0.0/data-management/manual-compaction" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/data-management/manual-compaction' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/data-management/manual-compaction/index.html b/docs/37.0.0/data-management/manual-compaction/index.html
similarity index 63%
copy from docs/latest/data-management/manual-compaction/index.html
copy to docs/37.0.0/data-management/manual-compaction/index.html
index 7198bdf8a..b5a3d3065 100644
--- a/docs/latest/data-management/manual-compaction/index.html
+++ b/docs/37.0.0/data-management/manual-compaction/index.html
@@ -3,22 +3,22 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Manual compaction | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/da [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Manual compaction | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/da [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
-<p>You can perform manual compaction where you submit a one-time compaction task for a specific interval. Generally, you don't need to do this if you use <a href="/docs/latest/data-management/automatic-compaction">automatic compaction</a>, which is recommended for most workloads.</p>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<p>You can perform manual compaction where you submit a one-time compaction task for a specific interval. Generally, you don't need to do this if you use <a href="/docs/37.0.0/data-management/automatic-compaction">automatic compaction</a>, which is recommended for most workloads.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="setting-up-manual-compaction">Setting up manual compaction<a href="#setting-up-manual-compaction" class="hash-link" aria-label="Direct link to Setting up manual compaction" title="Direct link to Setting up manual compaction"></a></h2>
<p>Compaction tasks merge all segments for the defined interval according to the following syntax:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
-<table><thead><tr><th>Field</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>type</code></td><td>Task type. Set the value to <code>compact</code>.</td><td>Yes</td></tr><tr><td><code>id</code></td><td>Task ID</td><td>No</td></tr><tr><td><code>dataSource</code></td><td>Data source name to compact</td><td>Yes</td></tr><tr><td><code>ioConfig</code></td><td>I/O configuration for compaction task. See <a href="#compaction-io-configuration">Compaction I/O configuration< [...]
+<table><thead><tr><th>Field</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>type</code></td><td>Task type. Set the value to <code>compact</code>.</td><td>Yes</td></tr><tr><td><code>id</code></td><td>Task ID</td><td>No</td></tr><tr><td><code>dataSource</code></td><td>Data source name to compact</td><td>Yes</td></tr><tr><td><code>ioConfig</code></td><td>I/O configuration for compaction task. See <a href="#compaction-io-configuration">Compaction I/O configuration< [...]
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>Note: Use <code>granularitySpec</ [...]
-<p>To control the number of result segments per time chunk, you can set <a href="/docs/latest/ingestion/native-batch#partitionsspec"><code>maxRowsPerSegment</code></a> or <a href="/docs/latest/ingestion/native-batch#tuningconfig"><code>numShards</code></a>.</p>
+<p>To control the number of result segments per time chunk, you can set <a href="/docs/37.0.0/ingestion/native-batch#partitionsspec"><code>maxRowsPerSegment</code></a> or <a href="/docs/37.0.0/ingestion/native-batch#tuningconfig"><code>numShards</code></a>.</p>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>You can run multiple compaction t [...]
-<p>A compaction task internally generates an <code>index</code> or <code>index_parallel</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/input-sources"><code>druid</code> input source</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> or <code>index_parallel</code> task spec for performing compaction work with some fixed parameters. For example, its <code>inputSource</code> is always the <a href="/docs/37.0.0/ingestion/input-sources"><code>druid</code> input source</a>, and <code>dimensionsSpec</code> and <code>metricsSpec</code> include all dimensions and metrics of the input segments by default.</p>
<p>Compaction tasks typically fetch all <a href="#compaction-io-configuration">relevant segments</a> prior to launching any subtasks, <em>unless</em> the following properties are all set to non-null values. It is strongly recommended to set them to non-null values to maximize performance and minimize disk usage of the <code>compact</code> task:</p>
<ul>
<li><a href="#compaction-granularity-spec"><code>granularitySpec</code></a>, with non-null values for each of <code>segmentGranularity</code>, <code>queryGranularity</code>, and <code>rollup</code></li>
@@ -38,24 +38,36 @@
If you don't specify <code>granularitySpec</code>, Druid retains the original segment and query granularities when compaction is complete.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="compaction-io-configuration">Compaction I/O configuration<a href="#compaction-io-configuration" class="hash-link" aria-label="Direct link to Compaction I/O configuration" title="Direct link to Compaction I/O configuration"></a></h2>
<p>The compaction <code>ioConfig</code> requires specifying <code>inputSpec</code> as follows:</p>
-<table><thead><tr><th>Field</th><th>Description</th><th>Default</th><th>Required</th></tr></thead><tbody><tr><td><code>type</code></td><td>Task type. Set the value to <code>compact</code>.</td><td>none</td><td>Yes</td></tr><tr><td><code>inputSpec</code></td><td>Specification of the target <a href="#interval-inputspec">interval</a> or <a href="#segments-inputspec">segments</a>.</td><td>none</td><td>Yes</td></tr><tr><td><code>dropExisting</code></td><td>If <code>true</code>, the task repla [...]
+<table><thead><tr><th>Field</th><th>Description</th><th>Default</th><th>Required</th></tr></thead><tbody><tr><td><code>type</code></td><td>Task type. Set the value to <code>compact</code>.</td><td>none</td><td>Yes</td></tr><tr><td><code>inputSpec</code></td><td>Specification of the target <a href="#interval-inputspec">interval</a> or <a href="#minor-inputspec">minor</a>.</td><td>none</td><td>Yes</td></tr><tr><td><code>dropExisting</code></td><td>If <code>true</code>, the task replaces al [...]
<p>The compaction task has two kinds of <code>inputSpec</code>:</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="interval-inputspec">Interval <code>inputSpec</code><a href="#interval-inputspec" class="hash-link" aria-label="Direct link to interval-inputspec" title="Direct link to interval-inputspec"></a></h3>
-<table><thead><tr><th>Field</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>type</code></td><td>Task type. Set the value to <code>interval</code>.</td><td>Yes</td></tr><tr><td><code>interval</code></td><td>Interval to compact.</td><td>Yes</td></tr></tbody></table>
-<h3 class="anchor anchorWithStickyNavbar_LWe7" id="segments-inputspec">Segments <code>inputSpec</code><a href="#segments-inputspec" class="hash-link" aria-label="Direct link to segments-inputspec" title="Direct link to segments-inputspec"></a></h3>
-<table><thead><tr><th>Field</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>type</code></td><td>Task type. Set the value to <code>segments</code>.</td><td>Yes</td></tr><tr><td><code>segments</code></td><td>A list of segment IDs.</td><td>Yes</td></tr></tbody></table>
+<table><thead><tr><th>Field</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>type</code></td><td>Task type. Set the value to <code>interval</code> to trigger major compaction.</td><td>Yes</td></tr><tr><td><code>interval</code></td><td>Interval to compact.</td><td>Yes</td></tr></tbody></table>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="minor-inputspec">Minor <code>inputSpec</code><a href="#minor-inputspec" class="hash-link" aria-label="Direct link to minor-inputspec" title="Direct link to minor-inputspec"></a></h3>
+<table><thead><tr><th>Field</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>type</code></td><td>Task type. Set the value to <code>minor</code> to trigger minor compaction.</td><td>Yes</td></tr><tr><td><code>interval</code></td><td>Interval to compact.</td><td>Yes</td></tr><tr><td><code>segments</code></td><td>A list of segment descriptors.</td><td>Yes</td></tr></tbody></table>
+<p>The required segment descriptor fields can be retrieved from the "Segments" section in the web console.</p>
+<table><thead><tr><th>Field</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>itvl</code></td><td>Interval of segment to compact.</td><td>Yes</td></tr><tr><td><code>ver</code></td><td>Version of the segment.</td><td>Yes</td></tr><tr><td><code>part</code></td><td>Partition number of the segment.</td><td>Yes</td></tr></tbody></table>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="example-minor-inputspec">Example minor inputSpec<a href="#example-minor-inputspec" class="hash-link" aria-label="Direct link to Example minor inputSpec" title="Direct link to Example minor inputSpec"></a></h4>
+<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
+<p>When using the minor <code>inputSpec</code>, the task compacts only the specified segments. Segments in the same interval that are not in the spec are upgraded in place rather than compacted. This allows compacting a subset of segments while preserving others.</p>
+<p>There are some requirements when triggering a minor compaction:</p>
+<ul>
+<li>Set <code>useConcurrentLocks: true</code> in the task context. Minor compaction uses REPLACE locks over the entire interval.</li>
+<li>Set <code>dropExisting: true</code> in the ioConfig.</li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="segment-inputspec">Segment <code>inputSpec</code><a href="#segment-inputspec" class="hash-link" aria-label="Direct link to segment-inputspec" title="Direct link to segment-inputspec"></a></h3>
+<p>No longer documented as this is deprecated. Please use <code>interval</code> or <code>minor</code> specs instead.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="compaction-dimensions-spec">Compaction dimensions spec<a href="#compaction-dimensions-spec" class="hash-link" aria-label="Direct link to Compaction dimensions spec" title="Direct link to Compaction dimensions spec"></a></h2>
<table><thead><tr><th>Field</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>dimensions</code></td><td>A list of dimension names or objects. Cannot have the same column in both <code>dimensions</code> and <code>dimensionExclusions</code>. Defaults to <code>null</code>, which preserves the original dimensions.</td><td>No</td></tr><tr><td><code>dimensionExclusions</code></td><td>The names of dimensions to exclude from compaction. Only names are supported here, not [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="compaction-transform-spec">Compaction transform spec<a href="#compaction-transform-spec" class="hash-link" aria-label="Direct link to Compaction transform spec" title="Direct link to Compaction transform spec"></a></h2>
-<table><thead><tr><th>Field</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>filter</code></td><td>The <code>filter</code> conditionally filters input rows during compaction. Only rows that pass the filter will be included in the compacted segments. Any of Druid's standard <a href="/docs/latest/querying/filters">query filters</a> can be used. Defaults to 'null', which will not filter any row.</td><td>No</td></tr></tbody></table>
+<table><thead><tr><th>Field</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>filter</code></td><td>The <code>filter</code> conditionally filters input rows during compaction. Only rows that pass the filter will be included in the compacted segments. Any of Druid's standard <a href="/docs/37.0.0/querying/filters">query filters</a> can be used. Defaults to 'null', which will not filter any row.</td><td>No</td></tr></tbody></table>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="compaction-granularity-spec">Compaction granularity spec<a href="#compaction-granularity-spec" class="hash-link" aria-label="Direct link to Compaction granularity spec" title="Direct link to Compaction granularity spec"></a></h2>
-<table><thead><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">Query granularity</a> values.</td><td>No</td></tr><tr><td><code>queryGranularity</code></td><td>The resolution of timestamp storage within each segment. Defaults to &# [...]
+<table><thead><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/37.0.0/querying/granularities">Query granularity</a> values.</td><td>No</td></tr><tr><td><code>queryGranularity</code></td><td>The resolution of timestamp storage within each segment. Defaults to &# [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="learn-more">Learn more<a href="#learn-more" class="hash-link" aria-label="Direct link to Learn more" title="Direct link to Learn more"></a></h2>
<p>See the following topics for more information:</p>
<ul>
-<li><a href="/docs/latest/data-management/compaction">Compaction</a> for an overview of compaction and how to set up manual compaction in Druid.</li>
-<li><a href="/docs/latest/operations/segment-optimization">Segment optimization</a> for guidance on evaluating and optimizing Druid segment size.</li>
-<li><a href="/docs/latest/design/coordinator#automatic-compaction">Coordinator process</a> for details on how the Coordinator plans compaction tasks.</li>
-</ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/latest/data-management/automatic-compaction"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Automatic compaction</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/latest/querying/sql"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__l [...]
+<li><a href="/docs/37.0.0/data-management/compaction">Compaction</a> for an overview of compaction and how to set up manual compaction in Druid.</li>
+<li><a href="/docs/37.0.0/operations/segment-optimization">Segment optimization</a> for guidance on evaluating and optimizing Druid segment size.</li>
+<li><a href="/docs/37.0.0/design/coordinator#automatic-compaction">Coordinator process</a> for details on how the Coordinator plans compaction tasks.</li>
+</ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/data-management/automatic-compaction"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Automatic compaction</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/37.0.0/data-management/cascading-reindexing"><div class="pagination-nav__sublabel">Next</div><div [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/data-management/schema-changes.html/index.html b/docs/37.0.0/data-management/schema-changes.html/index.html
new file mode 100644
index 000000000..b2020385f
--- /dev/null
+++ b/docs/37.0.0/data-management/schema-changes.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/data-management/schema-changes">
+ <link rel="canonical" href="/docs/37.0.0/data-management/schema-changes" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/data-management/schema-changes' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/data-management/schema-changes/index.html b/docs/37.0.0/data-management/schema-changes/index.html
similarity index 88%
copy from docs/latest/data-management/schema-changes/index.html
copy to docs/37.0.0/data-management/schema-changes/index.html
index f31f92430..90fab58c1 100644
--- a/docs/latest/data-management/schema-changes/index.html
+++ b/docs/37.0.0/data-management/schema-changes/index.html
@@ -3,22 +3,22 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Schema changes | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/data- [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Schema changes | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/data- [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
<p>Apache Druid allows you to provide a new schema for new data without the need to update the schema of any existing data.
-It is sufficient to update your supervisor spec, if using <a href="/docs/latest/ingestion/#streaming">streaming ingestion</a>, or to
-provide the new schema the next time you do a <a href="/docs/latest/ingestion/#batch">batch ingestion</a>. This is made possible by
-the fact that each <a href="/docs/latest/design/segments">segment</a>, at the time it is created, stores a
+It is sufficient to update your supervisor spec, if using <a href="/docs/37.0.0/ingestion/#streaming">streaming ingestion</a>, or to
+provide the new schema the next time you do a <a href="/docs/37.0.0/ingestion/#batch">batch ingestion</a>. This is made possible by
+the fact that each <a href="/docs/37.0.0/design/segments">segment</a>, at the time it is created, stores a
copy of its own schema. Druid reconciles all of these individual segment schemas automatically at query time.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="for-existing-data">For existing data<a href="#for-existing-data" class="hash-link" aria-label="Direct link to For existing data" title="Direct link to For existing data"></a></h2>
<p>Schema changes are sometimes necessary for existing data. For example, you may want to change the type of a column in
-previously-ingested data, or drop a column entirely. Druid handles this using <a href="/docs/latest/data-management/update">reindexing</a>, the same method
+previously-ingested data, or drop a column entirely. Druid handles this using <a href="/docs/37.0.0/data-management/update">reindexing</a>, the same method
it uses to handle updates of existing data. Reindexing involves rewriting all affected segments and can be a
-time-consuming operation.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/latest/data-management/delete"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Data deletion</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/latest/data-management/compaction"><div class="pagination-nav__sublabel">Next</div><div class=" [...]
+time-consuming operation.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/data-management/delete"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Data deletion</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/37.0.0/data-management/compaction"><div class="pagination-nav__sublabel">Next</div><div class=" [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/data-management/update.html/index.html b/docs/37.0.0/data-management/update.html/index.html
new file mode 100644
index 000000000..54b584032
--- /dev/null
+++ b/docs/37.0.0/data-management/update.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/data-management/update">
+ <link rel="canonical" href="/docs/37.0.0/data-management/update" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/data-management/update' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/data-management/update/index.html b/docs/37.0.0/data-management/update/index.html
similarity index 88%
copy from docs/latest/data-management/update/index.html
copy to docs/37.0.0/data-management/update/index.html
index e3b898024..37db17d6d 100644
--- a/docs/latest/data-management/update/index.html
+++ b/docs/37.0.0/data-management/update/index.html
@@ -3,21 +3,21 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Data updates | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/data-ma [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Data updates | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/data-ma [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
-<p>Apache Druid stores data <a href="/docs/latest/design/storage">partitioned by time chunk</a> and supports
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<p>Apache Druid stores data <a href="/docs/37.0.0/design/storage">partitioned by time chunk</a> and supports
overwriting existing data using time ranges. Data outside the replacement time range is not touched. Overwriting of
-existing data is done using the same mechanisms as <a href="/docs/latest/ingestion/#batch">batch ingestion</a>.</p>
+existing data is done using the same mechanisms as <a href="/docs/37.0.0/ingestion/#batch">batch ingestion</a>.</p>
<p>For example:</p>
<ul>
-<li><a href="/docs/latest/ingestion/native-batch">Native batch</a> with <code>appendToExisting: false</code>, and <code>intervals</code> set to a specific
+<li><a href="/docs/37.0.0/ingestion/native-batch">Native batch</a> with <code>appendToExisting: false</code>, and <code>intervals</code> set to a specific
time range, overwrites data for that time range.</li>
-<li><a href="/docs/latest/multi-stage-query/reference#replace">SQL <code>REPLACE <table> OVERWRITE [ALL | WHERE ...]</code></a> overwrites data for
+<li><a href="/docs/37.0.0/multi-stage-query/reference#replace">SQL <code>REPLACE <table> OVERWRITE [ALL | WHERE ...]</code></a> overwrites data for
the entire table or for a specified time range.</li>
</ul>
<p>In both cases, Druid's atomic update mechanism ensures that queries will flip seamlessly from the old data to the new
@@ -31,22 +31,22 @@ data.</p>
<p>Reindexing is an <a href="#overwrite">overwrite of existing data</a> where the source of new data is the existing data itself. It
is used to perform schema changes, repartition data, filter out unwanted data, enrich existing data, and so on. This
behaves just like any other <a href="#overwrite">overwrite</a> with regard to atomic updates and locking.</p>
-<p>With <a href="/docs/latest/ingestion/native-batch">native batch</a>, use the <a href="/docs/latest/ingestion/input-sources#druid-input-source"><code>druid</code> input
+<p>With <a href="/docs/37.0.0/ingestion/native-batch">native batch</a>, use the <a href="/docs/37.0.0/ingestion/input-sources#druid-input-source"><code>druid</code> input
source</a>. If needed,
-<a href="/docs/latest/ingestion/ingestion-spec#transformspec"><code>transformSpec</code></a> can be used to filter or modify data during the
+<a href="/docs/37.0.0/ingestion/ingestion-spec#transformspec"><code>transformSpec</code></a> can be used to filter or modify data during the
reindexing job.</p>
-<p>With SQL, use <a href="/docs/latest/multi-stage-query/reference#replace"><code>REPLACE <table> OVERWRITE</code></a> with <code>SELECT ... FROM <table></code>.
+<p>With SQL, use <a href="/docs/37.0.0/multi-stage-query/reference#replace"><code>REPLACE <table> OVERWRITE</code></a> with <code>SELECT ... FROM <table></code>.
(Druid does not have <code>UPDATE</code> or <code>ALTER TABLE</code> statements.) Any SQL SELECT query can be used to filter,
modify, or enrich the data during the reindexing job.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="rolled-up-datasources">Rolled-up datasources<a href="#rolled-up-datasources" class="hash-link" aria-label="Direct link to Rolled-up datasources" title="Direct link to Rolled-up datasources"></a></h2>
<p>Rolled-up datasources can be effectively updated using appends, without rewrites. When you append a row that has an
identical set of dimensions to an existing row, queries that use aggregation operators automatically combine those two
rows together at query time.</p>
-<p><a href="/docs/latest/data-management/compaction">Compaction</a> or <a href="/docs/latest/data-management/automatic-compaction">automatic compaction</a> can be used to physically combine these
+<p><a href="/docs/37.0.0/data-management/compaction">Compaction</a> or <a href="/docs/37.0.0/data-management/automatic-compaction">automatic compaction</a> can be used to physically combine these
matching rows together later on, by rewriting segments in the background.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="lookups">Lookups<a href="#lookups" class="hash-link" aria-label="Direct link to Lookups" title="Direct link to Lookups"></a></h2>
-<p>If you have a dimension where values need to be updated frequently, try first using <a href="/docs/latest/querying/lookups">lookups</a>. A
+<p>If you have a dimension where values need to be updated frequently, try first using <a href="/docs/37.0.0/querying/lookups">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 that may need to be updated periodically.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/latest/data-management/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Overview</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/latest/data-management/delete"><div class="pagination-nav__sublabel" [...]
+human-readable string that may need to be updated periodically.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/data-management/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Overview</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/37.0.0/data-management/delete"><div class="pagination-nav__sublabel" [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/dependencies/cassandra-deep-storage.html/index.html b/docs/37.0.0/dependencies/cassandra-deep-storage.html/index.html
new file mode 100644
index 000000000..54821010f
--- /dev/null
+++ b/docs/37.0.0/dependencies/cassandra-deep-storage.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/development/extensions-contrib/cassandra">
+ <link rel="canonical" href="/docs/37.0.0/development/extensions-contrib/cassandra" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/development/extensions-contrib/cassandra' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/dependencies/zookeeper.html/index.html b/docs/37.0.0/dependencies/zookeeper.html/index.html
new file mode 100644
index 000000000..7218244aa
--- /dev/null
+++ b/docs/37.0.0/dependencies/zookeeper.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/design/zookeeper">
+ <link rel="canonical" href="/docs/37.0.0/design/zookeeper" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/design/zookeeper' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/design.html/index.html b/docs/37.0.0/design.html/index.html
new file mode 100644
index 000000000..0d976b80f
--- /dev/null
+++ b/docs/37.0.0/design.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/design/">
+ <link rel="canonical" href="/docs/37.0.0/design/" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/design/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/design/architecture.html/index.html b/docs/37.0.0/design/architecture.html/index.html
new file mode 100644
index 000000000..dace624c6
--- /dev/null
+++ b/docs/37.0.0/design/architecture.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/design/architecture">
+ <link rel="canonical" href="/docs/37.0.0/design/architecture" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/design/architecture' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/design/architecture/index.html b/docs/37.0.0/design/architecture/index.html
similarity index 88%
copy from docs/latest/design/architecture/index.html
copy to docs/37.0.0/design/architecture/index.html
index 1fb0ce066..a06745082 100644
--- a/docs/latest/design/architecture/index.html
+++ b/docs/37.0.0/design/architecture/index.html
@@ -3,26 +3,26 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Architecture | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/design/ [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Architecture | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/design/ [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
<p>The following diagram shows the services that make up the Druid architecture, their typical arrangement across servers, and how queries and data flow through this architecture.</p>
<p><img decoding="async" loading="lazy" alt="Druid architecture" src="/assets/images/druid-architecture-a2d14e8be60d586632471e97383e406c.svg" width="1967" height="873" class="img_ev3q"></p>
<p>The following sections describe the components of this architecture.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="druid-services">Druid services<a href="#druid-services" class="hash-link" aria-label="Direct link to Druid services" title="Direct link to Druid services"></a></h2>
<p>Druid has several types of services:</p>
<ul>
-<li><a href="/docs/latest/design/coordinator">Coordinator</a> manages data availability on the cluster.</li>
-<li><a href="/docs/latest/design/overlord">Overlord</a> controls the assignment of data ingestion workloads.</li>
-<li><a href="/docs/latest/design/broker">Broker</a> handles queries from external clients.</li>
-<li><a href="/docs/latest/design/router">Router</a> routes requests to Brokers, Coordinators, and Overlords.</li>
-<li><a href="/docs/latest/design/historical">Historical</a> stores queryable data.</li>
-<li><a href="/docs/latest/design/middlemanager">Middle Manager</a> and <a href="/docs/latest/design/peons">Peon</a> ingest data.</li>
-<li><a href="/docs/latest/design/indexer">Indexer</a> serves as an alternative to the Middle Manager + Peon task execution system.</li>
+<li><a href="/docs/37.0.0/design/coordinator">Coordinator</a> manages data availability on the cluster.</li>
+<li><a href="/docs/37.0.0/design/overlord">Overlord</a> controls the assignment of data ingestion workloads.</li>
+<li><a href="/docs/37.0.0/design/broker">Broker</a> handles queries from external clients.</li>
+<li><a href="/docs/37.0.0/design/router">Router</a> routes requests to Brokers, Coordinators, and Overlords.</li>
+<li><a href="/docs/37.0.0/design/historical">Historical</a> stores queryable data.</li>
+<li><a href="/docs/37.0.0/design/middlemanager">Middle Manager</a> and <a href="/docs/37.0.0/design/peons">Peon</a> ingest data.</li>
+<li><a href="/docs/37.0.0/design/indexer">Indexer</a> serves as an alternative to the Middle Manager + Peon task execution system.</li>
</ul>
<p>You can view services in the <strong>Services</strong> tab in the web console:</p>
<p><img decoding="async" loading="lazy" alt="Druid services" src="/assets/images/services-overview-626a864a11edcf4945591a35d4a3814c.png" title="Services in the web console" width="1250" height="640" class="img_ev3q"></p>
@@ -32,32 +32,32 @@
<p>A Master server manages data ingestion and availability. It is responsible for starting new ingestion jobs and coordinating availability of data on the <a href="#data-server">Data server</a>.</p>
<p>Master servers divide operations between Coordinator and Overlord services.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="coordinator-service">Coordinator service<a href="#coordinator-service" class="hash-link" aria-label="Direct link to Coordinator service" title="Direct link to Coordinator service"></a></h4>
-<p><a href="/docs/latest/design/coordinator">Coordinator</a> services watch over the Historical services 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/37.0.0/design/coordinator">Coordinator</a> services watch over the Historical services on the Data servers. They are responsible for assigning segments to specific servers, and for ensuring segments are well-balanced across Historicals.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="overlord-service">Overlord service<a href="#overlord-service" class="hash-link" aria-label="Direct link to Overlord service" title="Direct link to Overlord service"></a></h4>
-<p><a href="/docs/latest/design/overlord">Overlord</a> services watch over the Middle Manager services on the Data servers and are the controllers of data ingestion into Druid. They are responsible for assigning ingestion tasks to Middle Managers and for coordinating segment publishing.</p>
+<p><a href="/docs/37.0.0/design/overlord">Overlord</a> services watch over the Middle Manager services on the Data servers and are the controllers of data ingestion into Druid. They are responsible for assigning ingestion tasks to Middle Managers and for coordinating segment publishing.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="query-server">Query server<a href="#query-server" class="hash-link" aria-label="Direct link to Query server" title="Direct link to Query server"></a></h3>
<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).</p>
<p>Query servers divide operations between Broker and Router services.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="broker-service">Broker service<a href="#broker-service" class="hash-link" aria-label="Direct link to Broker service" title="Direct link to Broker service"></a></h4>
-<p><a href="/docs/latest/design/broker">Broker</a> services 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. Typically, you query Brokers rather than querying Historical or Middle Manager services on Data servers directly.</p>
+<p><a href="/docs/37.0.0/design/broker">Broker</a> services 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. Typically, you query Brokers rather than querying Historical or Middle Manager services on Data servers directly.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="router-service">Router service<a href="#router-service" class="hash-link" aria-label="Direct link to Router service" title="Direct link to Router service"></a></h4>
-<p><a href="/docs/latest/design/router"><strong>Router</strong></a> services provide a unified API gateway in front of Brokers, Overlords, and Coordinators.</p>
-<p>The Router service also runs the <a href="/docs/latest/operations/web-console">web console</a>, a UI for loading data, managing datasources and tasks, and viewing server status and segment information.</p>
+<p><a href="/docs/37.0.0/design/router"><strong>Router</strong></a> services provide a unified API gateway in front of Brokers, Overlords, and Coordinators.</p>
+<p>The Router service also runs the <a href="/docs/37.0.0/operations/web-console">web console</a>, a UI for loading data, managing datasources and tasks, and viewing server status and segment information.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="data-server">Data server<a href="#data-server" class="hash-link" aria-label="Direct link to Data server" title="Direct link to Data server"></a></h3>
<p>A Data server executes ingestion jobs and stores queryable data.</p>
<p>Data servers divide operations between Historical and Middle Manager services.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="historical-service">Historical service<a href="#historical-service" class="hash-link" aria-label="Direct link to Historical service" title="Direct link to Historical service"></a></h4>
-<p><a href="/docs/latest/design/historical"><strong>Historical</strong></a> services handle storage and querying on historical data, including any streaming data that has been in the system long enough to be committed. Historical services download segments from deep storage and respond to queries about these segments. They don't accept writes.</p>
+<p><a href="/docs/37.0.0/design/historical"><strong>Historical</strong></a> services handle storage and querying on historical data, including any streaming data that has been in the system long enough to be committed. Historical services download segments from deep storage and respond to queries about these segments. They don't accept writes.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="middle-manager-service">Middle Manager service<a href="#middle-manager-service" class="hash-link" aria-label="Direct link to Middle Manager service" title="Direct link to Middle Manager service"></a></h4>
-<p><a href="/docs/latest/design/middlemanager"><strong>Middle Manager</strong></a> services handle ingestion of new data into the cluster. They are responsible
+<p><a href="/docs/37.0.0/design/middlemanager"><strong>Middle Manager</strong></a> services handle ingestion of new data into the cluster. They are responsible
for reading from external data sources and publishing new Druid segments.</p>
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="peon-service">Peon service<a href="#peon-service" class="hash-link" aria-label="Direct link to Peon service" title="Direct link to Peon service"></a></h5>
-<p><a href="/docs/latest/design/peons"><strong>Peon</strong></a> services are task execution engines spawned by Middle Managers. Each Peon runs a separate JVM and is responsible for executing a single task. Peons always run on the same host as the Middle Manager that spawned them.</p>
+<p><a href="/docs/37.0.0/design/peons"><strong>Peon</strong></a> services are task execution engines spawned by Middle Managers. Each Peon runs a separate JVM and is responsible for executing a single task. Peons always run on the same host as the Middle Manager that spawned them.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="indexer-service-optional">Indexer service (optional)<a href="#indexer-service-optional" class="hash-link" aria-label="Direct link to Indexer service (optional)" title="Direct link to Indexer service (optional)"></a></h4>
-<p><a href="/docs/latest/design/indexer"><strong>Indexer</strong></a> services are an alternative to Middle Managers and Peons. Instead of
+<p><a href="/docs/37.0.0/design/indexer"><strong>Indexer</strong></a> services are an alternative to Middle Managers 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, which can help streaming ingestion. The Indexer is currently designated <a href="/docs/latest/development/experimental">experimental</a>.</p>
-<p>Typically, you would deploy one of the following: MiddleManagers, <a href="/docs/latest/development/extensions-core/k8s-jobs">MiddleManager-less ingestion using Kubernetes</a>, or Indexers. You wouldn't deploy more than one of these options.</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, which can help streaming ingestion. The Indexer is currently designated <a href="/docs/37.0.0/development/experimental">experimental</a>.</p>
+<p>Typically, you would deploy one of the following: MiddleManagers, <a href="/docs/37.0.0/development/extensions-core/k8s-jobs">MiddleManager-less ingestion using Kubernetes</a>, or Indexers. You wouldn't deploy more than one of these options.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="colocation-of-services">Colocation of services<a href="#colocation-of-services" class="hash-link" aria-label="Direct link to Colocation of services" title="Direct link to Colocation of services"></a></h2>
<p>Colocating Druid services by server type generally results in better utilization of hardware resources for most clusters.
For very large scale clusters, it can be desirable to split the Druid services such that they run on individual servers to avoid resource contention.</p>
@@ -66,7 +66,7 @@ For very large scale clusters, it can be desirable to split the Druid services s
<p>The workload on the Coordinator service tends to increase with the number of segments in the cluster. The Overlord's workload also increases based on the number of segments in the cluster, but to a lesser degree than the Coordinator.</p>
<p>In clusters with very high segment counts, it can make sense to separate the Coordinator and Overlord services to provide more resources for the Coordinator's segment balancing workload.</p>
<p>You can run the Coordinator and Overlord services as a single combined service by setting the <code>druid.coordinator.asOverlord.enabled</code> property.
-For more information, see <a href="/docs/latest/configuration/#coordinator-operation">Coordinator Operation</a>.</p>
+For more information, see <a href="/docs/37.0.0/configuration/#coordinator-operation">Coordinator Operation</a>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="historicals-and-middle-managers">Historicals and Middle Managers<a href="#historicals-and-middle-managers" class="hash-link" aria-label="Direct link to Historicals and Middle Managers" title="Direct link to Historicals and Middle Managers"></a></h3>
<p>With higher levels of ingestion or query load, it can make sense to deploy the Historical and Middle Manager services on separate hosts to to avoid CPU and memory contention.</p>
<p>The Historical service also benefits from having free memory for memory mapped segments, which can be another reason to deploy the Historical and Middle Manager services separately.</p>
@@ -79,7 +79,7 @@ storage accessible by every Druid server. In a clustered deployment, this is typ
HDFS, or a network mounted filesystem. In a single-server deployment, this is typically local disk.</p>
<p>Druid uses deep storage for the following purposes:</p>
<ul>
-<li>To store all the data you ingest. Segments that get loaded onto Historical services for low latency queries are also kept in deep storage for backup purposes. Additionally, segments that are only in deep storage can be used for <a href="/docs/latest/querying/query-deep-storage">queries from deep storage</a>.</li>
+<li>To store all the data you ingest. Segments that get loaded onto Historical services for low latency queries are also kept in deep storage for backup purposes. Additionally, segments that are only in deep storage can be used for <a href="/docs/37.0.0/querying/query-deep-storage">queries from deep storage</a>.</li>
<li>As a way to transfer data in the background between Druid services. Druid stores data in files called <em>segments</em>.</li>
</ul>
<p>Historical services cache data segments on local disk and serve queries from that cache as well as from an in-memory cache.
@@ -92,21 +92,21 @@ Segments on disk for Historical services provide the low latency querying perfor
</ul>
<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/design/deep-storage">Deep storage</a> page.</p>
+<p>For more details, please see the <a href="/docs/37.0.0/design/deep-storage">Deep storage</a> page.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="metadata-storage">Metadata storage<a href="#metadata-storage" class="hash-link" aria-label="Direct link to Metadata storage" title="Direct link to Metadata storage"></a></h3>
<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/design/metadata-storage">Metadata storage</a> page.</p>
+<p>For more details, please see the <a href="/docs/37.0.0/design/metadata-storage">Metadata storage</a> page.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="zookeeper">ZooKeeper<a href="#zookeeper" class="hash-link" aria-label="Direct link to ZooKeeper" title="Direct link to ZooKeeper"></a></h3>
<p>Used for internal service discovery, coordination, and leader election.</p>
-<p>For more details, please see the <a href="/docs/latest/design/zookeeper">ZooKeeper</a> page.</p>
+<p>For more details, please see the <a href="/docs/37.0.0/design/zookeeper">ZooKeeper</a> page.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="learn-more">Learn more<a href="#learn-more" class="hash-link" aria-label="Direct link to Learn more" title="Direct link to Learn more"></a></h2>
<p>See the following topics for more information:</p>
<ul>
-<li><a href="/docs/latest/design/storage">Storage components</a> to learn about data storage in Druid.</li>
-<li><a href="/docs/latest/design/segments">Segments</a> to learn about segment files.</li>
-<li><a href="/docs/latest/querying/query-processing">Query processing</a> for a high-level overview of how Druid processes queries.</li>
-</ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/latest/tutorials/tutorial-kerberos-hadoop"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Kerberized HDFS deep storage</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/latest/design/coordinator"><div class="pagination-nav__sublabel">Next</div><div class="pagin [...]
+<li><a href="/docs/37.0.0/design/storage">Storage components</a> to learn about data storage in Druid.</li>
+<li><a href="/docs/37.0.0/design/segments">Segments</a> to learn about segment files.</li>
+<li><a href="/docs/37.0.0/querying/query-processing">Query processing</a> for a high-level overview of how Druid processes queries.</li>
+</ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/tutorials/tutorial-kerberos-hadoop"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Kerberized HDFS deep storage</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/37.0.0/design/coordinator"><div class="pagination-nav__sublabel">Next</div><div class="pagin [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/design/auth.html/index.html b/docs/37.0.0/design/auth.html/index.html
new file mode 100644
index 000000000..d617509d0
--- /dev/null
+++ b/docs/37.0.0/design/auth.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/operations/auth">
+ <link rel="canonical" href="/docs/37.0.0/operations/auth" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/operations/auth' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/design/broker.html/index.html b/docs/37.0.0/design/broker.html/index.html
new file mode 100644
index 000000000..60735902a
--- /dev/null
+++ b/docs/37.0.0/design/broker.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/design/broker">
+ <link rel="canonical" href="/docs/37.0.0/design/broker" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/design/broker' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/design/broker/index.html b/docs/37.0.0/design/broker/index.html
similarity index 88%
copy from docs/latest/design/broker/index.html
copy to docs/37.0.0/design/broker/index.html
index 41721d450..abe8c92bb 100644
--- a/docs/latest/design/broker/index.html
+++ b/docs/37.0.0/design/broker/index.html
@@ -3,25 +3,25 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Broker service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/desig [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Broker service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/desig [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration"></a></h2>
-<p>For Apache Druid Broker service configuration, see <a href="/docs/latest/configuration/#broker">Broker Configuration</a>.</p>
-<p>For basic tuning guidance for the Broker service, see <a href="/docs/latest/operations/basic-cluster-tuning#broker">Basic cluster tuning</a>.</p>
+<p>For Apache Druid Broker service configuration, see <a href="/docs/37.0.0/configuration/#broker">Broker Configuration</a>.</p>
+<p>For basic tuning guidance for the Broker service, see <a href="/docs/37.0.0/operations/basic-cluster-tuning#broker">Basic cluster tuning</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="http-endpoints">HTTP endpoints<a href="#http-endpoints" class="hash-link" aria-label="Direct link to HTTP endpoints" title="Direct link to HTTP endpoints"></a></h2>
-<p>For a list of API endpoints supported by the Broker, see <a href="/docs/latest/api-reference/legacy-metadata-api#broker">Broker API</a>.</p>
+<p>For a list of API endpoints supported by the Broker, see <a href="/docs/37.0.0/api-reference/legacy-metadata-api#broker">Broker API</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="running">Running<a href="#running" class="hash-link" aria-label="Direct link to Running" title="Direct link to Running"></a></h2>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">org.apache.druid.cli.Main server broker</span><br></span></code></pre><div class="buttonGroup__atx"><butt [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="forwarding-queries">Forwarding queries<a href="#forwarding-queries" class="hash-link" aria-label="Direct link to Forwarding queries" title="Direct link to Forwarding queries"></a></h2>
-<p>Most Druid queries contain an interval object that indicates a span of time for which data is requested. Similarly, Druid partitions <a href="/docs/latest/design/segments">segments</a> to contain data for some interval of time and distributes the segments across a cluster. Consider a simple datasource with seven 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. These s [...]
-<p>To determine which services to forward queries to, the Broker service first builds a view of the world from information in ZooKeeper. ZooKeeper maintains information about <a href="/docs/latest/design/historical">Historical</a> and streaming ingestion <a href="/docs/latest/design/peons">Peon</a> services and the segments they are serving. For every datasource in ZooKeeper, the Broker service builds a timeline of segments and the services that serve them. When queries are received for [...]
+<p>Most Druid queries contain an interval object that indicates a span of time for which data is requested. Similarly, Druid partitions <a href="/docs/37.0.0/design/segments">segments</a> to contain data for some interval of time and distributes the segments across a cluster. Consider a simple datasource with seven 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. These s [...]
+<p>To determine which services to forward queries to, the Broker service first builds a view of the world from information in ZooKeeper. ZooKeeper maintains information about <a href="/docs/37.0.0/design/historical">Historical</a> and streaming ingestion <a href="/docs/37.0.0/design/peons">Peon</a> services and the segments they are serving. For every datasource in ZooKeeper, the Broker service builds a timeline of segments and the services that serve them. When queries are received for [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="caching">Caching<a href="#caching" class="hash-link" aria-label="Direct link to Caching" title="Direct link to Caching"></a></h2>
<p>Broker services employ a cache with an LRU cache invalidation strategy. The Broker cache stores per-segment results. The cache can be local to each Broker service or shared across multiple services using an external distributed cache such as <a href="http://memcached.org/" target="_blank" rel="noopener noreferrer">memcached</a>. Each time a Broker service 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 an [...]
-Historical services. Once the Historical services 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 services. Real-time data is perpetually changing and caching the results would be unreliable.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/lates [...]
+Historical services. Once the Historical services 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 services. Real-time data is perpetually changing and caching the results would be unreliable.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0. [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/design/concepts-and-terminology.html/index.html b/docs/37.0.0/design/concepts-and-terminology.html/index.html
new file mode 100644
index 000000000..0d976b80f
--- /dev/null
+++ b/docs/37.0.0/design/concepts-and-terminology.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/design/">
+ <link rel="canonical" href="/docs/37.0.0/design/" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/design/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/design/coordinator.html/index.html b/docs/37.0.0/design/coordinator.html/index.html
new file mode 100644
index 000000000..1acc66936
--- /dev/null
+++ b/docs/37.0.0/design/coordinator.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/design/coordinator">
+ <link rel="canonical" href="/docs/37.0.0/design/coordinator" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/design/coordinator' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/design/coordinator/index.html b/docs/37.0.0/design/coordinator/index.html
similarity index 91%
copy from docs/latest/design/coordinator/index.html
copy to docs/37.0.0/design/coordinator/index.html
index 2f6e94f0e..630e52e3c 100644
--- a/docs/latest/design/coordinator/index.html
+++ b/docs/37.0.0/design/coordinator/index.html
@@ -3,13 +3,13 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Coordinator service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/ [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Coordinator service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/ [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
Coordinator service communicates to Historical services to load or drop segments based on configurations. The Coordinator is responsible for loading new segments, dropping outdated segments, ensuring that segments are "replicated" (that is, loaded on multiple different Historical nodes) proper (configured) number of times, and moving
("balancing") segments between Historical nodes to keep the latter evenly loaded.</p>
<p>The Coordinator runs its duties periodically and the time between each run is a configurable parameter. On each
@@ -24,14 +24,14 @@ directly communicate with a Historical service when assigning it a new segment;
temporary information about the new segment under load queue path of the Historical service. Once this request is seen,
the Historical service loads the segment and begins servicing it.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration"></a></h2>
-<p>For Apache Druid Coordinator service configuration, see <a href="/docs/latest/configuration/#coordinator">Coordinator configuration</a>.</p>
-<p>For basic tuning guidance for the Coordinator service, see <a href="/docs/latest/operations/basic-cluster-tuning#coordinator">Basic cluster tuning</a>.</p>
+<p>For Apache Druid Coordinator service configuration, see <a href="/docs/37.0.0/configuration/#coordinator">Coordinator configuration</a>.</p>
+<p>For basic tuning guidance for the Coordinator service, see <a href="/docs/37.0.0/operations/basic-cluster-tuning#coordinator">Basic cluster tuning</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="http-endpoints">HTTP endpoints<a href="#http-endpoints" class="hash-link" aria-label="Direct link to HTTP endpoints" title="Direct link to HTTP endpoints"></a></h2>
-<p>For a list of API endpoints supported by the Coordinator, see <a href="/docs/latest/api-reference/service-status-api#coordinator">Service status API reference</a>.</p>
+<p>For a list of API endpoints supported by the Coordinator, see <a href="/docs/37.0.0/api-reference/service-status-api#coordinator">Service status API reference</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="running">Running<a href="#running" class="hash-link" aria-label="Direct link to Running" title="Direct link to Running"></a></h2>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">org.apache.druid.cli.Main server coordinator</span><br></span></code></pre><div class="buttonGroup__atx"> [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="rules">Rules<a href="#rules" class="hash-link" aria-label="Direct link to Rules" title="Direct link to Rules"></a></h2>
-<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">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/37.0.0/operations/rule-configuration">Rule Configuration</a>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="clean-up-overshadowed-segments">Clean up overshadowed segments<a href="#clean-up-overshadowed-segments" class="hash-link" aria-label="Direct link to Clean up overshadowed segments" title="Direct link to Clean up overshadowed segments"></a></h3>
<p>On each run, the Coordinator compares the set of used segments in the database with the segments served by some
Historical nodes in the cluster. The Coordinator sends requests to Historical nodes to unload unused segments or segments
@@ -58,22 +58,22 @@ Thus, the Coordinator constantly monitors the set of segments present on each Hi
</ul>
<p>All of the above strategies prioritize moving segments from the Historical with the least available disk space.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="automatic-compaction">Automatic compaction<a href="#automatic-compaction" class="hash-link" aria-label="Direct link to Automatic compaction" title="Direct link to Automatic compaction"></a></h2>
-<p>The Coordinator manages the <a href="/docs/latest/data-management/automatic-compaction">automatic compaction system</a>.
+<p>The Coordinator manages the <a href="/docs/37.0.0/data-management/automatic-compaction">automatic compaction system</a>.
Each run, the Coordinator compacts segments by merging small segments or splitting a large one. This is useful when the size of your segments is not optimized which may degrade query performance.
-See <a href="/docs/latest/operations/segment-optimization">Segment size optimization</a> for details.</p>
+See <a href="/docs/37.0.0/operations/segment-optimization">Segment size optimization</a> for details.</p>
<p>The Coordinator first finds the segments to compact based on the <a href="#segment-search-policy-in-automatic-compaction">segment search policy</a>.
-Once some segments are found, it issues a <a href="/docs/latest/ingestion/tasks#compact">compaction task</a> to compact those segments.
+Once some segments are found, it issues a <a href="/docs/37.0.0/ingestion/tasks#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 if <code>min(sum of worker capacity * slotRatio, maxSlots) = 0</code>, at least one compaction task is always submitted
if the compaction is enabled for a dataSource.
-See <a href="/docs/latest/api-reference/automatic-compaction-api#manage-automatic-compaction">Automatic compaction configuration API</a> and <a href="/docs/latest/configuration/#automatic-compaction-dynamic-configuration">Automatic compaction configuration</a> to enable and configure automatic compaction.</p>
+See <a href="/docs/37.0.0/api-reference/automatic-compaction-api#manage-automatic-compaction">Automatic compaction configuration API</a> and <a href="/docs/37.0.0/configuration/#automatic-compaction-dynamic-configuration">Automatic compaction configuration</a> to enable and configure automatic 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#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/37.0.0/ingestion/tasks#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>
-<p>Note that Compacting Segments Coordinator Duty is automatically enabled and run as part of the Indexing Service Duties group. However, Compacting Segments Coordinator Duty can be configured to run in isolation as a separate Coordinator duty group. This allows changing the period of Compacting Segments Coordinator Duty without impacting the period of other Indexing Service Duties. This can be done by setting the following properties. For more details, see <a href="/docs/latest/developm [...]
+<p>Note that Compacting Segments Coordinator Duty is automatically enabled and run as part of the Indexing Service Duties group. However, Compacting Segments Coordinator Duty can be configured to run in isolation as a separate Coordinator duty group. This allows changing the period of Compacting Segments Coordinator Duty without impacting the period of other Indexing Service Duties. This can be done by setting the following properties. For more details, see <a href="/docs/37.0.0/developm [...]
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">druid.coordinator.dutyGroups=[<SOME_GROUP_NAME>]</span><br></span><span class="token-line" style="c [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="segment-search-policy-in-automatic-compaction">Segment search policy in automatic compaction<a href="#segment-search-policy-in-automatic-compaction" class="hash-link" aria-label="Direct link to Segment search policy in automatic compaction" title="Direct link to Segment search policy in automatic compaction"></a></h2>
<p>At every Coordinator run, this policy looks up time chunks from newest to oldest and checks whether the segments in those time chunks
@@ -109,9 +109,9 @@ Finally, <code>foo_2017-09-01T00:00:00.000Z_2017-10-01T00:00:00.000Z_VERSION</co
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.
-For more information, see <a href="/docs/latest/data-management/automatic-compaction#avoid-conflicts-with-ingestion">Avoid conflicts with ingestion</a>.</p>
+For more information, see <a href="/docs/37.0.0/data-management/automatic-compaction#avoid-conflicts-with-ingestion">Avoid conflicts with ingestion</a>.</p>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>This policy currently cannot hand [...]
-and their total size exceeds <a href="/docs/latest/configuration/#automatic-compaction-dynamic-configuration"><code>inputSegmentSizeBytes</code></a>.
+and their total size exceeds <a href="/docs/37.0.0/configuration/#automatic-compaction-dynamic-configuration"><code>inputSegmentSizeBytes</code></a>.
If it finds such segments, it simply skips them.</p></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="faq">FAQ<a href="#faq" class="hash-link" aria-label="Direct link to FAQ" title="Direct link to FAQ"></a></h2>
<ol>
@@ -126,6 +126,6 @@ If it finds such segments, it simply skips them.</p></div></div>
<p>No. If the Coordinator is not started up, no new segments will be loaded in the cluster and outdated segments will not be dropped. However, the Coordinator service 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></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/latest/design/architecture"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Architecture</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/latest/design/overlord"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Overlord</div></ [...]
+</ol></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/design/architecture"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Architecture</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/37.0.0/design/overlord"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Overlord</div></ [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/design/deep-storage.html/index.html b/docs/37.0.0/design/deep-storage.html/index.html
new file mode 100644
index 000000000..0b613c87f
--- /dev/null
+++ b/docs/37.0.0/design/deep-storage.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/design/deep-storage">
+ <link rel="canonical" href="/docs/37.0.0/design/deep-storage" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/design/deep-storage' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/design/deep-storage/index.html b/docs/37.0.0/design/deep-storage/index.html
similarity index 90%
copy from docs/latest/design/deep-storage/index.html
copy to docs/37.0.0/design/deep-storage/index.html
index 8f4b70991..04487e3f0 100644
--- a/docs/latest/design/deep-storage/index.html
+++ b/docs/37.0.0/design/deep-storage/index.html
@@ -3,14 +3,14 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Deep storage | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/design/ [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Deep storage | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/design/ [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
-<p>In addition to being the backing store for segments, you can use <a href="#querying-from-deep-storage">query from deep storage</a> and run queries against segments stored primarily in deep storage. The <a href="/docs/latest/operations/rule-configuration#load-rules">load rules</a> you configure determine whether segments exist primarily in deep storage or in a combination of deep storage and Historical processes.</p>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<p>In addition to being the backing store for segments, you can use <a href="#querying-from-deep-storage">query from deep storage</a> and run queries against segments stored primarily in deep storage. The <a href="/docs/37.0.0/operations/rule-configuration#load-rules">load rules</a> you configure determine whether segments exist primarily in deep storage or in a combination of deep storage and Historical processes.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="deep-storage-options">Deep storage options<a href="#deep-storage-options" class="hash-link" aria-label="Direct link to Deep storage options" title="Direct link to Deep storage options"></a></h2>
<p>Druid supports multiple options for deep storage, including blob storage from major cloud providers. Select the one that fits your environment.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="local">Local<a href="#local" class="hash-link" aria-label="Direct link to Local" title="Direct link to Local"></a></h3>
@@ -30,17 +30,17 @@ generally more convenient, more scalable, and more robust than setting up a shar
<p>The <code>druid.storage.storageDirectory</code> must be set to a different path than <code>druid.segmentCache.locations</code> or
<code>druid.segmentCache.infoDir</code>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="amazon-s3-or-s3-compatible">Amazon S3 or S3-compatible<a href="#amazon-s3-or-s3-compatible" class="hash-link" aria-label="Direct link to Amazon S3 or S3-compatible" title="Direct link to Amazon S3 or S3-compatible"></a></h3>
-<p>See <a href="/docs/latest/development/extensions-core/s3"><code>druid-s3-extensions</code></a>.</p>
+<p>See <a href="/docs/37.0.0/development/extensions-core/s3"><code>druid-s3-extensions</code></a>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="google-cloud-storage">Google Cloud Storage<a href="#google-cloud-storage" class="hash-link" aria-label="Direct link to Google Cloud Storage" title="Direct link to Google Cloud Storage"></a></h3>
-<p>See <a href="/docs/latest/development/extensions-core/google"><code>druid-google-extensions</code></a>.</p>
+<p>See <a href="/docs/37.0.0/development/extensions-core/google"><code>druid-google-extensions</code></a>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="azure-blob-storage">Azure Blob Storage<a href="#azure-blob-storage" class="hash-link" aria-label="Direct link to Azure Blob Storage" title="Direct link to Azure Blob Storage"></a></h3>
-<p>See <a href="/docs/latest/development/extensions-core/azure"><code>druid-azure-extensions</code></a>.</p>
+<p>See <a href="/docs/37.0.0/development/extensions-core/azure"><code>druid-azure-extensions</code></a>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="hdfs">HDFS<a href="#hdfs" class="hash-link" aria-label="Direct link to HDFS" title="Direct link to HDFS"></a></h3>
-<p>See <a href="/docs/latest/development/extensions-core/hdfs">druid-hdfs-storage extension documentation</a>.</p>
+<p>See <a href="/docs/37.0.0/development/extensions-core/hdfs">druid-hdfs-storage extension documentation</a>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="additional-options">Additional options<a href="#additional-options" class="hash-link" aria-label="Direct link to Additional options" title="Direct link to Additional options"></a></h3>
-<p>For additional deep storage options, please see our <a href="/docs/latest/configuration/extensions">extensions list</a>.</p>
+<p>For additional deep storage options, please see our <a href="/docs/37.0.0/configuration/extensions">extensions list</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="querying-from-deep-storage">Querying from deep storage<a href="#querying-from-deep-storage" class="hash-link" aria-label="Direct link to Querying from deep storage" title="Direct link to Querying from deep storage"></a></h2>
<p>Although not as performant as querying segments stored on disk for Historical processes, you can query from deep storage to access segments that you may not need frequently or with the extreme low latency Druid queries traditionally provide. You trade some performance for a total lower storage cost because you can access more of your data without the need to increase the number or capacity of your Historical processes.</p>
-<p>For information about how to run queries, see <a href="/docs/latest/querying/query-deep-storage">Query from deep storage</a>.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/latest/design/segments"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Segments</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/late [...]
+<p>For information about how to run queries, see <a href="/docs/37.0.0/querying/query-deep-storage">Query from deep storage</a>.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/design/segments"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Segments</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/37.0 [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/design/design.html/index.html b/docs/37.0.0/design/design.html/index.html
new file mode 100644
index 000000000..0d976b80f
--- /dev/null
+++ b/docs/37.0.0/design/design.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/design/">
+ <link rel="canonical" href="/docs/37.0.0/design/" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/design/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/design/extensions-contrib/dropwizard.html/index.html b/docs/37.0.0/design/extensions-contrib/dropwizard.html/index.html
new file mode 100644
index 000000000..4b203ebbf
--- /dev/null
+++ b/docs/37.0.0/design/extensions-contrib/dropwizard.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/design/extensions-contrib/dropwizard">
+ <link rel="canonical" href="/docs/37.0.0/design/extensions-contrib/dropwizard" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/design/extensions-contrib/dropwizard' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/design/extensions-contrib/dropwizard/index.html b/docs/37.0.0/design/extensions-contrib/dropwizard/index.html
similarity index 97%
copy from docs/latest/design/extensions-contrib/dropwizard/index.html
copy to docs/37.0.0/design/extensions-contrib/dropwizard/index.html
index 899dee971..20d216e92 100644
--- a/docs/latest/design/extensions-contrib/dropwizard/index.html
+++ b/docs/37.0.0/design/extensions-contrib/dropwizard/index.html
@@ -3,14 +3,14 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Dropwizard metrics emitter | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/ [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Dropwizard metrics emitter | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/ [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
-<p>To use this extension, make sure to <a href="/docs/latest/configuration/extensions#loading-extensions">include</a> <code>dropwizard-emitter</code> in the extensions load list.</p>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<p>To use this extension, make sure to <a href="/docs/37.0.0/configuration/extensions#loading-extensions">include</a> <code>dropwizard-emitter</code> in the extensions load list.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="introduction">Introduction<a href="#introduction" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction"></a></h2>
<p>This extension integrates <a href="http://metrics.dropwizard.io/3.1.0/getting-started/#" target="_blank" rel="noopener noreferrer">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.
diff --git a/docs/37.0.0/design/historical.html/index.html b/docs/37.0.0/design/historical.html/index.html
new file mode 100644
index 000000000..85395c2c1
--- /dev/null
+++ b/docs/37.0.0/design/historical.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/design/historical">
+ <link rel="canonical" href="/docs/37.0.0/design/historical" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/design/historical' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/design/historical/index.html b/docs/37.0.0/design/historical/index.html
similarity index 87%
copy from docs/latest/design/historical/index.html
copy to docs/37.0.0/design/historical/index.html
index 2d50e5cda..64fe037ce 100644
--- a/docs/latest/design/historical/index.html
+++ b/docs/37.0.0/design/historical/index.html
@@ -3,36 +3,36 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Historical service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/d [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Historical service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/d [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
Historical services cache data segments on local disk and serve queries from that cache as well as from an in-memory cache.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration"></a></h2>
-<p>For Apache Druid Historical service configuration, see <a href="/docs/latest/configuration/#historical">Historical configuration</a>.</p>
-<p>For basic tuning guidance for the Historical service, see <a href="/docs/latest/operations/basic-cluster-tuning#historical">Basic cluster tuning</a>.</p>
+<p>For Apache Druid Historical service configuration, see <a href="/docs/37.0.0/configuration/#historical">Historical configuration</a>.</p>
+<p>For basic tuning guidance for the Historical service, see <a href="/docs/37.0.0/operations/basic-cluster-tuning#historical">Basic cluster tuning</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="http-endpoints">HTTP endpoints<a href="#http-endpoints" class="hash-link" aria-label="Direct link to HTTP endpoints" title="Direct link to HTTP endpoints"></a></h2>
-<p>For a list of API endpoints supported by the Historical, please see the <a href="/docs/latest/api-reference/service-status-api#historical">Service status API reference</a>.</p>
+<p>For a list of API endpoints supported by the Historical, please see the <a href="/docs/37.0.0/api-reference/service-status-api#historical">Service status API reference</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="running">Running<a href="#running" class="hash-link" aria-label="Direct link to Running" title="Direct link to Running"></a></h2>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">org.apache.druid.cli.Main server historical</span><br></span></code></pre><div class="buttonGroup__atx">< [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="loading-and-serving-segments">Loading and serving segments<a href="#loading-and-serving-segments" class="hash-link" aria-label="Direct link to Loading and serving segments" title="Direct link to Loading and serving segments"></a></h2>
<p>Each Historical service copies or pulls segment files from deep storage to local disk in an area called the segment cache. To configure the size and location of the segment cache on each Historical service, set the <code>druid.segmentCache.locations</code>.
-For more information, see <a href="/docs/latest/operations/basic-cluster-tuning#segment-cache-size">Segment cache size</a>.</p>
-<p>The <a href="/docs/latest/design/coordinator">Coordinator</a> controls the assignment of segments to Historicals and the balance of segments between Historicals. Historical services do not communicate directly with each other, nor do they communicate directly with the Coordinator. Instead, the Coordinator creates ephemeral entries in ZooKeeper in a <a href="/docs/latest/configuration/#path-configuration">load queue path</a>. Each Historical service maintains a connection to ZooKeeper, [...]
+For more information, see <a href="/docs/37.0.0/operations/basic-cluster-tuning#segment-cache-size">Segment cache size</a>.</p>
+<p>The <a href="/docs/37.0.0/design/coordinator">Coordinator</a> controls the assignment of segments to Historicals and the balance of segments between Historicals. Historical services do not communicate directly with each other, nor do they communicate directly with the Coordinator. Instead, the Coordinator creates ephemeral entries in ZooKeeper in a <a href="/docs/37.0.0/configuration/#path-configuration">load queue path</a>. Each Historical service maintains a connection to ZooKeeper, [...]
<p>When a Historical service detects a new entry in the ZooKeeper load queue, it checks its own segment cache. If no information about the segment exists there, the Historical service first retrieves metadata from ZooKeeper about the segment, including where the segment is located in deep storage and how it needs to decompress and process it.</p>
-<p>For more information about segment metadata and Druid segments in general, see <a href="/docs/latest/design/segments">Segments</a>.</p>
-<p>After a Historical service pulls down and processes a segment from deep storage, Druid advertises the segment as being available for queries from the Broker. This announcement by the Historical is made via ZooKeeper, in a <a href="/docs/latest/configuration/#path-configuration">served segments path</a>.</p>
-<p>For more information about how the Broker determines what data is available for queries, see <a href="/docs/latest/design/broker">Broker</a>.</p>
+<p>For more information about segment metadata and Druid segments in general, see <a href="/docs/37.0.0/design/segments">Segments</a>.</p>
+<p>After a Historical service pulls down and processes a segment from deep storage, Druid advertises the segment as being available for queries from the Broker. This announcement by the Historical is made via ZooKeeper, in a <a href="/docs/37.0.0/configuration/#path-configuration">served segments path</a>.</p>
+<p>For more information about how the Broker determines what data is available for queries, see <a href="/docs/37.0.0/design/broker">Broker</a>.</p>
<p>To make data from the segment cache available for querying as soon as possible, Historical services search the local segment cache upon startup and advertise the segments found there.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="loading-and-serving-segments-from-cache">Loading and serving segments from cache<a href="#loading-and-serving-segments-from-cache" class="hash-link" aria-label="Direct link to Loading and serving segments from cache" title="Direct link to Loading and serving segments from cache"></a></h2>
<p>The segment cache uses <a href="https://en.wikipedia.org/wiki/Mmap" target="_blank" rel="noopener noreferrer">memory mapping</a>. The cache consumes memory from the underlying operating system so Historicals can hold parts of segment files in memory to increase query performance at the data level. The in-memory segment cache is affected by the size of the Historical JVM, heap / direct memory buffers, and other services on the operating system itself.</p>
<p>At query time, if the required part of a segment file is available in the memory mapped cache or "page cache", the Historical re-uses it and reads it directly from memory. If it is not in the memory-mapped cache, the Historical reads that part of the segment from disk. In this case, there is potential for new data to flush other segment data from memory. This means that if free operating system memory is close to <code>druid.server.maxSize</code>, the more likely that segmen [...]
-<p>Note that this memory-mapped segment cache is in addition to other <a href="/docs/latest/querying/caching">query-level caches</a>.</p>
+<p>Note that this memory-mapped segment cache is in addition to other <a href="/docs/37.0.0/querying/caching">query-level caches</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="querying-segments">Querying segments<a href="#querying-segments" class="hash-link" aria-label="Direct link to Querying segments" title="Direct link to Querying segments"></a></h2>
<p>You can configure a Historical service to log and report metrics for every query it services.
-For information on querying Historical services, see <a href="/docs/latest/querying/">Querying</a>.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/latest/design/router"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Router</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/latest/design/middlemanager"><div cla [...]
+For information on querying Historical services, see <a href="/docs/37.0.0/querying/">Querying</a>.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/design/router"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Router</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/37.0.0/design/middlemanager"><div cla [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/latest/design/index.html b/docs/37.0.0/design/index.html
similarity index 93%
copy from docs/latest/design/index.html
copy to docs/37.0.0/design/index.html
index 51fe0e253..089196bb3 100644
--- a/docs/latest/design/index.html
+++ b/docs/37.0.0/design/index.html
@@ -3,13 +3,13 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Introduction to Apache Druid | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/doc [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Introduction to Apache Druid | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/doc [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
<p>Druid is commonly used as the database backend for GUIs of analytical applications, or for highly-concurrent APIs that need fast aggregations. Druid works best with event-oriented data.</p>
<p>Common application areas for Druid include:</p>
<table><thead><tr><th>Use Case</th><th>Description</th></tr></thead><tbody><tr><td>Clickstream analytics</td><td>Analyze user behavior on websites and mobile applications to understand navigation patterns, popular content, and user engagement</td></tr><tr><td>Network telemetry analytics</td><td>Monitor and analyze network traffic and performance metrics to optimize network efficiency, identify bottlenecks, and ensure quality of service</td></tr><tr><td>Server metrics storage</td><td>Coll [...]
@@ -29,7 +29,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#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/37.0.0/design/architecture#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/" target="_blank" rel="noopener noreferrer">Roaring</a> or
<a href="https://arxiv.org/pdf/1004.0403" target="_blank" rel="noopener noreferrer">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.
@@ -66,9 +66,9 @@ taking a long time to complete.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="learn-more">Learn more<a href="#learn-more" class="hash-link" aria-label="Direct link to Learn more" title="Direct link to Learn more"></a></h2>
<ul>
-<li>Try the Druid <a href="/docs/latest/tutorials/">Quickstart</a>.</li>
-<li>Learn more about Druid components in <a href="/docs/latest/design/architecture">Design</a>.</li>
+<li>Try the Druid <a href="/docs/37.0.0/tutorials/">Quickstart</a>.</li>
+<li>Learn more about Druid components in <a href="/docs/37.0.0/design/architecture">Design</a>.</li>
<li>Read about new features and improvements in <a href="https://github.com/apache/druid/releases" target="_blank" rel="noopener noreferrer">Druid Releases</a>.</li>
-</ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--next" href="/docs/latest/tutorials/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Local quickstart</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#key-features-of [...]
+</ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--next" href="/docs/37.0.0/tutorials/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Local quickstart</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#key-features-of [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/design/indexer.html/index.html b/docs/37.0.0/design/indexer.html/index.html
new file mode 100644
index 000000000..3c604db4b
--- /dev/null
+++ b/docs/37.0.0/design/indexer.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/design/indexer">
+ <link rel="canonical" href="/docs/37.0.0/design/indexer" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/design/indexer' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/design/indexer/index.html b/docs/37.0.0/design/indexer/index.html
similarity index 90%
copy from docs/latest/design/indexer/index.html
copy to docs/37.0.0/design/indexer/index.html
index a0f09cf6e..8062e5932 100644
--- a/docs/latest/design/indexer/index.html
+++ b/docs/37.0.0/design/indexer/index.html
@@ -3,26 +3,26 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Indexer service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/desi [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Indexer service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/desi [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
<p>The Apache Druid Indexer service is an alternative to the Middle Manager + 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 Middle Manager + Peon system and to better enable resource sharing across tasks.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration"></a></h2>
-<p>For Apache Druid Indexer service configuration, see <a href="/docs/latest/configuration/#indexer">Indexer Configuration</a>.</p>
+<p>For Apache Druid Indexer service configuration, see <a href="/docs/37.0.0/configuration/#indexer">Indexer Configuration</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="http-endpoints">HTTP endpoints<a href="#http-endpoints" class="hash-link" aria-label="Direct link to HTTP endpoints" title="Direct link to HTTP endpoints"></a></h2>
-<p>The Indexer service shares the same HTTP endpoints as the <a href="/docs/latest/api-reference/service-status-api#middle-manager">Middle Manager</a>.</p>
+<p>The Indexer service shares the same HTTP endpoints as the <a href="/docs/37.0.0/api-reference/service-status-api#middle-manager">Middle Manager</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="running">Running<a href="#running" class="hash-link" aria-label="Direct link to Running" title="Direct link to Running"></a></h2>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">org.apache.druid.cli.Main server indexer</span><br></span></code></pre><div class="buttonGroup__atx"><but [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="task-resource-sharing">Task resource sharing<a href="#task-resource-sharing" class="hash-link" aria-label="Direct link to Task resource sharing" title="Direct link to Task resource sharing"></a></h2>
<p>The following resources are shared across all tasks running inside the Indexer service.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="query-resources">Query resources<a href="#query-resources" class="hash-link" aria-label="Direct link to Query resources" title="Direct link to Query resources"></a></h3>
<p>The query processing threads and buffers are shared across all tasks. The Indexer serves queries from a single endpoint shared by all tasks.</p>
-<p>If <a href="/docs/latest/configuration/#indexer-caching">query caching</a> is enabled, the query cache is also shared across all tasks.</p>
+<p>If <a href="/docs/37.0.0/configuration/#indexer-caching">query caching</a> is enabled, the query cache is also shared across all tasks.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="server-http-threads">Server HTTP threads<a href="#server-http-threads" class="hash-link" aria-label="Direct link to Server HTTP threads" title="Direct link to Server HTTP threads"></a></h3>
<p>The Indexer maintains two equally sized pools of HTTP threads.
One pool is exclusively used for task control messages between the Overlord and the Indexer ("chat handler threads"). The other pool is used for handling all other HTTP requests.</p>
@@ -42,6 +42,6 @@ One pool is exclusively used for task control messages between the Overlord and
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="current-limitations">Current limitations<a href="#current-limitations" class="hash-link" aria-label="Direct link to Current limitations" title="Direct link to Current limitations"></a></h2>
<p>Separate task logs are not currently supported when using the Indexer; all task log messages will instead be logged in the Indexer service log.</p>
<p>The Indexer currently imposes an identical memory limit on each task. In later releases, the per-task memory limit will be removed and only the global limit will apply. The limit on concurrent merges will also be removed.</p>
-<p>In later releases, per-task memory usage will be dynamically managed. Please see <a href="https://github.com/apache/druid/issues/7900" target="_blank" rel="noopener noreferrer">https://github.com/apache/druid/issues/7900</a> for details on future enhancements to the Indexer.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/latest/design/peons"><div class="pagination-nav__subla [...]
+<p>In later releases, per-task memory usage will be dynamically managed. Please see <a href="https://github.com/apache/druid/issues/7900" target="_blank" rel="noopener noreferrer">https://github.com/apache/druid/issues/7900</a> for details on future enhancements to the Indexer.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/design/peons"><div class="pagination-nav__subla [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/design/indexing-service.html/index.html b/docs/37.0.0/design/indexing-service.html/index.html
new file mode 100644
index 000000000..aebbb0f42
--- /dev/null
+++ b/docs/37.0.0/design/indexing-service.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/design/indexing-service">
+ <link rel="canonical" href="/docs/37.0.0/design/indexing-service" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/design/indexing-service' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/design/indexing-service/index.html b/docs/37.0.0/design/indexing-service/index.html
similarity index 89%
copy from docs/latest/design/indexing-service/index.html
copy to docs/37.0.0/design/indexing-service/index.html
index 2d5a97b01..e5d37e751 100644
--- a/docs/latest/design/indexing-service/index.html
+++ b/docs/37.0.0/design/indexing-service/index.html
@@ -3,25 +3,25 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Indexing Service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/des [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Indexing Service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/des [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
-<p>Indexing <a href="/docs/latest/ingestion/tasks">tasks</a> are responsible for creating and <a href="/docs/latest/ingestion/tasks#kill">killing</a> Druid <a href="/docs/latest/design/segments">segments</a>.</p>
-<p>The indexing service is composed of three main components: <a href="/docs/latest/design/peons">Peons</a> that can run a single task, <a href="/docs/latest/design/middlemanager">Middle Managers</a> that manage Peons, and an <a href="/docs/latest/design/overlord">Overlord</a> that manages task distribution to Middle Managers.
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<p>Indexing <a href="/docs/37.0.0/ingestion/tasks">tasks</a> are responsible for creating and <a href="/docs/37.0.0/ingestion/tasks#kill">killing</a> Druid <a href="/docs/37.0.0/design/segments">segments</a>.</p>
+<p>The indexing service is composed of three main components: <a href="/docs/37.0.0/design/peons">Peons</a> that can run a single task, <a href="/docs/37.0.0/design/middlemanager">Middle Managers</a> that manage Peons, and an <a href="/docs/37.0.0/design/overlord">Overlord</a> that manages task distribution to Middle Managers.
Overlords and Middle Managers may run on the same process or across multiple processes, while Middle Managers 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/api-reference/tasks-api">Tasks API</a> for more information.</p>
+<p>Tasks are managed using API endpoints on the Overlord service. Please see <a href="/docs/37.0.0/api-reference/tasks-api">Tasks API</a> for more information.</p>
<p><img decoding="async" loading="lazy" alt="Indexing Service" src="/assets/images/indexing_service-e985270b9e0e342af71c0673407e5673.png" title="Indexing Service" width="532" height="621" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="overlord">Overlord<a href="#overlord" class="hash-link" aria-label="Direct link to Overlord" title="Direct link to Overlord"></a></h2>
-<p>See <a href="/docs/latest/design/overlord">Overlord</a>.</p>
+<p>See <a href="/docs/37.0.0/design/overlord">Overlord</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="middle-managers">Middle Managers<a href="#middle-managers" class="hash-link" aria-label="Direct link to Middle Managers" title="Direct link to Middle Managers"></a></h2>
-<p>See <a href="/docs/latest/design/middlemanager">Middle Manager</a>.</p>
+<p>See <a href="/docs/37.0.0/design/middlemanager">Middle Manager</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="peons">Peons<a href="#peons" class="hash-link" aria-label="Direct link to Peons" title="Direct link to Peons"></a></h2>
-<p>See <a href="/docs/latest/design/peons">Peon</a>.</p>
+<p>See <a href="/docs/37.0.0/design/peons">Peon</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="tasks">Tasks<a href="#tasks" class="hash-link" aria-label="Direct link to Tasks" title="Direct link to Tasks"></a></h2>
-<p>See <a href="/docs/latest/ingestion/tasks">Tasks</a>.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#overlord" class="table-of-contents__link toc-highlight">Overlord</a></li><li><a href="#middle-managers" class="table-of-contents__link toc-highlight">Middle Ma [...]
+<p>See <a href="/docs/37.0.0/ingestion/tasks">Tasks</a>.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#overlord" class="table-of-contents__link toc-highlight">Overlord</a></li><li><a href="#middle-managers" class="table-of-contents__link toc-highlight">Middle Ma [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/design/metadata-storage.html/index.html b/docs/37.0.0/design/metadata-storage.html/index.html
new file mode 100644
index 000000000..3735fd9e6
--- /dev/null
+++ b/docs/37.0.0/design/metadata-storage.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/design/metadata-storage">
+ <link rel="canonical" href="/docs/37.0.0/design/metadata-storage" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/design/metadata-storage' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/design/metadata-storage/index.html b/docs/37.0.0/design/metadata-storage/index.html
similarity index 92%
copy from docs/latest/design/metadata-storage/index.html
copy to docs/37.0.0/design/metadata-storage/index.html
index dd617b742..98a2f2f81 100644
--- a/docs/latest/design/metadata-storage/index.html
+++ b/docs/37.0.0/design/metadata-storage/index.html
@@ -3,13 +3,13 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Metadata storage | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/des [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Metadata storage | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/des [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
Druid uses the metadata store to house various metadata about the system, but not to store the actual data.
The metadata store retains all metadata essential for a Druid cluster to work.</p>
<p>The metadata store includes the following:</p>
@@ -21,17 +21,17 @@ The metadata store retains all metadata essential for a Druid cluster to work.</
<li>Audit records</li>
</ul>
<p>Derby is the default metadata store for Druid, however, it is not suitable for production.
-<a href="/docs/latest/development/extensions-core/mysql">MySQL</a> and <a href="/docs/latest/development/extensions-core/postgresql">PostgreSQL</a> are more production suitable metadata stores.
-See <a href="/docs/latest/configuration/#metadata-storage">Metadata storage configuration</a> for the default configuration settings.</p>
+<a href="/docs/37.0.0/development/extensions-core/mysql">MySQL</a> and <a href="/docs/37.0.0/development/extensions-core/postgresql">PostgreSQL</a> are more production suitable metadata stores.
+See <a href="/docs/37.0.0/configuration/#metadata-storage">Metadata storage configuration</a> for the default configuration settings.</p>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>We also recommend you set up a hi [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="available-metadata-stores">Available metadata stores<a href="#available-metadata-stores" class="hash-link" aria-label="Direct link to Available metadata stores" title="Direct link to Available metadata stores"></a></h2>
<p>Druid supports Derby, MySQL, and PostgreSQL for storing metadata. Note that your metadata store must be ACID-compliant. If it isn't ACID-compliant, you can encounter issues, such as tasks failing sporadically.</p>
<p>To avoid issues with upgrades that require schema changes to a large metadata table, consider a metadata store version that supports instant ADD COLUMN semantics.
See the database-specific docs for guidance on versions.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="mysql">MySQL<a href="#mysql" class="hash-link" aria-label="Direct link to MySQL" title="Direct link to MySQL"></a></h3>
-<p>See <a href="/docs/latest/development/extensions-core/mysql">mysql-metadata-storage extension documentation</a>.</p>
+<p>See <a href="/docs/37.0.0/development/extensions-core/mysql">mysql-metadata-storage extension documentation</a>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="postgresql">PostgreSQL<a href="#postgresql" class="hash-link" aria-label="Direct link to PostgreSQL" title="Direct link to PostgreSQL"></a></h3>
-<p>See <a href="/docs/latest/development/extensions-core/postgresql">postgresql-metadata-storage</a>.</p>
+<p>See <a href="/docs/37.0.0/development/extensions-core/postgresql">postgresql-metadata-storage</a>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="derby">Derby<a href="#derby" class="hash-link" aria-label="Direct link to Derby" title="Direct link to Derby"></a></h3>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>For production clusters, consider [...]
<p>Configure metadata storage with Derby by setting the following properties in your Druid configuration.</p>
@@ -56,7 +56,7 @@ For example:</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
"used segments" elsewhere in the documentation and throughout the project.) The table is polled by the
-<a href="/docs/latest/design/coordinator">Coordinator</a> to determine the set of segments that should be available for querying in the
+<a href="/docs/37.0.0/design/coordinator">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 "used" 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
@@ -70,7 +70,7 @@ As an example, the <code>payload</code> column may take the following form:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="rule-table">Rule table<a href="#rule-table" class="hash-link" aria-label="Direct link to Rule table" title="Direct link to Rule table"></a></h3>
<p>The rule table stores the various rules about where segments should
-land. These rules are used by the <a href="/docs/latest/design/coordinator">Coordinator</a>
+land. These rules are used by the <a href="/docs/37.0.0/design/coordinator">Coordinator</a>
when making segment (re-)allocation decisions about the cluster.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="config-table">Config table<a href="#config-table" class="hash-link" aria-label="Direct link to Config table" title="Direct link to Config table"></a></h3>
<p>The config table stores runtime configuration objects. We do not have
@@ -78,10 +78,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 class="anchor anchorWithStickyNavbar_LWe7" id="task-related-tables">Task-related tables<a href="#task-related-tables" class="hash-link" aria-label="Direct link to Task-related tables" title="Direct link to Task-related tables"></a></h3>
-<p>Task-related tables are created and used by the <a href="/docs/latest/design/overlord">Overlord</a> and <a href="/docs/latest/design/middlemanager">Middle Manager</a> when managing tasks.</p>
+<p>Task-related tables are created and used by the <a href="/docs/37.0.0/design/overlord">Overlord</a> and <a href="/docs/37.0.0/design/middlemanager">Middle Manager</a> when managing tasks.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="audit-table">Audit table<a href="#audit-table" class="hash-link" aria-label="Direct link to Audit table" title="Direct link to Audit table"></a></h3>
<p>The audit table stores the audit history for configuration changes
-such as rule changes done by <a href="/docs/latest/design/coordinator">Coordinator</a> and other
+such as rule changes done by <a href="/docs/37.0.0/design/coordinator">Coordinator</a> and other
config changes.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="metadata-storage-access">Metadata storage access<a href="#metadata-storage-access" class="hash-link" aria-label="Direct link to Metadata storage access" title="Direct link to Metadata storage access"></a></h2>
<p>Only the following processes access the metadata storage:</p>
@@ -94,8 +94,8 @@ config changes.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="learn-more">Learn more<a href="#learn-more" class="hash-link" aria-label="Direct link to Learn more" title="Direct link to Learn more"></a></h2>
<p>See the following topics for more information:</p>
<ul>
-<li><a href="/docs/latest/configuration/#metadata-storage">Metadata storage configuration</a></li>
-<li><a href="/docs/latest/operations/clean-metadata-store">Automated cleanup for metadata records</a></li>
-</ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/latest/design/deep-storage"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Deep storage</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/latest/design/zookeeper"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">ZooKeeper</div> [...]
+<li><a href="/docs/37.0.0/configuration/#metadata-storage">Metadata storage configuration</a></li>
+<li><a href="/docs/37.0.0/operations/clean-metadata-store">Automated cleanup for metadata records</a></li>
+</ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/design/deep-storage"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Deep storage</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/37.0.0/design/zookeeper"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">ZooKeeper</div> [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/design/middlemanager.html/index.html b/docs/37.0.0/design/middlemanager.html/index.html
new file mode 100644
index 000000000..a0e6f75bc
--- /dev/null
+++ b/docs/37.0.0/design/middlemanager.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/design/middlemanager">
+ <link rel="canonical" href="/docs/37.0.0/design/middlemanager" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/design/middlemanager' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/design/middlemanager/index.html b/docs/37.0.0/design/middlemanager/index.html
similarity index 87%
copy from docs/latest/design/middlemanager/index.html
copy to docs/37.0.0/design/middlemanager/index.html
index ec730fc69..484115d71 100644
--- a/docs/latest/design/middlemanager/index.html
+++ b/docs/37.0.0/design/middlemanager/index.html
@@ -3,20 +3,20 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Middle Manager service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/late [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Middle Manager service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0 [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
Druid uses separate JVMs for tasks to isolate resources and logs. Each Peon is capable of running only one task at a time, whereas a Middle Manager may have multiple Peons.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration"></a></h2>
-<p>For Apache Druid Middle Manager service configuration, see <a href="/docs/latest/configuration/#middle-manager-and-peon">Middle Manager and Peons</a>.</p>
-<p>For basic tuning guidance for the Middle Manager service, see <a href="/docs/latest/operations/basic-cluster-tuning#middle-manager">Basic cluster tuning</a>.</p>
+<p>For Apache Druid Middle Manager service configuration, see <a href="/docs/37.0.0/configuration/#middle-manager-and-peon">Middle Manager and Peons</a>.</p>
+<p>For basic tuning guidance for the Middle Manager service, see <a href="/docs/37.0.0/operations/basic-cluster-tuning#middle-manager">Basic cluster tuning</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="http-endpoints">HTTP endpoints<a href="#http-endpoints" class="hash-link" aria-label="Direct link to HTTP endpoints" title="Direct link to HTTP endpoints"></a></h2>
-<p>For a list of API endpoints supported by the Middle Manager, see the <a href="/docs/latest/api-reference/service-status-api#middle-manager">Service status API reference</a>.</p>
+<p>For a list of API endpoints supported by the Middle Manager, see the <a href="/docs/37.0.0/api-reference/service-status-api#middle-manager">Service status API reference</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="running">Running<a href="#running" class="hash-link" aria-label="Direct link to Running" title="Direct link to Running"></a></h2>
-<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">org.apache.druid.cli.Main server middleManager</span><br></span></code></pre><div class="buttonGroup__atx [...]
+<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">org.apache.druid.cli.Main server middleManager</span><br></span></code></pre><div class="buttonGroup__atx [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/design/overlord.html/index.html b/docs/37.0.0/design/overlord.html/index.html
new file mode 100644
index 000000000..7262147cb
--- /dev/null
+++ b/docs/37.0.0/design/overlord.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/design/overlord">
+ <link rel="canonical" href="/docs/37.0.0/design/overlord" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/design/overlord' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/design/overlord/index.html b/docs/37.0.0/design/overlord/index.html
similarity index 88%
copy from docs/latest/design/overlord/index.html
copy to docs/37.0.0/design/overlord/index.html
index eedf3e4b6..9b242d125 100644
--- a/docs/latest/design/overlord/index.html
+++ b/docs/37.0.0/design/overlord/index.html
@@ -3,27 +3,27 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Overlord service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/des [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Overlord service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/des [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
In local mode, the Overlord is also responsible for creating Peons for executing tasks. When running the Overlord in local mode, all Middle Manager and Peon configurations must be provided as well.
Local mode is typically used for simple workflows. In remote mode, the Overlord and Middle Manager are run in separate services 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>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration"></a></h2>
-<p>For Apache Druid Overlord service configuration, see <a href="/docs/latest/configuration/#overlord">Overlord Configuration</a>.</p>
-<p>For basic tuning guidance for the Overlord service, see <a href="/docs/latest/operations/basic-cluster-tuning#overlord">Basic cluster tuning</a>.</p>
+<p>For Apache Druid Overlord service configuration, see <a href="/docs/37.0.0/configuration/#overlord">Overlord Configuration</a>.</p>
+<p>For basic tuning guidance for the Overlord service, see <a href="/docs/37.0.0/operations/basic-cluster-tuning#overlord">Basic cluster tuning</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="http-endpoints">HTTP endpoints<a href="#http-endpoints" class="hash-link" aria-label="Direct link to HTTP endpoints" title="Direct link to HTTP endpoints"></a></h2>
-<p>For a list of API endpoints supported by the Overlord, please see the <a href="/docs/latest/api-reference/service-status-api#overlord">Service status API reference</a>.</p>
+<p>For a list of API endpoints supported by the Overlord, please see the <a href="/docs/37.0.0/api-reference/service-status-api#overlord">Service status API reference</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="blacklisted-workers">Blacklisted workers<a href="#blacklisted-workers" class="hash-link" aria-label="Direct link to Blacklisted workers" title="Direct link to Blacklisted workers"></a></h2>
<p>If a Middle Manager has task failures above a threshold, the Overlord will blacklist these Middle Managers. No more than 20% of the Middle Managers can be blacklisted. Blacklisted Middle Managers will be periodically whitelisted.</p>
<p>The following variables can be used to set the threshold and blacklist timeouts.</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">druid.indexer.runner.maxRetriesBeforeBlacklist</span><br></span><span class="token-line" style="color:#bf [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="autoscaling">Autoscaling<a href="#autoscaling" class="hash-link" aria-label="Direct link to Autoscaling" title="Direct link to Autoscaling"></a></h2>
<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, Middle Manager services are Amazon AWS EC2 nodes and they are provisioned to register themselves in a <a href="https://github.com/ning/galaxy" target="_blank" rel="noopener noreferrer">galaxy</a> environment.</p>
-<p>If autoscaling is enabled, new Middle Managers may be added when a task has been in pending state for too long. Middle Managers may be terminated if they have not run any tasks for a period of time.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/latest/design/coordinator"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Coordinator</div> [...]
+<p>If autoscaling is enabled, new Middle Managers may be added when a task has been in pending state for too long. Middle Managers may be terminated if they have not run any tasks for a period of time.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/design/coordinator"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Coordinator</div> [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/design/peons.html/index.html b/docs/37.0.0/design/peons.html/index.html
new file mode 100644
index 000000000..81a47b75d
--- /dev/null
+++ b/docs/37.0.0/design/peons.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/design/peons">
+ <link rel="canonical" href="/docs/37.0.0/design/peons" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/design/peons' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/design/peons/index.html b/docs/37.0.0/design/peons/index.html
similarity index 87%
copy from docs/latest/design/peons/index.html
copy to docs/37.0.0/design/peons/index.html
index 5ea370120..51bcead3b 100644
--- a/docs/latest/design/peons/index.html
+++ b/docs/37.0.0/design/peons/index.html
@@ -3,16 +3,16 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Peon service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/design/ [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Peon service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/design/ [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration"></a></h2>
-<p>For Apache Druid Peon configuration, see <a href="/docs/latest/configuration/#peon-query-configuration">Peon Query Configuration</a> and <a href="/docs/latest/configuration/#additional-peon-configuration">Additional Peon Configuration</a>.</p>
-<p>For basic tuning guidance for Middle Manager tasks, see <a href="/docs/latest/operations/basic-cluster-tuning#task-configurations">Basic cluster tuning</a>.</p>
+<p>For Apache Druid Peon configuration, see <a href="/docs/37.0.0/configuration/#peon-query-configuration">Peon Query Configuration</a> and <a href="/docs/37.0.0/configuration/#additional-peon-configuration">Additional Peon Configuration</a>.</p>
+<p>For basic tuning guidance for Middle Manager tasks, see <a href="/docs/37.0.0/operations/basic-cluster-tuning#task-configurations">Basic cluster tuning</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="http-endpoints">HTTP endpoints<a href="#http-endpoints" class="hash-link" aria-label="Direct link to HTTP endpoints" title="Direct link to HTTP endpoints"></a></h2>
<p>Peons run a single task in a single JVM. The Middle Manager is responsible for creating Peons for running tasks.
Peons should rarely run on their own.</p>
@@ -20,6 +20,6 @@ Peons should rarely run on their own.</p>
<p>The Peon should seldom run separately from the Middle Manager, except for development purposes.</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">org.apache.druid.cli.Main internal peon <task_file> <status_file></span><br></span></code></p [...]
<p>The task file contains the task JSON object.
-The status file indicates where the task status will be output.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/latest/design/middlemanager"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Middle Manager</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/latest/design/indexer"><div class="pagination-nav__sublabe [...]
+The status file indicates where the task status will be output.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/design/middlemanager"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Middle Manager</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/37.0.0/design/indexer"><div class="pagination-nav__sublabe [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/design/plumber.html/index.html b/docs/37.0.0/design/plumber.html/index.html
new file mode 100644
index 000000000..d898121ba
--- /dev/null
+++ b/docs/37.0.0/design/plumber.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/ingestion/standalone-realtime">
+ <link rel="canonical" href="/docs/37.0.0/ingestion/standalone-realtime" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/ingestion/standalone-realtime' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/design/processes.html/index.html b/docs/37.0.0/design/processes.html/index.html
new file mode 100644
index 000000000..dace624c6
--- /dev/null
+++ b/docs/37.0.0/design/processes.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/design/architecture">
+ <link rel="canonical" href="/docs/37.0.0/design/architecture" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/design/architecture' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/design/realtime.html/index.html b/docs/37.0.0/design/realtime.html/index.html
new file mode 100644
index 000000000..d898121ba
--- /dev/null
+++ b/docs/37.0.0/design/realtime.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/ingestion/standalone-realtime">
+ <link rel="canonical" href="/docs/37.0.0/ingestion/standalone-realtime" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/ingestion/standalone-realtime' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/design/router.html/index.html b/docs/37.0.0/design/router.html/index.html
new file mode 100644
index 000000000..73043a579
--- /dev/null
+++ b/docs/37.0.0/design/router.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/design/router">
+ <link rel="canonical" href="/docs/37.0.0/design/router" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/design/router' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/design/router/index.html b/docs/37.0.0/design/router/index.html
similarity index 94%
copy from docs/latest/design/router/index.html
copy to docs/37.0.0/design/router/index.html
index 6a6ad75d2..fdf379f31 100644
--- a/docs/latest/design/router/index.html
+++ b/docs/37.0.0/design/router/index.html
@@ -3,20 +3,20 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Router service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/desig [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Router service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/desig [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
<p>For query routing purposes, you should only ever need the Router service 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/web-console">web console</a>, a UI for loading data, managing datasources and tasks, and viewing server status and segment information.</p>
+<p>In addition to query routing, the Router also runs the <a href="/docs/37.0.0/operations/web-console">web console</a>, a UI for loading data, managing datasources and tasks, and viewing server status and segment information.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration"></a></h2>
-<p>For Apache Druid Router service configuration, see <a href="/docs/latest/configuration/#router">Router configuration</a>.</p>
-<p>For basic tuning guidance for the Router service, see <a href="/docs/latest/operations/basic-cluster-tuning#router">Basic cluster tuning</a>.</p>
+<p>For Apache Druid Router service configuration, see <a href="/docs/37.0.0/configuration/#router">Router configuration</a>.</p>
+<p>For basic tuning guidance for the Router service, see <a href="/docs/37.0.0/operations/basic-cluster-tuning#router">Basic cluster tuning</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="http-endpoints">HTTP endpoints<a href="#http-endpoints" class="hash-link" aria-label="Direct link to HTTP endpoints" title="Direct link to HTTP endpoints"></a></h2>
-<p>For a list of API endpoints supported by the Router, see <a href="/docs/latest/api-reference/legacy-metadata-api#datasource-information">Legacy metadata API reference</a>.</p>
+<p>For a list of API endpoints supported by the Router, see <a href="/docs/37.0.0/api-reference/legacy-metadata-api#datasource-information">Legacy metadata API reference</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="running">Running<a href="#running" class="hash-link" aria-label="Direct link to Running" title="Direct link to Running"></a></h2>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">org.apache.druid.cli.Main server router</span><br></span></code></pre><div class="buttonGroup__atx"><butt [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="router-as-management-proxy">Router as management proxy<a href="#router-as-management-proxy" class="hash-link" aria-label="Direct link to Router as management proxy" title="Direct link to Router as management proxy"></a></h2>
@@ -55,7 +55,7 @@ This strategy can route both native and SQL queries.</p>
<p>Allows defining arbitrary routing rules using a JavaScript function. The function takes the configuration and the query to be executed, and returns the tier it should be routed to, or null for the default tier.</p>
<p>The following example function sends queries containing more than three aggregators to the lowest priority Broker.</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
-<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>JavaScript-based functionality is [...]
+<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>JavaScript-based functionality is [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="routing-of-sql-queries-using-strategies">Routing of SQL queries using strategies<a href="#routing-of-sql-queries-using-strategies" class="hash-link" aria-label="Direct link to Routing of SQL queries using strategies" title="Direct link to Routing of SQL queries using strategies"></a></h2>
<p>To enable routing of SQL queries using strategies, set <code>druid.router.sql.enable</code> to <code>true</code>. The Broker service for a
given SQL query is resolved using only the provided Router strategies. If not resolved using any of the strategies, the
@@ -85,6 +85,6 @@ Druid always routes Avatica JDBC requests based on connection ID.</p>
<p>JVM settings:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">-server</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">-Xmx13g [...]
<p>Runtime.properties:</p>
-<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">druid.host=#{IP_ADDR}:8080</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="t [...]
+<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">druid.host=#{IP_ADDR}:8080</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="t [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/design/segments.html/index.html b/docs/37.0.0/design/segments.html/index.html
new file mode 100644
index 000000000..27f081edc
--- /dev/null
+++ b/docs/37.0.0/design/segments.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/design/segments">
+ <link rel="canonical" href="/docs/37.0.0/design/segments" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/design/segments' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/design/segments/index.html b/docs/37.0.0/design/segments/index.html
similarity index 94%
copy from docs/latest/design/segments/index.html
copy to docs/37.0.0/design/segments/index.html
index 6d216fb03..44f7880c4 100644
--- a/docs/latest/design/segments/index.html
+++ b/docs/37.0.0/design/segments/index.html
@@ -3,14 +3,14 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Segments | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/design/segm [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Segments | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/design/segm [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
-<p>The time interval is configurable in the <code>segmentGranularity</code> parameter of the <a href="/docs/latest/ingestion/ingestion-spec#granularityspec"><code>granularitySpec</code></a>.</p>
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<p>The time interval is configurable in the <code>segmentGranularity</code> parameter of the <a href="/docs/37.0.0/ingestion/ingestion-spec#granularityspec"><code>granularitySpec</code></a>.</p>
<p>For Druid to operate well under heavy query load, it is important for the segment
file size to be within the recommended range of 300-700 MB. If your
segment files are larger than this range, then consider either
@@ -18,7 +18,7 @@ changing the granularity of the segment time interval or partitioning your
data and/or adjusting the <code>targetRowsPerSegment</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#partitionsspec">Batch ingestion</a> documentation
+the <a href="/docs/37.0.0/ingestion/native-batch#partitionsspec">Batch ingestion</a> documentation
for more guidance.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="segment-file-structure">Segment file structure<a href="#segment-file-structure" class="hash-link" aria-label="Direct link to Segment file structure" title="Direct link to Segment file structure"></a></h2>
<p>Segment files are <em>columnar</em>: the data for each column is laid out in
@@ -58,7 +58,7 @@ bitmap. If a row has more than one value for a column, its entry in
the list is an array of values. Additionally, a row with <em>n</em> values in the list has <em>n</em> non-zero valued entries in bitmaps.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="compression">Compression<a href="#compression" class="hash-link" aria-label="Direct link to Compression" title="Direct link to Compression"></a></h2>
<p>Druid uses LZ4 by default to compress blocks of values for string, long, float, and double columns. Druid uses Roaring to compress bitmaps for string columns and numeric null values. We recommend that you use these defaults unless you've experimented with your data and query patterns suggest that non-default options will perform better in your specific case.</p>
-<p>Druid also supports Concise bitmap compression. For string column bitmaps, the differences between using Roaring and Concise are most pronounced for high cardinality columns. In this case, Roaring is substantially faster on filters that match many values, but in some cases Concise can have a lower footprint due to the overhead of the Roaring format (but is still slower when many values are matched). You configure compression at the segment level, not for individual columns. See <a hre [...]
+<p>Druid also supports Concise bitmap compression. For string column bitmaps, the differences between using Roaring and Concise are most pronounced for high cardinality columns. In this case, Roaring is substantially faster on filters that match many values, but in some cases Concise can have a lower footprint due to the overhead of the Roaring format (but is still slower when many values are matched). You configure compression at the segment level, not for individual columns. See <a hre [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="segment-identification">Segment identification<a href="#segment-identification" class="hash-link" aria-label="Direct link to Segment identification" title="Direct link to Segment identification"></a></h2>
<p>Segment identifiers typically contain the segment datasource, interval start time (in ISO 8601 format), interval end time (in ISO 8601 format), and version information. If data is additionally sharded beyond a time range, the segment identifier also contains a partition number:</p>
<p><code>datasource_intervalStart_intervalEnd_version_partitionNum</code></p>
@@ -101,6 +101,6 @@ Smoosh files contain the following:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">foo_2015-01-01/2015-01-02_v1_0</span><br></span><span class="token-line" style="color:#bfc7d5"><span clas [...]
<p><code>v2</code> segments are loaded into the cluster as soon as they are built and replace <code>v1</code> segments for the period of time the segments overlap. Before <code>v2</code> segments are completely loaded, the cluster may contain a mixture of <code>v1</code> and <code>v2</code> segments.</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">foo_2015-01-01/2015-01-02_v1_0</span><br></span><span class="token-line" style="color:#bfc7d5"><span clas [...]
-<p>In this case, queries may hit a mixture of <code>v1</code> and <code>v2</code> segments.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/latest/design/storage"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Storage</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/latest/design/deep-storage"><div class="pag [...]
+<p>In this case, queries may hit a mixture of <code>v1</code> and <code>v2</code> segments.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/design/storage"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Storage</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/37.0.0/design/deep-storage"><div class="pag [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/design/storage.html/index.html b/docs/37.0.0/design/storage.html/index.html
new file mode 100644
index 000000000..e69acb411
--- /dev/null
+++ b/docs/37.0.0/design/storage.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/design/storage">
+ <link rel="canonical" href="/docs/37.0.0/design/storage" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/design/storage' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/design/storage/index.html b/docs/37.0.0/design/storage/index.html
similarity index 88%
copy from docs/latest/design/storage/index.html
copy to docs/37.0.0/design/storage/index.html
index 59afd38a0..5f7c6dc03 100644
--- a/docs/latest/design/storage/index.html
+++ b/docs/37.0.0/design/storage/index.html
@@ -3,13 +3,13 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Storage overview | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/des [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Storage overview | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/des [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
<p><img decoding="async" loading="lazy" alt="Segment timeline" src="/assets/images/druid-timeline-1eb095729ad3c5084dc7ff60aad39421.png" width="1548" height="535" class="img_ev3q"></p>
<p>A datasource may have anywhere from just a few segments, up to hundreds of thousands and even millions of segments. Each segment is created by a Middle Manager as mutable and uncommitted. Data is queryable as soon as it is added to an uncommitted segment. The segment building process accelerates later queries by producing a data file that is compact and indexed:</p>
<ul>
@@ -23,15 +23,15 @@
</ul>
</li>
</ul>
-<p>Periodically, segments are committed and published to <a href="/docs/latest/design/deep-storage">deep storage</a>, become immutable, and move from Middle Managers to the Historical services. An entry about the segment is also written to the <a href="/docs/latest/design/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 th [...]
-<p>For details on the segment file format, see <a href="/docs/latest/design/segments">segment files</a>.</p>
-<p>For details on modeling your data in Druid, see <a href="/docs/latest/ingestion/schema-design">schema design</a>.</p>
+<p>Periodically, segments are committed and published to <a href="/docs/37.0.0/design/deep-storage">deep storage</a>, become immutable, and move from Middle Managers to the Historical services. An entry about the segment is also written to the <a href="/docs/37.0.0/design/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 th [...]
+<p>For details on the segment file format, see <a href="/docs/37.0.0/design/segments">segment files</a>.</p>
+<p>For details on modeling your data in Druid, see <a href="/docs/37.0.0/ingestion/schema-design">schema design</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="indexing-and-handoff">Indexing and handoff<a href="#indexing-and-handoff" class="hash-link" aria-label="Direct link to Indexing and handoff" title="Direct link to Indexing and handoff"></a></h2>
<p>Indexing is the mechanism by which new segments are created, and handoff is the mechanism by which they are published and served by Historical services.</p>
<p>On the indexing side:</p>
<ol>
<li>An indexing task starts running and building a new segment. It must determine the identifier of the segment before it starts building it. For a task that is appending (like a Kafka task, or an index task in append mode) this is done by calling an "allocate" API on the Overlord to potentially add a new partition to an existing set of segments. For
-a task that is overwriting (like a Hadoop task, or an index task not in append mode) this is done by locking an interval and creating a new version number and new set of segments.</li>
+a task that is overwriting (an index task not in append mode) this is done by locking an interval and creating a new version number and new set of segments.</li>
<li>If the indexing task is a realtime task (like a Kafka task) then the segment is immediately queryable at this point. It's available, but unpublished.</li>
<li>When the indexing task has finished reading data for the segment, it pushes it to deep storage and then publishes it by writing a record into the metadata store.</li>
<li>If the indexing task is a realtime task, then to ensure data is continuously available for queries, it waits for a Historical service to load the segment. If the indexing task is not a realtime task, it exits immediately.</li>
@@ -47,7 +47,7 @@ a task that is overwriting (like a Hadoop task, or an index task not in append m
<p>Segments all have a four-part identifier with the following components:</p>
<ul>
<li>Datasource name.</li>
-<li>Time interval for the time chunk containing the segment; this corresponds to the <code>segmentGranularity</code> specified at ingestion time. Uses the same format as <a href="/docs/latest/querying/granularities">query granularity</a>.</li>
+<li>Time interval for the time chunk containing the segment; this corresponds to the <code>segmentGranularity</code> specified at ingestion time. Uses the same format as <a href="/docs/37.0.0/querying/granularities">query granularity</a>.</li>
<li>Version number (generally an ISO8601 timestamp corresponding to when the segment set was first started).</li>
<li>Partition number (an integer, unique within a datasource+interval+version; may not necessarily be contiguous).</li>
</ul>
@@ -62,13 +62,13 @@ a task that is overwriting (like a Hadoop task, or an index task not in append m
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="segment-lifecycle">Segment lifecycle<a href="#segment-lifecycle" class="hash-link" aria-label="Direct link to Segment lifecycle" title="Direct link to Segment lifecycle"></a></h2>
<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/design/metadata-storage">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 publishing. 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 [...]
+<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/37.0.0/design/metadata-storage">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 publishing. 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 [...]
available before they are published, since they are only published when the segment is complete and will not accept any additional rows of data.</li>
<li><strong>Deep storage:</strong> Segment data files are pushed to deep storage once a segment is done being constructed. This happens immediately before publishing metadata to the metadata store.</li>
<li><strong>Availability for querying:</strong> Segments are available for querying on some Druid data server, like a realtime task, directly from deep storage, or a Historical service.</li>
</ol>
<p>You can inspect the state of currently active segments using the Druid SQL
-<a href="/docs/latest/querying/sql-metadata-tables#segments-table"><code>sys.segments</code> table</a>. It includes the following flags:</p>
+<a href="/docs/37.0.0/querying/sql-metadata-tables#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 service.</li>
@@ -78,27 +78,27 @@ available before they are published, since they are only published when the segm
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="availability-and-consistency">Availability and consistency<a href="#availability-and-consistency" class="hash-link" aria-label="Direct link to Availability and consistency" title="Direct link to Availability and consistency"></a></h2>
<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 ingestion side, Druid's primary <a href="/docs/latest/ingestion/#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>
+<p>On the ingestion side, Druid's primary <a href="/docs/37.0.0/ingestion/#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 "seekable-stream" ingestion methods like <a href="/docs/latest/ingestion/kafka-ingestion">Kafka</a> and <a href="/docs/latest/ingestion/kinesis-ingestion">Kinesis</a>. With these methods, Druid commits stream offsets to its <a href="/docs/latest/design/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, partia [...]
+<li>Supervised "seekable-stream" ingestion methods like <a href="/docs/37.0.0/ingestion/kafka-ingestion">Kafka</a> and <a href="/docs/37.0.0/ingestion/kinesis-ingestion">Kinesis</a>. With these methods, Druid commits stream offsets to its <a href="/docs/37.0.0/design/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, partia [...]
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">Hadoop-based batch ingestion</a>. Each task publishes all segment metadata in a single transaction.</li>
-<li><a href="/docs/latest/ingestion/native-batch">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>
+<li><a href="/docs/37.0.0/multi-stage-query/reference#replace">SQL REPLACE</a> statements. The controller task publishes all segment metadata when the statement is finished executing.</li>
+<li><a href="/docs/37.0.0/ingestion/native-batch">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 "seekable-stream" ingestion methods like <a href="/docs/latest/ingestion/kafka-ingestion">Kafka</a> and <a href="/docs/latest/ingestion/kinesis-ingestion">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">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">Native batch ingestion</a> is idempotent unless
-<a href="/docs/latest/ingestion/native-batch"><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>
+<li>Supervised "seekable-stream" ingestion methods like <a href="/docs/37.0.0/ingestion/kafka-ingestion">Kafka</a> and <a href="/docs/37.0.0/ingestion/kinesis-ingestion">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/37.0.0/multi-stage-query/reference#replace">SQL REPLACE</a> statements are idempotent unless reading from 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/37.0.0/ingestion/native-batch">Native batch ingestion</a> is idempotent unless
+<a href="/docs/37.0.0/ingestion/native-batch"><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>
<p>On the query side, the Druid Broker is responsible for ensuring that a consistent set of segments is involved in a given query. It selects the appropriate set of segment versions to use when the query starts based on what is currently available. This is supported by atomic replacement, a feature that ensures that from a user's perspective, queries flip instantaneously from an older version of data to a newer set of data, with no consistency or performance impact.
-This is used for Hadoop-based batch ingestion, native batch ingestion when <code>appendToExisting</code> is false, and compaction.</p>
+This is used for SQL REPLACE statements, native batch ingestion when <code>appendToExisting</code> is false, and compaction.</p>
<p>Note that atomic replacement happens for each time chunk individually. If a batch ingestion task or compaction involves multiple time chunks, then each time chunk will undergo atomic replacement soon after the task finishes, but the replacements will not all happen simultaneously.</p>
<p>Typically, atomic replacement in Druid is based on a core set concept that works in conjunction with segment versions.
When a time chunk is overwritten, a new core set of segments is created with a higher version number. The core set must all be available before the Broker will use them instead of the older set. There can also only be one core set 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 segment locking mode that is activated by setting
-<a href="/docs/latest/ingestion/tasks#context-parameters"><code>forceTimeChunkLock</code></a> to false in the context of an ingestion task. In this case, Druid creates an atomic update group 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 nu [...]
-<p>If segments become unavailable due to multiple Historicals going offline simultaneously (beyond your replication factor), then Druid queries will include only the segments that are still available. In the background, Druid will reload these unavailable segments on other Historicals as quickly as possible, at which point they will be included in queries again.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link paginati [...]
+<p>Druid also supports a deprecated segment locking mode that is activated by setting
+<a href="/docs/37.0.0/ingestion/tasks#context-parameters"><code>forceTimeChunkLock</code></a> to false in the context of an ingestion task. In this case, Druid creates an atomic update group 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 nu [...]
+<p>If segments become unavailable due to multiple Historicals going offline simultaneously (beyond your replication factor), then Druid queries will include only the segments that are still available. In the background, Druid will reload these unavailable segments on other Historicals as quickly as possible, at which point they will be included in queries again.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link paginati [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/design/zookeeper.html/index.html b/docs/37.0.0/design/zookeeper.html/index.html
new file mode 100644
index 000000000..7218244aa
--- /dev/null
+++ b/docs/37.0.0/design/zookeeper.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/design/zookeeper">
+ <link rel="canonical" href="/docs/37.0.0/design/zookeeper" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/design/zookeeper' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/design/zookeeper/index.html b/docs/37.0.0/design/zookeeper/index.html
similarity index 86%
copy from docs/latest/design/zookeeper/index.html
copy to docs/37.0.0/design/zookeeper/index.html
index e0240fc98..ee04056e4 100644
--- a/docs/latest/design/zookeeper/index.html
+++ b/docs/37.0.0/design/zookeeper/index.html
@@ -3,36 +3,34 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">ZooKeeper | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/design/zoo [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">ZooKeeper | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/design/zoo [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="minimum-zookeeper-versions">Minimum ZooKeeper versions<a href="#minimum-zookeeper-versions" class="hash-link" aria-label="Direct link to Minimum ZooKeeper versions" title="Direct link to Minimum ZooKeeper versions"></a></h2>
-<p>Apache Druid supports ZooKeeper versions 3.5.x and above.</p>
-<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>Note: Starting with Apache Druid [...]
-Starting with Apache Druid 31.0.0, support for Zookeeper-based segment loading has been removed.</p></div></div>
+<p>Apache Druid supports all stable versions of ZooKeeper. For information about ZooKeeper's stable version, see <a href="https://zookeeper.apache.org/releases.html" target="_blank" rel="noopener noreferrer">ZooKeeper releases</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="zookeeper-operations">ZooKeeper Operations<a href="#zookeeper-operations" class="hash-link" aria-label="Direct link to ZooKeeper Operations" title="Direct link to ZooKeeper Operations"></a></h2>
<p>The operations that happen over ZK are</p>
<ol>
-<li><a href="/docs/latest/design/coordinator">Coordinator</a> leader election</li>
-<li>Segment "publishing" protocol from <a href="/docs/latest/design/historical">Historical</a></li>
-<li><a href="/docs/latest/design/overlord">Overlord</a> leader election</li>
-<li><a href="/docs/latest/design/overlord">Overlord</a> and <a href="/docs/latest/design/middlemanager">Middle Manager</a> task management</li>
+<li><a href="/docs/37.0.0/design/coordinator">Coordinator</a> leader election</li>
+<li>Segment "publishing" protocol from <a href="/docs/37.0.0/design/historical">Historical</a></li>
+<li><a href="/docs/37.0.0/design/overlord">Overlord</a> leader election</li>
+<li><a href="/docs/37.0.0/design/overlord">Overlord</a> and <a href="/docs/37.0.0/design/middlemanager">Middle Manager</a> task management</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="coordinator-leader-election">Coordinator Leader Election<a href="#coordinator-leader-election" class="hash-link" aria-label="Direct link to Coordinator Leader Election" title="Direct link to Coordinator Leader Election"></a></h2>
-<p>We use the Curator <a href="https://curator.apache.org/curator-recipes/leader-latch.html" target="_blank" rel="noopener noreferrer">LeaderLatch</a> recipe to perform leader election at path</p>
+<p>We use the Curator <a href="https://curator.apache.org/docs/recipes-leader-latch" target="_blank" rel="noopener noreferrer">LeaderLatch</a> recipe to perform leader election at path</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">${druid.zk.paths.coordinatorPath}/_COORDINATOR</span><br></span></code></pre><div class="buttonGroup__atx [...]
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="segment-publishing-protocol-from-historical-and-realtime">Segment "publishing" protocol from Historical and Realtime<a href="#segment-publishing-protocol-from-historical-and-realtime" class="hash-link" aria-label="Direct link to Segment "publishing" protocol from Historical and Realtime" title="Direct link to Segment "publishing" protocol from Historical and Realtime"></a></h2>
<p>The <code>announcementsPath</code> and <code>liveSegmentsPath</code> are used for this.</p>
-<p>All <a href="/docs/latest/design/historical">Historical</a> processes publish themselves on the <code>announcementsPath</code>, specifically, they will create an ephemeral znode at</p>
+<p>All <a href="/docs/37.0.0/design/historical">Historical</a> processes publish themselves on the <code>announcementsPath</code>, specifically, they will create an ephemeral znode at</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">${druid.zk.paths.announcementsPath}/${druid.host}</span><br></span></code></pre><div class="buttonGroup__ [...]
<p>Which signifies that they exist. They will also subsequently create a permanent znode at</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">${druid.zk.paths.liveSegmentsPath}/${druid.host}</span><br></span></code></pre><div class="buttonGroup__a [...]
<p>And as they load up segments, they will attach ephemeral znodes that look like</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">${druid.zk.paths.liveSegmentsPath}/${druid.host}/_segment_identifier_</span><br></span></code></pre><div [...]
-<p>Processes like the <a href="/docs/latest/design/coordinator">Coordinator</a> and <a href="/docs/latest/design/broker">Broker</a> can then watch these paths to see which processes are currently serving which segments.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/latest/design/metadata-storage"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__l [...]
+<p>Processes like the <a href="/docs/37.0.0/design/coordinator">Coordinator</a> and <a href="/docs/37.0.0/design/broker">Broker</a> can then watch these paths to see which processes are currently serving which segments.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/37.0.0/design/metadata-storage"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__l [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/development/approximate-histograms.html/index.html b/docs/37.0.0/development/approximate-histograms.html/index.html
new file mode 100644
index 000000000..f3472eb02
--- /dev/null
+++ b/docs/37.0.0/development/approximate-histograms.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/development/extensions-core/approximate-histograms">
+ <link rel="canonical" href="/docs/37.0.0/development/extensions-core/approximate-histograms" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/development/extensions-core/approximate-histograms' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/development/build.html/index.html b/docs/37.0.0/development/build.html/index.html
new file mode 100644
index 000000000..e30fe43e8
--- /dev/null
+++ b/docs/37.0.0/development/build.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/development/build">
+ <link rel="canonical" href="/docs/37.0.0/development/build" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/development/build' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/development/build/index.html b/docs/37.0.0/development/build/index.html
similarity index 93%
copy from docs/latest/development/build/index.html
copy to docs/37.0.0/development/build/index.html
index f3306e52d..a9fb0cfe9 100644
--- a/docs/latest/development/build/index.html
+++ b/docs/37.0.0/development/build/index.html
@@ -3,13 +3,13 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Build from source | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/latest/de [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
-<script src="/assets/js/main.e112f7e7.js" defer="defer"></script>
+<title data-rh="true">Build from source | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/37.0.0/de [...]
+<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.985b7036.css">
+<script src="/assets/js/runtime~main.7e1f4526.js" defer="defer"></script>
+<script src="/assets/js/main.25c32051.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
that matches the version you want to build.
For building the latest code in master, follow the latest version of this page
<a href="https://github.com/apache/druid/blob/master/docs/development/build.md" target="_blank" rel="noopener noreferrer">here</a>:
@@ -17,7 +17,7 @@ make sure it has <code>/master/</code> in the URL.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="prerequisites">Prerequisites<a href="#prerequisites" class="hash-link" aria-label="Direct link to Prerequisites" title="Direct link to Prerequisites"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="installing-java-and-maven">Installing Java and Maven<a href="#installing-java-and-maven" class="hash-link" aria-label="Direct link to Installing Java and Maven" title="Direct link to Installing Java and Maven"></a></h3>
<ul>
-<li>See our <a href="/docs/latest/operations/java">Java documentation</a> for information about obtaining a supported JDK</li>
+<li>See our <a href="/docs/37.0.0/operations/java">Java documentation</a> for information about obtaining a supported JDK</li>
<li><a href="http://maven.apache.org/download.cgi" target="_blank" rel="noopener noreferrer">Maven version 3.x</a></li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="other-dependencies">Other Dependencies<a href="#other-dependencies" class="hash-link" aria-label="Direct link to Other Dependencies" title="Direct link to Other Dependencies"></a></h3>
@@ -54,6 +54,6 @@ make sure it has <code>/master/</code> in the URL.</p>
<p>Resolution: Make sure you have Python installed as well as the <code>yaml</code> module:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">pip install pyyaml</span><br></span></code></pre><div class="buttonGroup__atx"><button type [...]
<p>On some systems, ensure you use the Python 3.x version of <code>pip</code>:</p>
-<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">pip3 install pyyaml</span><br></span></code></pre><div class="buttonGroup__atx"><button typ [...]
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">pip3 install pyyaml</span><br></span></code></pre><div class="buttonGroup__atx"><button typ [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/37.0.0/development/community-extensions/azure.html/index.html b/docs/37.0.0/development/community-extensions/azure.html/index.html
new file mode 100644
index 000000000..4922aa4eb
--- /dev/null
+++ b/docs/37.0.0/development/community-extensions/azure.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/development/extensions-core/azure">
+ <link rel="canonical" href="/docs/37.0.0/development/extensions-core/azure" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/development/extensions-core/azure' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/development/community-extensions/cassandra.html/index.html b/docs/37.0.0/development/community-extensions/cassandra.html/index.html
new file mode 100644
index 000000000..54821010f
--- /dev/null
+++ b/docs/37.0.0/development/community-extensions/cassandra.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/development/extensions-contrib/cassandra">
+ <link rel="canonical" href="/docs/37.0.0/development/extensions-contrib/cassandra" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/development/extensions-contrib/cassandra' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/development/community-extensions/cloudfiles.html/index.html b/docs/37.0.0/development/community-extensions/cloudfiles.html/index.html
new file mode 100644
index 000000000..e76cb57ce
--- /dev/null
+++ b/docs/37.0.0/development/community-extensions/cloudfiles.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/development/extensions-contrib/cloudfiles">
+ <link rel="canonical" href="/docs/37.0.0/development/extensions-contrib/cloudfiles" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/development/extensions-contrib/cloudfiles' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/development/community-extensions/graphite.html/index.html b/docs/37.0.0/development/community-extensions/graphite.html/index.html
new file mode 100644
index 000000000..f9bae29ed
--- /dev/null
+++ b/docs/37.0.0/development/community-extensions/graphite.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/development/extensions-contrib/graphite">
+ <link rel="canonical" href="/docs/37.0.0/development/extensions-contrib/graphite" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/development/extensions-contrib/graphite' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/development/community-extensions/kafka-simple.html/index.html b/docs/37.0.0/development/community-extensions/kafka-simple.html/index.html
new file mode 100644
index 000000000..f447c5d29
--- /dev/null
+++ b/docs/37.0.0/development/community-extensions/kafka-simple.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/ingestion/kafka-ingestion">
+ <link rel="canonical" href="/docs/37.0.0/ingestion/kafka-ingestion" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/ingestion/kafka-ingestion' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/development/community-extensions/rabbitmq.html/index.html b/docs/37.0.0/development/community-extensions/rabbitmq.html/index.html
new file mode 100644
index 000000000..f447c5d29
--- /dev/null
+++ b/docs/37.0.0/development/community-extensions/rabbitmq.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/ingestion/kafka-ingestion">
+ <link rel="canonical" href="/docs/37.0.0/ingestion/kafka-ingestion" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/ingestion/kafka-ingestion' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/37.0.0/development/contribute-to-docs.html/index.html b/docs/37.0.0/development/contribute-to-docs.html/index.html
new file mode 100644
index 000000000..e02127e83
--- /dev/null
+++ b/docs/37.0.0/development/contribute-to-docs.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/37.0.0/development/contribute-to-docs">
+ <link rel="canonical" href="/docs/37.0.0/development/contribute-to-docs" />
+ </head>
+ <script>
+ window.location.href = '/docs/37.0.0/development/contribute-to-docs' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/latest/development/contribute-to-docs/index.html b/docs/37.0.0/development/contribute-to-docs/index.html
similarity index 95%
copy from docs/latest/development/contribute-to-docs/index.html
copy to docs/37.0.0/development/contribute-to-docs/index.html
index 60da73675..3a9f7a747 100644
--- a/docs/latest/development/contribute-to-docs/index.html
+++ b/docs/37.0.0/development/contribute-to-docs/index.html
@@ -3,13 +3,13 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
-<title data-rh="true">Contribute to Druid docs | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/la [...]
-<script src="/js/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f3140859.css">
-<script src="/assets/js/runtime~main.f3002423.js" defer="defer"></script>
... 29832 lines suppressed ...
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org