You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by hj...@apache.org on 2020/11/08 03:08:49 UTC

[pulsar] branch master updated: [docs] Merge persistent and partitioned topics content in one file (#8462)

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

hjf pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new 570d60f  [docs] Merge persistent and partitioned topics content in one file (#8462)
570d60f is described below

commit 570d60f26fe905e485ec2c3ff74cfde8963b7cdb
Author: Jennifer Huang <47...@users.noreply.github.com>
AuthorDate: Sun Nov 8 11:08:22 2020 +0800

    [docs] Merge persistent and partitioned topics content in one file (#8462)
    
    * merge persistent and partitioned topics
    
    * add a note to clarify the usage of schema
    
    * refine name file and id
    
    * update sidebar
---
 site2/docs/admin-api-partitioned-topics.md         | 426 +--------------------
 ...pi-persistent-topics.md => admin-api-topics.md} | 426 ++++++++++++++++++++-
 site2/website/sidebars.json                        |   2 +-
 3 files changed, 427 insertions(+), 427 deletions(-)

diff --git a/site2/docs/admin-api-partitioned-topics.md b/site2/docs/admin-api-partitioned-topics.md
index 8a02b46..ef01f6f 100644
--- a/site2/docs/admin-api-partitioned-topics.md
+++ b/site2/docs/admin-api-partitioned-topics.md
@@ -1,427 +1,5 @@
 ---
 id: admin-api-partitioned-topics
 title: Managing partitioned topics
-sidebar_label: Topics1
----
-
-## Manage partitioned topics
-You can use Pulsar [admin API](admin-api-overview.md) to create, update, delete and check status of partitioned topics.
-
-### Create
-
-Partitioned topics must be explicitly created. When creating a new partitioned topic, you need to provide a name and the number of partitions for the topic.
-
-By default, 60 seconds after creation, topics are considered inactive and deleted automatically to avoid generating trash data. To disable this feature, set `brokerDeleteInactiveTopicsEnabled` to `false`. To change the frequency of checking inactive topics, set `brokerDeleteInactiveTopicsFrequencySeconds` to a specific value.
-
-For more information about the two parameters, see [here](reference-configuration.md#broker).
-
-You can create partitioned topics in the following ways.
-<!--DOCUSAURUS_CODE_TABS-->
-<!--pulsar-admin-->
-When you create partitioned topics with the [`create-partitioned-topic`](reference-pulsar-admin.md#create-partitioned-topic)
-command, you need to specify the topic name as an argument and the number of partitions using the `-p` or `--partitions` flag.
-
-```shell
-$ bin/pulsar-admin topics create-partitioned-topic \
-  persistent://my-tenant/my-namespace/my-topic \
-  --partitions 4
-```
-
-> **Note**    
-> If a non-partitioned topic with the suffix '-partition-' followed by a numeric value like 'xyz-topic-partition-10', you can not create a partitioned topic with name 'xyz-topic', because the partitions of the partitioned topic could override the existing non-partitioned topic. To create such partitioned topic, you have to delete that non-partitioned topic first.
-
-<!--REST API-->
-{@inject: endpoint|PUT|/admin/v2/topics/:tenant/:namespace/:topic/partitions|operation/createPartitionedTopic}
-
-<!--Java-->
-```java
-String topicName = "persistent://my-tenant/my-namespace/my-topic";
-int numPartitions = 4;
-admin.topics().createPartitionedTopic(topicName, numPartitions);
-```
-
-<!--END_DOCUSAURUS_CODE_TABS-->
-
-### Create missed partitions
-
-When topic auto-creation is disabled, and you have a partitioned topic without any partitions, you can use the [`create-missed-partitions`](reference-pulsar-admin.md#create-missed-partitions) command to create partitions for the topic.
-
-<!--DOCUSAURUS_CODE_TABS-->
-<!--pulsar-admin-->
-You can create missed partitions with the [`create-missed-partitions`](reference-pulsar-admin.md#create-missed-partitions) command and specify the topic name as an argument.
-
-```shell
-$ bin/pulsar-admin topics create-missed-partitions \
-  persistent://my-tenant/my-namespace/my-topic \
-```
-
-<!--REST API-->
-{@inject: endpoint|POST|/admin/v2/topics/:tenant/:namespace/:topic|operation/createMissedPartitions}
-
-<!--Java-->
-```java
-String topicName = "persistent://my-tenant/my-namespace/my-topic";
-admin.topics().createMissedPartitions(topicName);
-```
-
-<!--END_DOCUSAURUS_CODE_TABS-->
-
-### Get metadata
-
-Partitioned topics are associated with metadata, you can view it as a JSON object. The following metadata field is available.
-
-Field | Description
-:-----|:-------
-`partitions` | The number of partitions into which the topic is divided.
-
-<!--DOCUSAURUS_CODE_TABS-->
-<!--pulsar-admin-->
-You can check the number of partitions in a partitioned topic with the [`get-partitioned-topic-metadata`](reference-pulsar-admin.md#get-partitioned-topic-metadata) subcommand. 
-
-```shell
-$ pulsar-admin topics get-partitioned-topic-metadata \
-  persistent://my-tenant/my-namespace/my-topic
-{
-  "partitions": 4
-}
-```
-
-<!--REST API-->
-{@inject: endpoint|GET|/admin/v2/topics/:tenant/:namespace/:topic/partitions|operation/getPartitionedMetadata}
-
-<!--Java-->
-```java
-String topicName = "persistent://my-tenant/my-namespace/my-topic";
-admin.topics().getPartitionedTopicMetadata(topicName);
-```
-
-<!--END_DOCUSAURUS_CODE_TABS-->
-
-### Update
-
-You can update the number of partitions for an existing partitioned topic *if* the topic is non-global. However, you can only add the partition number. Decrementing the number of partitions would delete the topic, which is not supported in Pulsar.
-
-Producers and consumers can find the newly created partitions automatically.
-
-<!--DOCUSAURUS_CODE_TABS-->
-<!--pulsar-admin-->
-You can update partitioned topics with the [`update-partitioned-topic`](reference-pulsar-admin.md#update-partitioned-topic) command.
-
-```shell
-$ pulsar-admin topics update-partitioned-topic \
-  persistent://my-tenant/my-namespace/my-topic \
-  --partitions 8
-```
-
-<!--REST API-->
-{@inject: endpoint|POST|/admin/v2/topics/:tenant/:cluster/:namespace/:destination/partitions|operation/updatePartitionedTopic}
-
-<!--Java-->
-```java
-admin.topics().updatePartitionedTopic(topic, numPartitions);
-```
-
-<!--END_DOCUSAURUS_CODE_TABS-->
-
-### Delete
-You can delete partitioned topics with the [`delete-partitioned-topic`](reference-pulsar-admin.md#delete-partitioned-topic) command, REST API and Java. 
-
-<!--DOCUSAURUS_CODE_TABS-->
-<!--pulsar-admin-->
-```shell
-$ bin/pulsar-admin topics delete-partitioned-topic \
-  persistent://my-tenant/my-namespace/my-topic
-```
-
-<!--REST API-->
-{@inject: endpoint|DELETE|/admin/v2/topics/:topic/:namespace/:destination/partitions|operation/deletePartitionedTopic}
-
-<!--Java-->
-```java
-admin.topics().delete(topic);
-```
-
-<!--END_DOCUSAURUS_CODE_TABS-->
-
-### List
-You can get the list of topics under a given namespace in the following ways.  
-<!--DOCUSAURUS_CODE_TABS-->
-<!--pulsar-admin-->
-```shell
-$ pulsar-admin topics list tenant/namespace
-persistent://tenant/namespace/topic1
-persistent://tenant/namespace/topic2
-```
-
-<!--REST API-->
-{@inject: endpoint|GET|/admin/v2/topics/:tenant/:namespace|operation/getPartitionedTopicList}
-
-<!--Java-->
-```java
-admin.topics().getList(namespace);
-```
-
-<!--END_DOCUSAURUS_CODE_TABS-->
-
-### Stats
-
-You can check the current statistics of a given partitioned topic. The following is an example. For description of each stats, refer to [get stats](#get-stats).
-
-```json
-{
-  "msgRateIn" : 999.992947159793,
-  "msgThroughputIn" : 1070918.4635439808,
-  "msgRateOut" : 0.0,
-  "msgThroughputOut" : 0.0,
-  "bytesInCounter" : 270318763,
-  "msgInCounter" : 252489,
-  "bytesOutCounter" : 0,
-  "msgOutCounter" : 0,
-  "averageMsgSize" : 1070.926056966454,
-  "msgChunkPublished" : false,
-  "storageSize" : 270316646,
-  "backlogSize" : 200921133,
-  "publishers" : [ {
-    "msgRateIn" : 999.992947159793,
-    "msgThroughputIn" : 1070918.4635439808,
-    "averageMsgSize" : 1070.3333333333333,
-    "chunkedMessageRate" : 0.0,
-    "producerId" : 0
-  } ],
-  "subscriptions" : {
-    "test" : {
-      "msgRateOut" : 0.0,
-      "msgThroughputOut" : 0.0,
-      "bytesOutCounter" : 0,
-      "msgOutCounter" : 0,
-      "msgRateRedeliver" : 0.0,
-      "chuckedMessageRate" : 0,
-      "msgBacklog" : 144318,
-      "msgBacklogNoDelayed" : 144318,
-      "blockedSubscriptionOnUnackedMsgs" : false,
-      "msgDelayed" : 0,
-      "unackedMessages" : 0,
-      "msgRateExpired" : 0.0,
-      "lastExpireTimestamp" : 0,
-      "lastConsumedFlowTimestamp" : 0,
-      "lastConsumedTimestamp" : 0,
-      "lastAckedTimestamp" : 0,
-      "consumers" : [ ],
-      "isDurable" : true,
-      "isReplicated" : false
-    }
-  },
-  "replication" : { },
-  "metadata" : {
-    "partitions" : 3
-  },
-  "partitions" : { }
-}
-```
-
-You can check the current statistics of a given partitioned topic and its connected producers and consumers in the following ways. 
-
-<!--DOCUSAURUS_CODE_TABS-->
-<!--pulsar-admin-->
-```shell
-$ pulsar-admin topics partitioned-stats \
-  persistent://test-tenant/namespace/topic \
-  --per-partition
-```
-
-<!--REST API-->
-{@inject: endpoint|GET|/admin/v2/topics/:tenant/:namespace/:topic/partitioned-stats|operation/getPartitionedStats}
-
-<!--Java-->
-```java
-admin.topics().getPartitionedStats(topic, true /* per partition */, false /* is precise backlog */);
-```
-
-<!--END_DOCUSAURUS_CODE_TABS-->
-
-### Internal stats
-
-You can check the detailed statistics of a topic. The following is an example. For description of each stats, refer to [get internal stats](#get-internal-stats).
-
-```json
-{
-  "entriesAddedCounter": 20449518,
-  "numberOfEntries": 3233,
-  "totalSize": 331482,
-  "currentLedgerEntries": 3233,
-  "currentLedgerSize": 331482,
-  "lastLedgerCreatedTimestamp": "2016-06-29 03:00:23.825",
-  "lastLedgerCreationFailureTimestamp": null,
-  "waitingCursorsCount": 1,
-  "pendingAddEntriesCount": 0,
-  "lastConfirmedEntry": "324711539:3232",
-  "state": "LedgerOpened",
-  "ledgers": [
-    {
-      "ledgerId": 324711539,
-      "entries": 0,
-      "size": 0
-    }
-  ],
-  "cursors": {
-    "my-subscription": {
-      "markDeletePosition": "324711539:3133",
-      "readPosition": "324711539:3233",
-      "waitingReadOp": true,
-      "pendingReadOps": 0,
-      "messagesConsumedCounter": 20449501,
-      "cursorLedger": 324702104,
-      "cursorLedgerLastEntry": 21,
-      "individuallyDeletedMessages": "[(324711539:3134‥324711539:3136], (324711539:3137‥324711539:3140], ]",
-      "lastLedgerSwitchTimestamp": "2016-06-29 01:30:19.313",
-      "state": "Open"
-    }
-  }
-}
-```
-
-You can get the internal stats for the partitioned topic in the following ways.
-
-<!--DOCUSAURUS_CODE_TABS-->
-<!--pulsar-admin-->
-```shell
-$ pulsar-admin topics stats-internal \
-  persistent://test-tenant/namespace/topic
-```
-
-<!--REST API-->
-{@inject: endpoint|GET|/admin/v2/topics/:tenant/:namespace/:topic/internalStats|operation/getInternalStats}
-
-<!--Java-->
-```java
-admin.topics().getInternalStats(topic);
-```
-
-<!--END_DOCUSAURUS_CODE_TABS-->
-
-## Manage non-partitioned topics
-You can use Pulsar [admin API](admin-api-overview.md) to create, delete and check status of non-partitioned topics.
-
-### Create
-Non-partitioned topics must be explicitly created. When creating a new non-partitioned topic, you need to provide a name for the topic.
-
-By default, 60 seconds after creation, topics are considered inactive and deleted automatically to avoid generating trash data. To disable this feature, set `brokerDeleteInactiveTopicsEnabled` to `false`. To change the frequency of checking inactive topics, set `brokerDeleteInactiveTopicsFrequencySeconds` to a specific value.
-
-For more information about the two parameters, see [here](reference-configuration.md#broker).
-
-You can create non-partitioned topics in the following ways.
-<!--DOCUSAURUS_CODE_TABS-->
-<!--pulsar-admin-->
-When you create non-partitioned topics with the [`create`](reference-pulsar-admin.md#create-3) command, you need to specify the topic name as an argument.
-
-```shell
-$ bin/pulsar-admin topics create \
-  persistent://my-tenant/my-namespace/my-topic
-```
-> **Note**    
-> When you create a non-partitioned topic with the suffix '-partition-' followed by numeric value like 'xyz-topic-partition-x' for the topic name, if a partitioned topic with same suffix 'xyz-topic-partition-y' exists, then the numeric value(x) for the non-partitioned topic must be larger than the number of partitions(y) of the partitioned topic. Otherwise, you cannot create such a non-partitioned topic. 
-
-<!--REST API-->
-{@inject: endpoint|PUT|/admin/v2/topics/:tenant/:namespace/:topic|operation/createNonPartitionedTopic}
-
-<!--Java-->
-```java
-String topicName = "persistent://my-tenant/my-namespace/my-topic";
-admin.topics().createNonPartitionedTopic(topicName);
-```
-
-<!--END_DOCUSAURUS_CODE_TABS-->
-
-### Delete
-You can delete non-partitioned topics in the following ways.
-<!--DOCUSAURUS_CODE_TABS-->
-<!--pulsar-admin-->
-```shell
-$ bin/pulsar-admin topics delete \
-  persistent://my-tenant/my-namespace/my-topic
-```
-
-<!--REST API-->
-{@inject: endpoint|DELETE|/admin/v2/topics/:tenant/:namespace/:topic|operation/deleteTopic}
-
-<!--Java-->
-```java
-admin.topics().delete(topic);
-```
-
-<!--END_DOCUSAURUS_CODE_TABS-->
-
-### List
-
-You can get the list of topics under a given namespace in the following ways.  
-<!--DOCUSAURUS_CODE_TABS-->
-<!--pulsar-admin-->
-```shell
-$ pulsar-admin topics list tenant/namespace
-persistent://tenant/namespace/topic1
-persistent://tenant/namespace/topic2
-```
-
-<!--REST API-->
-{@inject: endpoint|GET|/admin/v2/topics/:tenant/:namespace|operation/getList}
-
-<!--Java-->
-```java
-admin.topics().getList(namespace);
-```
-
-<!--END_DOCUSAURUS_CODE_TABS-->
-
-### Stats
-
-You can check the current statistics of a given topic. The following is an example. For description of each stats, refer to [get stats](#get-stats).
-
-```json
-{
-  "msgRateIn": 4641.528542257553,
-  "msgThroughputIn": 44663039.74947473,
-  "msgRateOut": 0,
-  "msgThroughputOut": 0,
-  "averageMsgSize": 1232439.816728665,
-  "storageSize": 135532389160,
-  "publishers": [
-    {
-      "msgRateIn": 57.855383881403576,
-      "msgThroughputIn": 558994.7078932219,
-      "averageMsgSize": 613135,
-      "producerId": 0,
-      "producerName": null,
-      "address": null,
-      "connectedSince": null
-    }
-  ],
-  "subscriptions": {
-    "my-topic_subscription": {
-      "msgRateOut": 0,
-      "msgThroughputOut": 0,
-      "msgBacklog": 116632,
-      "type": null,
-      "msgRateExpired": 36.98245516804671,
-      "consumers": []
-    }
-  },
-  "replication": {}
-}
-```
-You can check the current statistics of a given topic and its connected producers and consumers in the following ways.
-<!--DOCUSAURUS_CODE_TABS-->
-<!--pulsar-admin-->
-```shell
-$ pulsar-admin topics stats \
-  persistent://test-tenant/namespace/topic \
-  --get-precise-backlog
-```
-
-<!--REST API-->
-{@inject: endpoint|GET|/admin/v2/topics/:tenant/:namespace/:topic/stats|operation/getStats}
-
-<!--Java-->
-```java
-admin.topics().getStats(topic, false /* is precise backlog */);
-```
-<!--END_DOCUSAURUS_CODE_TABS-->
\ No newline at end of file
+sidebar_label: Partitioned topics
+---
\ No newline at end of file
diff --git a/site2/docs/admin-api-persistent-topics.md b/site2/docs/admin-api-topics.md
similarity index 61%
rename from site2/docs/admin-api-persistent-topics.md
rename to site2/docs/admin-api-topics.md
index ea64967..3c14e92 100644
--- a/site2/docs/admin-api-persistent-topics.md
+++ b/site2/docs/admin-api-topics.md
@@ -1,5 +1,5 @@
 ---
-id: admin-api-persistent-topics
+id: admin-api-topics
 title: Manage topics
 sidebar_label: Topics
 ---
@@ -18,6 +18,10 @@ non-persistent://tenant/namespace/topic
 ## Manage topic resources
 Whether it is persistent or non-persistent topic, you can obtain the topic resources through `pulsar-admin` tool, REST API and Java.
 
+> **Note**    
+> In REST API, `:schema` stands for persistent or non-persistent. `:tenant`, `:namespace`, `:x` are variables, replace them with the real tenant, namespace, and `x` names when using them.     
+> Take {@inject: endpoint|GET|/admin/v2/:schema/:tenant/:namespace|operation/getList} as an example, to get the list of persistent topics in REST API, use `https://pulsar.apache.org/admin/v2/persistent/my-tenant/my-namespace`. To get the list of non-persistent topics in REST API, use `https://pulsar.apache.org/admin/v2/non-persistent/my-tenant/my-namespace`.
+
 ### List of topics
 
 You can get the list of topics under a given namespace in the following ways.
@@ -696,5 +700,423 @@ admin.topics().getLastMessage(topic);
 <!--END_DOCUSAURUS_CODE_TABS-->
 
 ## Manage partitioned topics
+You can use Pulsar [admin API](admin-api-overview.md) to create, update, delete and check status of partitioned topics.
+
+### Create
+
+Partitioned topics must be explicitly created. When creating a new partitioned topic, you need to provide a name and the number of partitions for the topic.
+
+By default, 60 seconds after creation, topics are considered inactive and deleted automatically to avoid generating trash data. To disable this feature, set `brokerDeleteInactiveTopicsEnabled` to `false`. To change the frequency of checking inactive topics, set `brokerDeleteInactiveTopicsFrequencySeconds` to a specific value.
+
+For more information about the two parameters, see [here](reference-configuration.md#broker).
+
+You can create partitioned topics in the following ways.
+<!--DOCUSAURUS_CODE_TABS-->
+<!--pulsar-admin-->
+When you create partitioned topics with the [`create-partitioned-topic`](reference-pulsar-admin.md#create-partitioned-topic)
+command, you need to specify the topic name as an argument and the number of partitions using the `-p` or `--partitions` flag.
+
+```shell
+$ bin/pulsar-admin topics create-partitioned-topic \
+  persistent://my-tenant/my-namespace/my-topic \
+  --partitions 4
+```
+
+> **Note**    
+> If a non-partitioned topic with the suffix '-partition-' followed by a numeric value like 'xyz-topic-partition-10', you can not create a partitioned topic with name 'xyz-topic', because the partitions of the partitioned topic could override the existing non-partitioned topic. To create such partitioned topic, you have to delete that non-partitioned topic first.
+
+<!--REST API-->
+{@inject: endpoint|PUT|/admin/v2/:schema/:tenant/:namespace/:topic/partitions|operation/createPartitionedTopic}
+
+<!--Java-->
+```java
+String topicName = "persistent://my-tenant/my-namespace/my-topic";
+int numPartitions = 4;
+admin.topics().createPartitionedTopic(topicName, numPartitions);
+```
+
+<!--END_DOCUSAURUS_CODE_TABS-->
+
+### Create missed partitions
+
+When topic auto-creation is disabled, and you have a partitioned topic without any partitions, you can use the [`create-missed-partitions`](reference-pulsar-admin.md#create-missed-partitions) command to create partitions for the topic.
+
+<!--DOCUSAURUS_CODE_TABS-->
+<!--pulsar-admin-->
+You can create missed partitions with the [`create-missed-partitions`](reference-pulsar-admin.md#create-missed-partitions) command and specify the topic name as an argument.
+
+```shell
+$ bin/pulsar-admin topics create-missed-partitions \
+  persistent://my-tenant/my-namespace/my-topic \
+```
+
+<!--REST API-->
+{@inject: endpoint|POST|/admin/v2/:schema/:tenant/:namespace/:topic|operation/createMissedPartitions}
+
+<!--Java-->
+```java
+String topicName = "persistent://my-tenant/my-namespace/my-topic";
+admin.topics().createMissedPartitions(topicName);
+```
+
+<!--END_DOCUSAURUS_CODE_TABS-->
+
+### Get metadata
+
+Partitioned topics are associated with metadata, you can view it as a JSON object. The following metadata field is available.
+
+Field | Description
+:-----|:-------
+`partitions` | The number of partitions into which the topic is divided.
+
+<!--DOCUSAURUS_CODE_TABS-->
+<!--pulsar-admin-->
+You can check the number of partitions in a partitioned topic with the [`get-partitioned-topic-metadata`](reference-pulsar-admin.md#get-partitioned-topic-metadata) subcommand. 
+
+```shell
+$ pulsar-admin topics get-partitioned-topic-metadata \
+  persistent://my-tenant/my-namespace/my-topic
+{
+  "partitions": 4
+}
+```
+
+<!--REST API-->
+{@inject: endpoint|GET|/admin/v2/:schema/:tenant/:namespace/:topic/partitions|operation/getPartitionedMetadata}
+
+<!--Java-->
+```java
+String topicName = "persistent://my-tenant/my-namespace/my-topic";
+admin.topics().getPartitionedTopicMetadata(topicName);
+```
+
+<!--END_DOCUSAURUS_CODE_TABS-->
+
+### Update
+
+You can update the number of partitions for an existing partitioned topic *if* the topic is non-global. However, you can only add the partition number. Decrementing the number of partitions would delete the topic, which is not supported in Pulsar.
+
+Producers and consumers can find the newly created partitions automatically.
+
+<!--DOCUSAURUS_CODE_TABS-->
+<!--pulsar-admin-->
+You can update partitioned topics with the [`update-partitioned-topic`](reference-pulsar-admin.md#update-partitioned-topic) command.
+
+```shell
+$ pulsar-admin topics update-partitioned-topic \
+  persistent://my-tenant/my-namespace/my-topic \
+  --partitions 8
+```
+
+<!--REST API-->
+{@inject: endpoint|POST|/admin/v2/:schema/:tenant/:cluster/:namespace/:destination/partitions|operation/updatePartitionedTopic}
+
+<!--Java-->
+```java
+admin.topics().updatePartitionedTopic(topic, numPartitions);
+```
+
+<!--END_DOCUSAURUS_CODE_TABS-->
+
+### Delete
+You can delete partitioned topics with the [`delete-partitioned-topic`](reference-pulsar-admin.md#delete-partitioned-topic) command, REST API and Java. 
+
+<!--DOCUSAURUS_CODE_TABS-->
+<!--pulsar-admin-->
+```shell
+$ bin/pulsar-admin topics delete-partitioned-topic \
+  persistent://my-tenant/my-namespace/my-topic
+```
+
+<!--REST API-->
+{@inject: endpoint|DELETE|/admin/v2/:schema/:topic/:namespace/:destination/partitions|operation/deletePartitionedTopic}
+
+<!--Java-->
+```java
+admin.topics().delete(topic);
+```
+
+<!--END_DOCUSAURUS_CODE_TABS-->
+
+### List
+You can get the list of topics under a given namespace in the following ways.  
+<!--DOCUSAURUS_CODE_TABS-->
+<!--pulsar-admin-->
+```shell
+$ pulsar-admin topics list tenant/namespace
+persistent://tenant/namespace/topic1
+persistent://tenant/namespace/topic2
+```
+
+<!--REST API-->
+{@inject: endpoint|GET|/admin/v2/:schema/:tenant/:namespace|operation/getPartitionedTopicList}
+
+<!--Java-->
+```java
+admin.topics().getList(namespace);
+```
+
+<!--END_DOCUSAURUS_CODE_TABS-->
+
+### Stats
+
+You can check the current statistics of a given partitioned topic. The following is an example. For description of each stats, refer to [get stats](#get-stats).
+
+```json
+{
+  "msgRateIn" : 999.992947159793,
+  "msgThroughputIn" : 1070918.4635439808,
+  "msgRateOut" : 0.0,
+  "msgThroughputOut" : 0.0,
+  "bytesInCounter" : 270318763,
+  "msgInCounter" : 252489,
+  "bytesOutCounter" : 0,
+  "msgOutCounter" : 0,
+  "averageMsgSize" : 1070.926056966454,
+  "msgChunkPublished" : false,
+  "storageSize" : 270316646,
+  "backlogSize" : 200921133,
+  "publishers" : [ {
+    "msgRateIn" : 999.992947159793,
+    "msgThroughputIn" : 1070918.4635439808,
+    "averageMsgSize" : 1070.3333333333333,
+    "chunkedMessageRate" : 0.0,
+    "producerId" : 0
+  } ],
+  "subscriptions" : {
+    "test" : {
+      "msgRateOut" : 0.0,
+      "msgThroughputOut" : 0.0,
+      "bytesOutCounter" : 0,
+      "msgOutCounter" : 0,
+      "msgRateRedeliver" : 0.0,
+      "chuckedMessageRate" : 0,
+      "msgBacklog" : 144318,
+      "msgBacklogNoDelayed" : 144318,
+      "blockedSubscriptionOnUnackedMsgs" : false,
+      "msgDelayed" : 0,
+      "unackedMessages" : 0,
+      "msgRateExpired" : 0.0,
+      "lastExpireTimestamp" : 0,
+      "lastConsumedFlowTimestamp" : 0,
+      "lastConsumedTimestamp" : 0,
+      "lastAckedTimestamp" : 0,
+      "consumers" : [ ],
+      "isDurable" : true,
+      "isReplicated" : false
+    }
+  },
+  "replication" : { },
+  "metadata" : {
+    "partitions" : 3
+  },
+  "partitions" : { }
+}
+```
+
+You can check the current statistics of a given partitioned topic and its connected producers and consumers in the following ways. 
+
+<!--DOCUSAURUS_CODE_TABS-->
+<!--pulsar-admin-->
+```shell
+$ pulsar-admin topics partitioned-stats \
+  persistent://test-tenant/namespace/topic \
+  --per-partition
+```
+
+<!--REST API-->
+{@inject: endpoint|GET|/admin/v2/:schema/:tenant/:namespace/:topic/partitioned-stats|operation/getPartitionedStats}
+
+<!--Java-->
+```java
+admin.topics().getPartitionedStats(topic, true /* per partition */, false /* is precise backlog */);
+```
+
+<!--END_DOCUSAURUS_CODE_TABS-->
+
+### Internal stats
+
+You can check the detailed statistics of a topic. The following is an example. For description of each stats, refer to [get internal stats](#get-internal-stats).
+
+```json
+{
+  "entriesAddedCounter": 20449518,
+  "numberOfEntries": 3233,
+  "totalSize": 331482,
+  "currentLedgerEntries": 3233,
+  "currentLedgerSize": 331482,
+  "lastLedgerCreatedTimestamp": "2016-06-29 03:00:23.825",
+  "lastLedgerCreationFailureTimestamp": null,
+  "waitingCursorsCount": 1,
+  "pendingAddEntriesCount": 0,
+  "lastConfirmedEntry": "324711539:3232",
+  "state": "LedgerOpened",
+  "ledgers": [
+    {
+      "ledgerId": 324711539,
+      "entries": 0,
+      "size": 0
+    }
+  ],
+  "cursors": {
+    "my-subscription": {
+      "markDeletePosition": "324711539:3133",
+      "readPosition": "324711539:3233",
+      "waitingReadOp": true,
+      "pendingReadOps": 0,
+      "messagesConsumedCounter": 20449501,
+      "cursorLedger": 324702104,
+      "cursorLedgerLastEntry": 21,
+      "individuallyDeletedMessages": "[(324711539:3134‥324711539:3136], (324711539:3137‥324711539:3140], ]",
+      "lastLedgerSwitchTimestamp": "2016-06-29 01:30:19.313",
+      "state": "Open"
+    }
+  }
+}
+```
+
+You can get the internal stats for the partitioned topic in the following ways.
+
+<!--DOCUSAURUS_CODE_TABS-->
+<!--pulsar-admin-->
+```shell
+$ pulsar-admin topics stats-internal \
+  persistent://test-tenant/namespace/topic
+```
+
+<!--REST API-->
+{@inject: endpoint|GET|/admin/v2/:schema/:tenant/:namespace/:topic/internalStats|operation/getInternalStats}
+
+<!--Java-->
+```java
+admin.topics().getInternalStats(topic);
+```
+
+<!--END_DOCUSAURUS_CODE_TABS-->
+
+## Manage non-partitioned topics
+You can use Pulsar [admin API](admin-api-overview.md) to create, delete and check status of non-partitioned topics.
+
+### Create
+Non-partitioned topics must be explicitly created. When creating a new non-partitioned topic, you need to provide a name for the topic.
+
+By default, 60 seconds after creation, topics are considered inactive and deleted automatically to avoid generating trash data. To disable this feature, set `brokerDeleteInactiveTopicsEnabled` to `false`. To change the frequency of checking inactive topics, set `brokerDeleteInactiveTopicsFrequencySeconds` to a specific value.
+
+For more information about the two parameters, see [here](reference-configuration.md#broker).
+
+You can create non-partitioned topics in the following ways.
+<!--DOCUSAURUS_CODE_TABS-->
+<!--pulsar-admin-->
+When you create non-partitioned topics with the [`create`](reference-pulsar-admin.md#create-3) command, you need to specify the topic name as an argument.
+
+```shell
+$ bin/pulsar-admin topics create \
+  persistent://my-tenant/my-namespace/my-topic
+```
+> **Note**    
+> When you create a non-partitioned topic with the suffix '-partition-' followed by numeric value like 'xyz-topic-partition-x' for the topic name, if a partitioned topic with same suffix 'xyz-topic-partition-y' exists, then the numeric value(x) for the non-partitioned topic must be larger than the number of partitions(y) of the partitioned topic. Otherwise, you cannot create such a non-partitioned topic. 
+
+<!--REST API-->
+{@inject: endpoint|PUT|/admin/v2/:schema/:tenant/:namespace/:topic|operation/createNonPartitionedTopic}
+
+<!--Java-->
+```java
+String topicName = "persistent://my-tenant/my-namespace/my-topic";
+admin.topics().createNonPartitionedTopic(topicName);
+```
+
+<!--END_DOCUSAURUS_CODE_TABS-->
+
+### Delete
+You can delete non-partitioned topics in the following ways.
+<!--DOCUSAURUS_CODE_TABS-->
+<!--pulsar-admin-->
+```shell
+$ bin/pulsar-admin topics delete \
+  persistent://my-tenant/my-namespace/my-topic
+```
+
+<!--REST API-->
+{@inject: endpoint|DELETE|/admin/v2/:schema/:tenant/:namespace/:topic|operation/deleteTopic}
+
+<!--Java-->
+```java
+admin.topics().delete(topic);
+```
+
+<!--END_DOCUSAURUS_CODE_TABS-->
 
-## Manage non-partitioned topics
\ No newline at end of file
+### List
+
+You can get the list of topics under a given namespace in the following ways.  
+<!--DOCUSAURUS_CODE_TABS-->
+<!--pulsar-admin-->
+```shell
+$ pulsar-admin topics list tenant/namespace
+persistent://tenant/namespace/topic1
+persistent://tenant/namespace/topic2
+```
+
+<!--REST API-->
+{@inject: endpoint|GET|/admin/v2/:schema/:tenant/:namespace|operation/getList}
+
+<!--Java-->
+```java
+admin.topics().getList(namespace);
+```
+
+<!--END_DOCUSAURUS_CODE_TABS-->
+
+### Stats
+
+You can check the current statistics of a given topic. The following is an example. For description of each stats, refer to [get stats](#get-stats).
+
+```json
+{
+  "msgRateIn": 4641.528542257553,
+  "msgThroughputIn": 44663039.74947473,
+  "msgRateOut": 0,
+  "msgThroughputOut": 0,
+  "averageMsgSize": 1232439.816728665,
+  "storageSize": 135532389160,
+  "publishers": [
+    {
+      "msgRateIn": 57.855383881403576,
+      "msgThroughputIn": 558994.7078932219,
+      "averageMsgSize": 613135,
+      "producerId": 0,
+      "producerName": null,
+      "address": null,
+      "connectedSince": null
+    }
+  ],
+  "subscriptions": {
+    "my-topic_subscription": {
+      "msgRateOut": 0,
+      "msgThroughputOut": 0,
+      "msgBacklog": 116632,
+      "type": null,
+      "msgRateExpired": 36.98245516804671,
+      "consumers": []
+    }
+  },
+  "replication": {}
+}
+```
+You can check the current statistics of a given topic and its connected producers and consumers in the following ways.
+<!--DOCUSAURUS_CODE_TABS-->
+<!--pulsar-admin-->
+```shell
+$ pulsar-admin topics stats \
+  persistent://test-tenant/namespace/topic \
+  --get-precise-backlog
+```
+
+<!--REST API-->
+{@inject: endpoint|GET|/admin/v2/:schema/:tenant/:namespace/:topic/stats|operation/getStats}
+
+<!--Java-->
+```java
+admin.topics().getStats(topic, false /* is precise backlog */);
+```
+<!--END_DOCUSAURUS_CODE_TABS-->
\ No newline at end of file
diff --git a/site2/website/sidebars.json b/site2/website/sidebars.json
index 023ac96..1a26530 100644
--- a/site2/website/sidebars.json
+++ b/site2/website/sidebars.json
@@ -116,7 +116,7 @@
       "admin-api-brokers",
       "admin-api-namespaces",
       "admin-api-permissions",
-      "admin-api-persistent-topics",
+      "admin-api-topics",
       "admin-api-schemas",
       "admin-api-functions"
     ],