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

czweng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-paimon.git


The following commit(s) were added to refs/heads/master by this push:
     new 1638fccc [docs] Move document pages from content/docs to content/ 
(#627)
1638fccc is described below

commit 1638fccc0c4f6b485ae8d3593a9e9f942be2aeb8
Author: tsreaper <[email protected]>
AuthorDate: Fri Mar 17 20:37:02 2023 +0800

    [docs] Move document pages from content/docs to content/ (#627)
---
 docs/config.toml                                          |  2 ++
 docs/content/_index.md                                    |  2 +-
 docs/content/{docs => }/concepts/_index.md                |  0
 docs/content/{docs => }/concepts/append-only-table.md     |  2 +-
 docs/content/{docs => }/concepts/basic-concepts.md        |  8 ++++----
 docs/content/{docs => }/concepts/external-log-systems.md  |  2 +-
 docs/content/{docs => }/concepts/file-layouts.md          |  8 ++++----
 docs/content/{docs => }/concepts/overview.md              |  0
 docs/content/{docs => }/concepts/primary-key-table.md     | 12 ++++++------
 docs/content/{docs => }/engines/_index.md                 |  0
 docs/content/{docs => }/engines/flink.md                  |  0
 docs/content/{docs => }/engines/hive.md                   |  2 +-
 docs/content/{docs => }/engines/overview.md               |  0
 docs/content/{docs => }/engines/spark2.md                 |  2 +-
 docs/content/{docs => }/engines/spark3.md                 |  0
 docs/content/{docs => }/engines/trino.md                  |  0
 docs/content/{docs => }/filesystems/_index.md             |  0
 docs/content/{docs => }/filesystems/oss.md                |  2 +-
 docs/content/{docs => }/filesystems/overview.md           |  0
 docs/content/{docs => }/filesystems/s3.md                 |  2 +-
 docs/content/{docs => }/how-to/_index.md                  |  0
 docs/content/{docs => }/how-to/altering-tables.md         |  0
 docs/content/{docs => }/how-to/creating-catalogs.md       |  2 +-
 docs/content/{docs => }/how-to/creating-tables.md         |  6 +++---
 docs/content/{docs => }/how-to/lookup-joins.md            |  0
 docs/content/{docs => }/how-to/querying-tables.md         |  4 ++--
 docs/content/{docs => }/how-to/writing-tables.md          |  2 +-
 docs/content/{docs => }/maintenance/_index.md             |  0
 docs/content/{docs => }/maintenance/configurations.md     |  0
 docs/content/{docs => }/maintenance/expiring-snapshots.md |  2 +-
 docs/content/{docs => }/maintenance/manage-partition.md   |  0
 docs/content/{docs => }/maintenance/rescale-bucket.md     |  0
 docs/content/{docs => }/maintenance/write-performance.md  |  6 +++---
 docs/content/versions.md                                  |  1 +
 34 files changed, 35 insertions(+), 32 deletions(-)

diff --git a/docs/config.toml b/docs/config.toml
index 61a177d1..3928cadf 100644
--- a/docs/config.toml
+++ b/docs/config.toml
@@ -66,6 +66,8 @@ pygmentsUseClasses = true
     ["0.3", 
"https://nightlies.apache.org/flink/flink-table-store-docs-release-0.3";],
   ]
 
+  BookSection = '/'
+
 [markup]
 [markup.goldmark.renderer]
   unsafe = true
diff --git a/docs/content/_index.md b/docs/content/_index.md
index f4afc7f7..d1c142c7 100644
--- a/docs/content/_index.md
+++ b/docs/content/_index.md
@@ -36,7 +36,7 @@ Table Store offers the following core capabilities:
 ## Try Table Store
 
 If you’re interested in playing around with Flink Table Store, check out our
-quick start guide with [Flink]({{< ref "docs/engines/flink" >}}), [Spark]({{< 
ref "docs/engines/spark3" >}}) or [Hive]({{< ref "docs/engines/hive" >}}). It 
provides a step by
+quick start guide with [Flink]({{< ref "engines/flink" >}}), [Spark]({{< ref 
"engines/spark3" >}}) or [Hive]({{< ref "engines/hive" >}}). It provides a step 
by
 step introduction to the APIs and guides you through real applications.
 
 <--->
diff --git a/docs/content/docs/concepts/_index.md 
b/docs/content/concepts/_index.md
similarity index 100%
rename from docs/content/docs/concepts/_index.md
rename to docs/content/concepts/_index.md
diff --git a/docs/content/docs/concepts/append-only-table.md 
b/docs/content/concepts/append-only-table.md
similarity index 98%
rename from docs/content/docs/concepts/append-only-table.md
rename to docs/content/concepts/append-only-table.md
index 5be416e6..502593ce 100644
--- a/docs/content/docs/concepts/append-only-table.md
+++ b/docs/content/concepts/append-only-table.md
@@ -33,7 +33,7 @@ This type of table is suitable for use cases that do not 
require updates (such a
 
 ## Bucketing
 
-You can also define bucket number for Append-only table, see [Bucket]({{< ref 
"docs/concepts/basic-concepts#bucket" >}}).
+You can also define bucket number for Append-only table, see [Bucket]({{< ref 
"concepts/basic-concepts#bucket" >}}).
 
 It is recommended that you set the `bucket-key` field. Otherwise, the data 
will be hashed according to the whole row,
 and the performance will be poor.
diff --git a/docs/content/docs/concepts/basic-concepts.md 
b/docs/content/concepts/basic-concepts.md
similarity index 79%
rename from docs/content/docs/concepts/basic-concepts.md
rename to docs/content/concepts/basic-concepts.md
index 1a25e9c5..4c980106 100644
--- a/docs/content/docs/concepts/basic-concepts.md
+++ b/docs/content/concepts/basic-concepts.md
@@ -36,7 +36,7 @@ Table Store adopts the same partitioning concept as Apache 
Hive to separate data
 
 Partitioning is an optional way of dividing a table into related parts based 
on the values of particular columns like date, city, and department. Each table 
can have one or more partition keys to identify a particular partition.
 
-By partitioning, users can efficiently operate on a slice of records in the 
table. See [file layouts]({{< ref "docs/concepts/file-layouts" >}}) for how 
files are divided into multiple partitions.
+By partitioning, users can efficiently operate on a slice of records in the 
table. See [file layouts]({{< ref "concepts/file-layouts" >}}) for how files 
are divided into multiple partitions.
 
 {{< hint info >}}
 
@@ -48,14 +48,14 @@ Partition keys must be a subset of primary keys if primary 
keys are defined.
 
 Unpartitioned tables, or partitions in partitioned tables, are sub-divided 
into buckets, to provide extra structure to the data that may be used for more 
efficient querying.
 
-The range for a bucket is determined by the hash value of one or more columns 
in the records. Users can specify bucketing columns by providing the 
[`bucket-key` option]({{< ref "docs/maintenance/configurations#coreoptions" 
>}}). If no `bucket-key` option is specified, the primary key (if defined) or 
the complete record will be used as the bucket key.
+The range for a bucket is determined by the hash value of one or more columns 
in the records. Users can specify bucketing columns by providing the 
[`bucket-key` option]({{< ref "maintenance/configurations#coreoptions" >}}). If 
no `bucket-key` option is specified, the primary key (if defined) or the 
complete record will be used as the bucket key.
 
 A bucket is the smallest storage unit for reads and writes, so the number of 
buckets limits the maximum processing parallelism. This number should not be 
too big, though, as it will result in lots of small files and low read 
performance. In general, the recommended data size in each bucket is about 1GB.
 
-See [file layouts]({{< ref "docs/concepts/file-layouts" >}}) for how files are 
divided into buckets. Also, see [rescale bucket]({{< ref 
"docs/maintenance/rescale-bucket" >}}) if you want to adjust the number of 
buckets after a table is created.
+See [file layouts]({{< ref "concepts/file-layouts" >}}) for how files are 
divided into buckets. Also, see [rescale bucket]({{< ref 
"maintenance/rescale-bucket" >}}) if you want to adjust the number of buckets 
after a table is created.
 
 ## Consistency Guarantees
 
-Table Store writers uses two-phase commit protocol to atomically commit a 
batch of records to the table. Each commit produces at most two [snapshots]({{< 
ref "docs/concepts/basic-concepts#snapshot" >}}) at commit time.
+Table Store writers uses two-phase commit protocol to atomically commit a 
batch of records to the table. Each commit produces at most two [snapshots]({{< 
ref "concepts/basic-concepts#snapshot" >}}) at commit time.
 
 For any two writers modifying a table at the same time, as long as they do not 
modify the same bucket, their commits are serializable. If they modify the same 
bucket, only snapshot isolation is guaranteed. That is, the final table state 
may be a mix of the two commits, but no changes are lost.
diff --git a/docs/content/docs/concepts/external-log-systems.md 
b/docs/content/concepts/external-log-systems.md
similarity index 89%
rename from docs/content/docs/concepts/external-log-systems.md
rename to docs/content/concepts/external-log-systems.md
index 56bb6130..345b76f5 100644
--- a/docs/content/docs/concepts/external-log-systems.md
+++ b/docs/content/concepts/external-log-systems.md
@@ -26,7 +26,7 @@ under the License.
 
 # External Log Systems
 
-Aside from [underlying table files]({{< ref 
"docs/concepts/primary-key-table#changelog-producers" >}}), changelog of Table 
Store can also be stored into or consumed from an external log system, such as 
Kafka. By specifying `log.system` table property, users can choose which 
external log system to use.
+Aside from [underlying table files]({{< ref 
"concepts/primary-key-table#changelog-producers" >}}), changelog of Table Store 
can also be stored into or consumed from an external log system, such as Kafka. 
By specifying `log.system` table property, users can choose which external log 
system to use.
 
 If an external log system is used, all records written into table files will 
also be written into the log system. Changes produced by the streaming queries 
will thus come from the log system instead of table files.
 
diff --git a/docs/content/docs/concepts/file-layouts.md 
b/docs/content/concepts/file-layouts.md
similarity index 86%
rename from docs/content/docs/concepts/file-layouts.md
rename to docs/content/concepts/file-layouts.md
index a532f6df..b5b081d9 100644
--- a/docs/content/docs/concepts/file-layouts.md
+++ b/docs/content/concepts/file-layouts.md
@@ -49,7 +49,7 @@ A manifest file is a file containing changes about LSM data 
files and changelog
 
 ## Data Files
 
-Data files are grouped by partitions and buckets. Each bucket directory 
contains an [LSM tree]({{< ref "docs/concepts/file-layouts#lsm-trees" >}}) and 
its [changelog files]({{< ref 
"docs/concepts/primary-key-table#changelog-producers" >}}).
+Data files are grouped by partitions and buckets. Each bucket directory 
contains an [LSM tree]({{< ref "concepts/file-layouts#lsm-trees" >}}) and its 
[changelog files]({{< ref "concepts/primary-key-table#changelog-producers" >}}).
 
 ## LSM Trees
 
@@ -57,13 +57,13 @@ Table Store adapts the LSM tree (log-structured merge-tree) 
as the data structur
 
 ### Sorted Runs
 
-LSM tree organizes files into several sorted runs. A sorted run consists of 
one or multiple [data files]({{< ref "docs/concepts/file-layouts#data-files" 
>}}) and each data file belongs to exactly one sorted run.
+LSM tree organizes files into several sorted runs. A sorted run consists of 
one or multiple [data files]({{< ref "concepts/file-layouts#data-files" >}}) 
and each data file belongs to exactly one sorted run.
 
 Records within a data file are sorted by their primary keys. Within a sorted 
run, ranges of primary keys of data files never overlap.
 
 {{< img src="/img/sorted-runs.png">}}
 
-As you can see, different sorted runs may have overlapping primary key ranges, 
and may even contain the same primary key. When querying the LSM tree, all 
sorted runs must be combined and all records with the same primary key must be 
merged according to the user-specified [merge engine]({{< ref 
"docs/concepts/primary-key-table#merge-engines" >}}) and the timestamp of each 
record.
+As you can see, different sorted runs may have overlapping primary key ranges, 
and may even contain the same primary key. When querying the LSM tree, all 
sorted runs must be combined and all records with the same primary key must be 
merged according to the user-specified [merge engine]({{< ref 
"concepts/primary-key-table#merge-engines" >}}) and the timestamp of each 
record.
 
 New records written into the LSM tree will be first buffered in memory. When 
the memory buffer is full, all records in memory will be sorted and flushed to 
disk. A new sorted run is now created.
 
@@ -75,4 +75,4 @@ To limit the number of sorted runs, we have to merge several 
sorted runs into on
 
 However, compaction is a resource intensive procedure which consumes a certain 
amount of CPU time and disk IO, so too frequent compaction may in turn result 
in slower writes. It is a trade-off between query and write performance. Table 
Store currently adapts a compaction strategy similar to Rocksdb's [universal 
compaction](https://github.com/facebook/rocksdb/wiki/Universal-Compaction).
 
-By default, when Table Store writers append records to the LSM tree, they'll 
also perform compactions as needed. Users can also choose to perform all 
compactions in a dedicated compaction job. See [dedicated compaction job]({{< 
ref "docs/maintenance/write-performance#dedicated-compaction-job" >}}) for more 
info.
+By default, when Table Store writers append records to the LSM tree, they'll 
also perform compactions as needed. Users can also choose to perform all 
compactions in a dedicated compaction job. See [dedicated compaction job]({{< 
ref "maintenance/write-performance#dedicated-compaction-job" >}}) for more info.
diff --git a/docs/content/docs/concepts/overview.md 
b/docs/content/concepts/overview.md
similarity index 100%
rename from docs/content/docs/concepts/overview.md
rename to docs/content/concepts/overview.md
diff --git a/docs/content/docs/concepts/primary-key-table.md 
b/docs/content/concepts/primary-key-table.md
similarity index 93%
rename from docs/content/docs/concepts/primary-key-table.md
rename to docs/content/concepts/primary-key-table.md
index c7a88200..1ae10cb4 100644
--- a/docs/content/docs/concepts/primary-key-table.md
+++ b/docs/content/concepts/primary-key-table.md
@@ -30,7 +30,7 @@ Changelog table is the default table type when creating a 
table. Users can inser
 
 Primary keys are a set of columns that are unique for each record. Table Store 
imposes an ordering of data, which means the system will sort the primary key 
within each bucket. Using this feature, users can achieve high performance by 
adding filter conditions on the primary key.
 
-By [defining primary keys]({{< ref 
"docs/how-to/creating-tables#tables-with-primary-keys" >}}) on a changelog 
table, users can access the following features.
+By [defining primary keys]({{< ref 
"how-to/creating-tables#tables-with-primary-keys" >}}) on a changelog table, 
users can access the following features.
 
 ## Merge Engines
 
@@ -39,7 +39,7 @@ When Table Store sink receives two or more records with the 
same primary keys, i
 {{< hint info >}}
 Set `table.exec.sink.upsert-materialize` to `NONE` always in Flink SQL 
TableConfig, sink upsert-materialize may
 result in strange behavior. When the input is out of order, we recommend that 
you use
-[Sequence Field]({{< ref "docs/concepts/primary-key-table#sequence-field" >}}) 
to correct disorder.
+[Sequence Field]({{< ref "concepts/primary-key-table#sequence-field" >}}) to 
correct disorder.
 {{< /hint >}}
 
 ### Deduplicate
@@ -60,7 +60,7 @@ For example, let's say Table Store receives three records:
 If the first column is the primary key. The final result will be `<1, 25.2, 
10, 'This is a book'>`.
 
 {{< hint info >}}
-For streaming queries, `partial-update` merge engine must be used together 
with `lookup` or `full-compaction` [changelog producer]({{< ref 
"docs/concepts/primary-key-table#changelog-producers" >}}).
+For streaming queries, `partial-update` merge engine must be used together 
with `lookup` or `full-compaction` [changelog producer]({{< ref 
"concepts/primary-key-table#changelog-producers" >}}).
 {{< /hint >}}
 
 {{< hint info >}}
@@ -109,12 +109,12 @@ If you allow some functions to ignore retraction 
messages, you can configure:
 `'fields.${field_name}.ignore-retract'='true'`.
 
 {{< hint info >}}
-For streaming queries, `aggregation` merge engine must be used together with 
`lookup` or `full-compaction` [changelog producer]({{< ref 
"docs/concepts/primary-key-table#changelog-producers" >}}).
+For streaming queries, `aggregation` merge engine must be used together with 
`lookup` or `full-compaction` [changelog producer]({{< ref 
"concepts/primary-key-table#changelog-producers" >}}).
 {{< /hint >}}
 
 ## Changelog Producers
 
-Streaming queries will continuously produce latest changes. These changes can 
come from the underlying table files or from an [external log system]({{< ref 
"docs/concepts/external-log-systems" >}}) like Kafka. Compared to the external 
log system, changes from table files have lower cost but higher latency 
(depending on how often snapshots are created).
+Streaming queries will continuously produce latest changes. These changes can 
come from the underlying table files or from an [external log system]({{< ref 
"concepts/external-log-systems" >}}) like Kafka. Compared to the external log 
system, changes from table files have lower cost but higher latency (depending 
on how often snapshots are created).
 
 By specifying the `changelog-producer` table property when creating the table, 
users can choose the pattern of changes produced from files.
 
@@ -138,7 +138,7 @@ To conclude, `none` changelog producers are best suited for 
consumers such as a
 
 ### Input
 
-By specifying `'changelog-producer' = 'input'`, Table Store writers rely on 
their inputs as a source of complete changelog. All input records will be saved 
in separated [changelog files]({{< ref "docs/concepts/file-layouts" >}}) and 
will be given to the consumers by Table Store sources.
+By specifying `'changelog-producer' = 'input'`, Table Store writers rely on 
their inputs as a source of complete changelog. All input records will be saved 
in separated [changelog files]({{< ref "concepts/file-layouts" >}}) and will be 
given to the consumers by Table Store sources.
 
 `input` changelog producer can be used when Table Store writers' inputs are 
complete changelog, such as from a database CDC, or generated by Flink stateful 
computation.
 
diff --git a/docs/content/docs/engines/_index.md 
b/docs/content/engines/_index.md
similarity index 100%
rename from docs/content/docs/engines/_index.md
rename to docs/content/engines/_index.md
diff --git a/docs/content/docs/engines/flink.md b/docs/content/engines/flink.md
similarity index 100%
rename from docs/content/docs/engines/flink.md
rename to docs/content/engines/flink.md
diff --git a/docs/content/docs/engines/hive.md b/docs/content/engines/hive.md
similarity index 98%
rename from docs/content/docs/engines/hive.md
rename to docs/content/engines/hive.md
index 740f485f..84ddfb3e 100644
--- a/docs/content/docs/engines/hive.md
+++ b/docs/content/engines/hive.md
@@ -80,7 +80,7 @@ By using table store Hive catalog, you can create, drop and 
insert into table st
 
 **Step 1: Prepare Table Store Hive Catalog Jar File for Flink**
 
-See [creating a catalog with Hive metastore]({{< ref 
"docs/how-to/creating-catalogs#creating-a-catalog-with-hive-metastore" >}}).
+See [creating a catalog with Hive metastore]({{< ref 
"how-to/creating-catalogs#creating-a-catalog-with-hive-metastore" >}}).
 
 **Step 2: Create Test Data with Flink SQL**
 
diff --git a/docs/content/docs/engines/overview.md 
b/docs/content/engines/overview.md
similarity index 100%
rename from docs/content/docs/engines/overview.md
rename to docs/content/engines/overview.md
diff --git a/docs/content/docs/engines/spark2.md 
b/docs/content/engines/spark2.md
similarity index 97%
rename from docs/content/docs/engines/spark2.md
rename to docs/content/engines/spark2.md
index b6decd64..4ab5a739 100644
--- a/docs/content/docs/engines/spark2.md
+++ b/docs/content/engines/spark2.md
@@ -68,7 +68,7 @@ If you are using HDFS, make sure that the environment 
variable `HADOOP_HOME` or
 
 **Step 1: Prepare Test Data**
 
-Table Store currently only supports reading tables through Spark2. To create a 
Table Store table with records, please follow our [Flink quick start guide]({{< 
ref "docs/engines/flink#quick-start" >}}).
+Table Store currently only supports reading tables through Spark2. To create a 
Table Store table with records, please follow our [Flink quick start guide]({{< 
ref "engines/flink#quick-start" >}}).
 
 After the guide, all table files should be stored under the path 
`/tmp/table_store`, or the warehouse path you've specified.
 
diff --git a/docs/content/docs/engines/spark3.md 
b/docs/content/engines/spark3.md
similarity index 100%
rename from docs/content/docs/engines/spark3.md
rename to docs/content/engines/spark3.md
diff --git a/docs/content/docs/engines/trino.md b/docs/content/engines/trino.md
similarity index 100%
rename from docs/content/docs/engines/trino.md
rename to docs/content/engines/trino.md
diff --git a/docs/content/docs/filesystems/_index.md 
b/docs/content/filesystems/_index.md
similarity index 100%
rename from docs/content/docs/filesystems/_index.md
rename to docs/content/filesystems/_index.md
diff --git a/docs/content/docs/filesystems/oss.md 
b/docs/content/filesystems/oss.md
similarity index 97%
rename from docs/content/docs/filesystems/oss.md
rename to docs/content/filesystems/oss.md
index 74a931b9..8bc14889 100644
--- a/docs/content/docs/filesystems/oss.md
+++ b/docs/content/filesystems/oss.md
@@ -99,7 +99,7 @@ SET tablestore.fs.oss.accessKeyId=xxx;
 SET tablestore.fs.oss.accessKeySecret=yyy;
 ```
 
-And read table from hive metastore, table can be created by Flink or Spark, 
see [Catalog with Hive Metastore]({{< ref "docs/how-to/creating-catalogs" >}})
+And read table from hive metastore, table can be created by Flink or Spark, 
see [Catalog with Hive Metastore]({{< ref "how-to/creating-catalogs" >}})
 ```sql
 SELECT * FROM test_table;
 SELECT COUNT(1) FROM test_table;
diff --git a/docs/content/docs/filesystems/overview.md 
b/docs/content/filesystems/overview.md
similarity index 100%
rename from docs/content/docs/filesystems/overview.md
rename to docs/content/filesystems/overview.md
diff --git a/docs/content/docs/filesystems/s3.md 
b/docs/content/filesystems/s3.md
similarity index 97%
rename from docs/content/docs/filesystems/s3.md
rename to docs/content/filesystems/s3.md
index 274fb797..f0618fad 100644
--- a/docs/content/docs/filesystems/s3.md
+++ b/docs/content/filesystems/s3.md
@@ -99,7 +99,7 @@ SET tablestore.s3.access-key=xxx;
 SET tablestore.s3.secret-key=yyy;
 ```
 
-And read table from hive metastore, table can be created by Flink or Spark, 
see [Catalog with Hive Metastore]({{< ref "docs/how-to/creating-catalogs" >}})
+And read table from hive metastore, table can be created by Flink or Spark, 
see [Catalog with Hive Metastore]({{< ref "how-to/creating-catalogs" >}})
 ```sql
 SELECT * FROM test_table;
 SELECT COUNT(1) FROM test_table;
diff --git a/docs/content/docs/how-to/_index.md b/docs/content/how-to/_index.md
similarity index 100%
rename from docs/content/docs/how-to/_index.md
rename to docs/content/how-to/_index.md
diff --git a/docs/content/docs/how-to/altering-tables.md 
b/docs/content/how-to/altering-tables.md
similarity index 100%
rename from docs/content/docs/how-to/altering-tables.md
rename to docs/content/how-to/altering-tables.md
diff --git a/docs/content/docs/how-to/creating-catalogs.md 
b/docs/content/how-to/creating-catalogs.md
similarity index 97%
rename from docs/content/docs/how-to/creating-catalogs.md
rename to docs/content/how-to/creating-catalogs.md
index 5213681d..6a9c6a09 100644
--- a/docs/content/docs/how-to/creating-catalogs.md
+++ b/docs/content/how-to/creating-catalogs.md
@@ -31,7 +31,7 @@ Table Store catalogs currently support two types of 
metastores:
 * `filesystem` metastore (default), which stores both metadata and table files 
in filesystems.
 * `hive` metastore, which additionally stores metadata in Hive metastore. 
Users can directly access the tables from Hive.
 
-See [CatalogOptions]({{< ref "docs/maintenance/configurations#catalogoptions" 
>}}) for detailed options when creating a catalog.
+See [CatalogOptions]({{< ref "maintenance/configurations#catalogoptions" >}}) 
for detailed options when creating a catalog.
 
 ## Creating a Catalog with Filesystem Metastore
 
diff --git a/docs/content/docs/how-to/creating-tables.md 
b/docs/content/how-to/creating-tables.md
similarity index 96%
rename from docs/content/docs/how-to/creating-tables.md
rename to docs/content/how-to/creating-tables.md
index 695e8f06..a83ea6e4 100644
--- a/docs/content/docs/how-to/creating-tables.md
+++ b/docs/content/how-to/creating-tables.md
@@ -28,7 +28,7 @@ under the License.
 
 ## Creating Catalog Managed Tables
 
-Tables created in Table Store [catalogs]({{< ref 
"docs/how-to/creating-catalogs" >}}) are managed by the catalog. When the table 
is dropped from catalog, its table files will also be deleted.
+Tables created in Table Store [catalogs]({{< ref "how-to/creating-catalogs" 
>}}) are managed by the catalog. When the table is dropped from catalog, its 
table files will also be deleted.
 
 The following SQL assumes that you have registered and are using a Table Store 
catalog. It creates a managed table named `MyTable` with five columns in the 
catalog's `default` database, where `dt`, `hh` and `user_id` are the primary 
keys.
 
@@ -111,7 +111,7 @@ Partition keys must be a subset of primary keys if primary 
keys are defined.
 {{< /hint >}}
 
 {{< hint info >}}
-By configuring [partition.expiration-time]({{< ref 
"docs/maintenance/manage-partition" >}}), expired partitions can be 
automatically deleted.
+By configuring [partition.expiration-time]({{< ref 
"maintenance/manage-partition" >}}), expired partitions can be automatically 
deleted.
 {{< /hint >}}
 
 ## Create Table As
@@ -263,7 +263,7 @@ CREATE TABLE MyTableLike LIKE MyTable;
 
 ### Table Properties
 
-Users can specify table properties to enable features or improve performance 
of Table Store. For a complete list of such properties, see 
[configurations]({{< ref "docs/maintenance/configurations" >}}).
+Users can specify table properties to enable features or improve performance 
of Table Store. For a complete list of such properties, see 
[configurations]({{< ref "maintenance/configurations" >}}).
 
 The following SQL creates a table named `MyTable` with five columns 
partitioned by `dt` and `hh`, where `dt`, `hh` and `user_id` are the primary 
keys. This table has two properties: `'bucket' = '2'` and `'bucket-key' = 
'user_id'`.
 
diff --git a/docs/content/docs/how-to/lookup-joins.md 
b/docs/content/how-to/lookup-joins.md
similarity index 100%
rename from docs/content/docs/how-to/lookup-joins.md
rename to docs/content/how-to/lookup-joins.md
diff --git a/docs/content/docs/how-to/querying-tables.md 
b/docs/content/how-to/querying-tables.md
similarity index 98%
rename from docs/content/docs/how-to/querying-tables.md
rename to docs/content/how-to/querying-tables.md
index 4884db2f..47106e94 100644
--- a/docs/content/docs/how-to/querying-tables.md
+++ b/docs/content/how-to/querying-tables.md
@@ -59,7 +59,7 @@ Produces the latest snapshot on the table upon first startup, 
and continues to r
 <tr>
 <td>compacted-full</td>
 <td>
-Produces the snapshot after the latest <a href="{{< ref 
"docs/concepts/file-layouts#lsm-trees#compactions" >}}">compaction</a>.
+Produces the snapshot after the latest <a href="{{< ref 
"concepts/file-layouts#lsm-trees#compactions" >}}">compaction</a>.
 </td>
 <td>
 Produces the snapshot after the latest compaction on the table upon first 
startup, and continues to read the following changes.
@@ -83,7 +83,7 @@ Produces the snapshot after the latest compaction on the 
table upon first startu
 </tbody>
 </table>
 
-Users can also adjust `changelog-producer` table property to specify the 
pattern of produced changes. See [changelog producer]({{< ref 
"docs/concepts/primary-key-table#changelog-producers" >}}) for details.
+Users can also adjust `changelog-producer` table property to specify the 
pattern of produced changes. See [changelog producer]({{< ref 
"concepts/primary-key-table#changelog-producers" >}}) for details.
 
 {{< img src="/img/scan-mode.png">}}
 
diff --git a/docs/content/docs/how-to/writing-tables.md 
b/docs/content/how-to/writing-tables.md
similarity index 99%
rename from docs/content/docs/how-to/writing-tables.md
rename to docs/content/how-to/writing-tables.md
index 15762108..13e785c1 100644
--- a/docs/content/docs/how-to/writing-tables.md
+++ b/docs/content/how-to/writing-tables.md
@@ -275,7 +275,7 @@ Table Store supports "MERGE INTO" via submitting the 
'merge-into' job through `f
 
 {{< hint info >}}
 Important table properties setting:
-1. Only [primary key table]({{< ref "docs/concepts/primary-key-table" >}}) 
supports this feature.
+1. Only [primary key table]({{< ref "concepts/primary-key-table" >}}) supports 
this feature.
 2. The action won't produce UPDATE_BEFORE, so it's not recommended to set 
'changelog-producer' = 'input'.
 {{< /hint >}}
 
diff --git a/docs/content/docs/maintenance/_index.md 
b/docs/content/maintenance/_index.md
similarity index 100%
rename from docs/content/docs/maintenance/_index.md
rename to docs/content/maintenance/_index.md
diff --git a/docs/content/docs/maintenance/configurations.md 
b/docs/content/maintenance/configurations.md
similarity index 100%
rename from docs/content/docs/maintenance/configurations.md
rename to docs/content/maintenance/configurations.md
diff --git a/docs/content/docs/maintenance/expiring-snapshots.md 
b/docs/content/maintenance/expiring-snapshots.md
similarity index 88%
rename from docs/content/docs/maintenance/expiring-snapshots.md
rename to docs/content/maintenance/expiring-snapshots.md
index 00824856..44938af1 100644
--- a/docs/content/docs/maintenance/expiring-snapshots.md
+++ b/docs/content/maintenance/expiring-snapshots.md
@@ -26,7 +26,7 @@ under the License.
 
 # Expiring Snapshots
 
-Table Store writers generates one or two [snapshots]({{< ref 
"docs/concepts/basic-concepts#snapshots" >}}) per commit. Each snapshot may add 
some new data files or mark some old data files as deleted. However, the marked 
data files are not truly deleted because Table Store also supports time 
traveling to an earlier snapshot. They are only deleted when the snapshot 
expires.
+Table Store writers generates one or two [snapshots]({{< ref 
"concepts/basic-concepts#snapshots" >}}) per commit. Each snapshot may add some 
new data files or mark some old data files as deleted. However, the marked data 
files are not truly deleted because Table Store also supports time traveling to 
an earlier snapshot. They are only deleted when the snapshot expires.
 
 Currently, expiration is automatically performed by Table Store writers when 
committing new changes. By expiring old snapshots, old data files and metadata 
files that are no longer used can be deleted to release disk space.
 
diff --git a/docs/content/docs/maintenance/manage-partition.md 
b/docs/content/maintenance/manage-partition.md
similarity index 100%
rename from docs/content/docs/maintenance/manage-partition.md
rename to docs/content/maintenance/manage-partition.md
diff --git a/docs/content/docs/maintenance/rescale-bucket.md 
b/docs/content/maintenance/rescale-bucket.md
similarity index 100%
rename from docs/content/docs/maintenance/rescale-bucket.md
rename to docs/content/maintenance/rescale-bucket.md
diff --git a/docs/content/docs/maintenance/write-performance.md 
b/docs/content/maintenance/write-performance.md
similarity index 90%
rename from docs/content/docs/maintenance/write-performance.md
rename to docs/content/maintenance/write-performance.md
index 70f527b2..f753af73 100644
--- a/docs/content/docs/maintenance/write-performance.md
+++ b/docs/content/maintenance/write-performance.md
@@ -57,9 +57,9 @@ It is recommended that the parallelism of sink should be less 
than or equal to t
 
 ### Number of Sorted Runs to Trigger Compaction
 
-Table Store uses [LSM tree]({{< ref "docs/concepts/file-layouts#lsm-trees" 
>}}) which supports a large number of updates. LSM organizes files in several 
[sorted runs]({{< ref "docs/concepts/file-layouts#lsm-trees#sorted-runs" >}}). 
When querying records from an LSM tree, all sorted runs must be combined to 
produce a complete view of all records.
+Table Store uses [LSM tree]({{< ref "concepts/file-layouts#lsm-trees" >}}) 
which supports a large number of updates. LSM organizes files in several 
[sorted runs]({{< ref "concepts/file-layouts#lsm-trees#sorted-runs" >}}). When 
querying records from an LSM tree, all sorted runs must be combined to produce 
a complete view of all records.
 
-One can easily see that too many sorted runs will result in poor query 
performance. To keep the number of sorted runs in a reasonable range, Table 
Store writers will automatically perform [compactions]({{< ref 
"docs/concepts/file-layouts#lsm-trees#compactions" >}}). The following table 
property determines the minimum number of sorted runs to trigger a compaction.
+One can easily see that too many sorted runs will result in poor query 
performance. To keep the number of sorted runs in a reasonable range, Table 
Store writers will automatically perform [compactions]({{< ref 
"concepts/file-layouts#lsm-trees#compactions" >}}). The following table 
property determines the minimum number of sorted runs to trigger a compaction.
 
 <table class="table table-bordered">
     <thead>
@@ -116,7 +116,7 @@ Write stalls will become less frequent when 
`num-sorted-run.stop-trigger` become
 By default, Table Store writers will perform compaction as needed when writing 
records. This is sufficient for most use cases, but there are two downsides:
 
 * This may result in unstable write throughput because throughput might 
temporarily drop when performing a compaction.
-* Compaction will mark some data files as "deleted" (not really deleted, see 
[expiring snapshots]({{< ref "docs/maintenance/expiring-snapshots" >}}) for 
more info). If multiple writers mark the same file a conflict will occur when 
committing the changes. Table Store will automatically resolve the conflict, 
but this may result in job restarts.
+* Compaction will mark some data files as "deleted" (not really deleted, see 
[expiring snapshots]({{< ref "maintenance/expiring-snapshots" >}}) for more 
info). If multiple writers mark the same file a conflict will occur when 
committing the changes. Table Store will automatically resolve the conflict, 
but this may result in job restarts.
 
 To avoid these downsides, users can also choose to skip compactions in 
writers, and run a dedicated job only for compaction. As compactions are 
performed only by the dedicated job, writers can continuously write records 
without pausing and no conflicts will ever occur.
 
diff --git a/docs/content/versions.md b/docs/content/versions.md
index ee89ff05..0fa4dbbd 100644
--- a/docs/content/versions.md
+++ b/docs/content/versions.md
@@ -2,6 +2,7 @@
 title: Versions 
 type: docs
 bookToc: false
+bookHidden: true
 ---
 <!--
 Licensed to the Apache Software Foundation (ASF) under one


Reply via email to