writer-jill commented on code in PR #14589:
URL: https://github.com/apache/druid/pull/14589#discussion_r1276496155


##########
docs/api-reference/json-querying-api.md:
##########
@@ -23,14 +23,880 @@ sidebar_label: JSON querying
   ~ under the License.
   -->
 
-This document describes the API endpoints to submit JSON-based [native 
queries](../querying/querying.md) to Apache Druid.
+This topic describes the API endpoints to submit JSON-based [native 
queries](../querying/querying.md) to Apache Druid.
 
-## Queries
+In this topic, `http://SERVICE_IP:SERVICE_PORT` is a placeholder for the 
server address of deployment and the service port. For example, on the 
quickstart configuration, replace `http://ROUTER_IP:ROUTER_PORT` with 
`http://localhost:8888`.
 
-`POST /druid/v2/`
 
-The endpoint for submitting queries. Accepts an option `?pretty` that pretty 
prints the results.
+## Submit a query
 
-`POST /druid/v2/candidates/`
+Submits a JSON-based native query. 
 
-Returns segment information lists including server locations for the given 
query.
\ No newline at end of file
+Queries are composed of various JSON properties and Druid has different types 
of queries for different use cases. The possible types of queries are: 
`timeseries`, `topN`, `groupBy`, `timeBoundaries`, `segmentMetadata`, 
`datasourceMetadata`, `scan`, and `search`. For guidance on constructing the 
requests and choosing query types, see [available native 
queries](../querying/querying.md#available-queries).
+
+### URL
+
+<code class="postAPI">POST</code> <code>/druid/v2/</code>
+
+### Query parameters
+
+* `pretty` (optional)
+  * Druid returns the response in a pretty-printed format using indentation 
and line breaks.
+
+### Responses
+
+<!--DOCUSAURUS_CODE_TABS-->
+
+<!--200 SUCCESS-->
+
+<br/>
+
+*Successfully submitted query* 
+
+<!--400 BAD REQUEST-->
+
+<br/>
+
+*Error thrown due to bad query. Returns a JSON object detailing the error with 
the following format:*
+
+```json
+{
+    "error": "A well-defined error code.",
+    "errorMessage": "A message with additional details about the error.",
+    "errorClass": "Class of exception that caused this error.",
+    "host": "The host on which the error occurred."
+}
+```
+For more information on possible error messages, see [query execution 
failures](../querying/querying.md#query-execution-failures).
+
+<!--END_DOCUSAURUS_CODE_TABS-->
+
+---
+
+### Sample request: `topN` query

Review Comment:
   ```suggestion
   ### Sample request: `topN`
   ```



##########
docs/api-reference/json-querying-api.md:
##########
@@ -23,14 +23,880 @@ sidebar_label: JSON querying
   ~ under the License.
   -->
 
-This document describes the API endpoints to submit JSON-based [native 
queries](../querying/querying.md) to Apache Druid.
+This topic describes the API endpoints to submit JSON-based [native 
queries](../querying/querying.md) to Apache Druid.
 
-## Queries
+In this topic, `http://SERVICE_IP:SERVICE_PORT` is a placeholder for the 
server address of deployment and the service port. For example, on the 
quickstart configuration, replace `http://ROUTER_IP:ROUTER_PORT` with 
`http://localhost:8888`.
 
-`POST /druid/v2/`
 
-The endpoint for submitting queries. Accepts an option `?pretty` that pretty 
prints the results.
+## Submit a query
 
-`POST /druid/v2/candidates/`
+Submits a JSON-based native query. 
 
-Returns segment information lists including server locations for the given 
query.
\ No newline at end of file
+Queries are composed of various JSON properties and Druid has different types 
of queries for different use cases. The possible types of queries are: 
`timeseries`, `topN`, `groupBy`, `timeBoundaries`, `segmentMetadata`, 
`datasourceMetadata`, `scan`, and `search`. For guidance on constructing the 
requests and choosing query types, see [available native 
queries](../querying/querying.md#available-queries).
+
+### URL
+
+<code class="postAPI">POST</code> <code>/druid/v2/</code>
+
+### Query parameters
+
+* `pretty` (optional)
+  * Druid returns the response in a pretty-printed format using indentation 
and line breaks.
+
+### Responses
+
+<!--DOCUSAURUS_CODE_TABS-->
+
+<!--200 SUCCESS-->
+
+<br/>
+
+*Successfully submitted query* 
+
+<!--400 BAD REQUEST-->
+
+<br/>
+
+*Error thrown due to bad query. Returns a JSON object detailing the error with 
the following format:*
+
+```json
+{
+    "error": "A well-defined error code.",
+    "errorMessage": "A message with additional details about the error.",
+    "errorClass": "Class of exception that caused this error.",
+    "host": "The host on which the error occurred."
+}
+```
+For more information on possible error messages, see [query execution 
failures](../querying/querying.md#query-execution-failures).
+
+<!--END_DOCUSAURUS_CODE_TABS-->
+
+---
+
+### Sample request: `topN` query
+
+The following example submits a JSON query of the `topN` type to retrieve a 
ranked list of users and their post views. 
+
+<!--DOCUSAURUS_CODE_TABS-->
+
+<!--cURL-->
+
+```shell
+curl "http://ROUTER_IP:ROUTER_PORT/druid/v2?pretty=null"; \
+--header 'Content-Type: application/json' \
+--data '{
+  "queryType": "topN",
+  "dataSource": "social_media",
+  "dimension": "username",
+  "threshold": 5,
+  "metric": "views",
+  "granularity": "all",
+  "aggregations": [
+    {
+      "type": "longSum",
+      "name": "views",
+      "fieldName": "views"
+    }
+  ],
+  "intervals": [
+    "2022-01-01T00:00:00.000/2024-01-01T00:00:00.000"
+  ]
+}'
+```
+<!--HTTP-->
+
+```HTTP
+POST /druid/v2?pretty=null HTTP/1.1
+Host: http://ROUTER_IP:ROUTER_PORT
+Content-Type: application/json
+Content-Length: 336
+
+{
+  "queryType": "topN",
+  "dataSource": "social_media",
+  "dimension": "username",
+  "threshold": 5,
+  "metric": "views",
+  "granularity": "all",
+  "aggregations": [
+    {
+      "type": "longSum",
+      "name": "views",
+      "fieldName": "views"
+    }
+  ],
+  "intervals": [
+    "2022-01-01T00:00:00.000/2024-01-01T00:00:00.000"
+  ]
+}
+```
+
+<!--END_DOCUSAURUS_CODE_TABS-->
+
+### Sample response: `topN` query
+
+<details>
+  <summary>Click to show sample response</summary>
+
+  ```json
+[
+    {
+        "timestamp": "2023-07-03T18:49:54.848Z",
+        "result": [
+            {
+                "views": 11591218026,
+                "username": "gus"
+            },
+            {
+                "views": 11578638578,
+                "username": "miette"
+            },
+            {
+                "views": 11561618880,
+                "username": "leon"
+            },
+            {
+                "views": 11552609824,
+                "username": "mia"
+            },
+            {
+                "views": 11551537517,
+                "username": "milton"
+            }
+        ]
+    }
+]
+  ```
+</details>
+
+### Sample request: `groupBy` query

Review Comment:
   ```suggestion
   ### Sample request: `groupBy`
   ```



##########
docs/api-reference/json-querying-api.md:
##########
@@ -23,14 +23,880 @@ sidebar_label: JSON querying
   ~ under the License.
   -->
 
-This document describes the API endpoints to submit JSON-based [native 
queries](../querying/querying.md) to Apache Druid.
+This topic describes the API endpoints to submit JSON-based [native 
queries](../querying/querying.md) to Apache Druid.
 
-## Queries
+In this topic, `http://SERVICE_IP:SERVICE_PORT` is a placeholder for the 
server address of deployment and the service port. For example, on the 
quickstart configuration, replace `http://ROUTER_IP:ROUTER_PORT` with 
`http://localhost:8888`.
 
-`POST /druid/v2/`
 
-The endpoint for submitting queries. Accepts an option `?pretty` that pretty 
prints the results.
+## Submit a query
 
-`POST /druid/v2/candidates/`
+Submits a JSON-based native query. 
 
-Returns segment information lists including server locations for the given 
query.
\ No newline at end of file
+Queries are composed of various JSON properties and Druid has different types 
of queries for different use cases. The possible types of queries are: 
`timeseries`, `topN`, `groupBy`, `timeBoundaries`, `segmentMetadata`, 
`datasourceMetadata`, `scan`, and `search`. For guidance on constructing the 
requests and choosing query types, see [available native 
queries](../querying/querying.md#available-queries).
+
+### URL
+
+<code class="postAPI">POST</code> <code>/druid/v2/</code>
+
+### Query parameters
+
+* `pretty` (optional)
+  * Druid returns the response in a pretty-printed format using indentation 
and line breaks.
+
+### Responses
+
+<!--DOCUSAURUS_CODE_TABS-->
+
+<!--200 SUCCESS-->
+
+<br/>
+
+*Successfully submitted query* 
+
+<!--400 BAD REQUEST-->
+
+<br/>
+
+*Error thrown due to bad query. Returns a JSON object detailing the error with 
the following format:*
+
+```json
+{
+    "error": "A well-defined error code.",
+    "errorMessage": "A message with additional details about the error.",
+    "errorClass": "Class of exception that caused this error.",
+    "host": "The host on which the error occurred."
+}
+```
+For more information on possible error messages, see [query execution 
failures](../querying/querying.md#query-execution-failures).
+
+<!--END_DOCUSAURUS_CODE_TABS-->
+
+---
+
+### Sample request: `topN` query
+
+The following example submits a JSON query of the `topN` type to retrieve a 
ranked list of users and their post views. 
+
+<!--DOCUSAURUS_CODE_TABS-->
+
+<!--cURL-->
+
+```shell
+curl "http://ROUTER_IP:ROUTER_PORT/druid/v2?pretty=null"; \
+--header 'Content-Type: application/json' \
+--data '{
+  "queryType": "topN",
+  "dataSource": "social_media",
+  "dimension": "username",
+  "threshold": 5,
+  "metric": "views",
+  "granularity": "all",
+  "aggregations": [
+    {
+      "type": "longSum",
+      "name": "views",
+      "fieldName": "views"
+    }
+  ],
+  "intervals": [
+    "2022-01-01T00:00:00.000/2024-01-01T00:00:00.000"
+  ]
+}'
+```
+<!--HTTP-->
+
+```HTTP
+POST /druid/v2?pretty=null HTTP/1.1
+Host: http://ROUTER_IP:ROUTER_PORT
+Content-Type: application/json
+Content-Length: 336
+
+{
+  "queryType": "topN",
+  "dataSource": "social_media",
+  "dimension": "username",
+  "threshold": 5,
+  "metric": "views",
+  "granularity": "all",
+  "aggregations": [
+    {
+      "type": "longSum",
+      "name": "views",
+      "fieldName": "views"
+    }
+  ],
+  "intervals": [
+    "2022-01-01T00:00:00.000/2024-01-01T00:00:00.000"
+  ]
+}
+```
+
+<!--END_DOCUSAURUS_CODE_TABS-->
+
+### Sample response: `topN` query

Review Comment:
   ```suggestion
   ### Sample response: `topN`
   ```



##########
docs/api-reference/json-querying-api.md:
##########
@@ -23,14 +23,880 @@ sidebar_label: JSON querying
   ~ under the License.
   -->
 
-This document describes the API endpoints to submit JSON-based [native 
queries](../querying/querying.md) to Apache Druid.
+This topic describes the API endpoints to submit JSON-based [native 
queries](../querying/querying.md) to Apache Druid.
 
-## Queries
+In this topic, `http://SERVICE_IP:SERVICE_PORT` is a placeholder for the 
server address of deployment and the service port. For example, on the 
quickstart configuration, replace `http://ROUTER_IP:ROUTER_PORT` with 
`http://localhost:8888`.
 
-`POST /druid/v2/`
 
-The endpoint for submitting queries. Accepts an option `?pretty` that pretty 
prints the results.
+## Submit a query
 
-`POST /druid/v2/candidates/`
+Submits a JSON-based native query. 
 
-Returns segment information lists including server locations for the given 
query.
\ No newline at end of file
+Queries are composed of various JSON properties and Druid has different types 
of queries for different use cases. The possible types of queries are: 
`timeseries`, `topN`, `groupBy`, `timeBoundaries`, `segmentMetadata`, 
`datasourceMetadata`, `scan`, and `search`. For guidance on constructing the 
requests and choosing query types, see [available native 
queries](../querying/querying.md#available-queries).
+
+### URL
+
+<code class="postAPI">POST</code> <code>/druid/v2/</code>
+
+### Query parameters
+
+* `pretty` (optional)
+  * Druid returns the response in a pretty-printed format using indentation 
and line breaks.
+
+### Responses
+
+<!--DOCUSAURUS_CODE_TABS-->
+
+<!--200 SUCCESS-->
+
+<br/>
+
+*Successfully submitted query* 
+
+<!--400 BAD REQUEST-->
+
+<br/>
+
+*Error thrown due to bad query. Returns a JSON object detailing the error with 
the following format:*
+
+```json
+{
+    "error": "A well-defined error code.",
+    "errorMessage": "A message with additional details about the error.",
+    "errorClass": "Class of exception that caused this error.",
+    "host": "The host on which the error occurred."
+}
+```
+For more information on possible error messages, see [query execution 
failures](../querying/querying.md#query-execution-failures).
+
+<!--END_DOCUSAURUS_CODE_TABS-->
+
+---
+
+### Sample request: `topN` query
+
+The following example submits a JSON query of the `topN` type to retrieve a 
ranked list of users and their post views. 
+
+<!--DOCUSAURUS_CODE_TABS-->
+
+<!--cURL-->
+
+```shell
+curl "http://ROUTER_IP:ROUTER_PORT/druid/v2?pretty=null"; \
+--header 'Content-Type: application/json' \
+--data '{
+  "queryType": "topN",
+  "dataSource": "social_media",
+  "dimension": "username",
+  "threshold": 5,
+  "metric": "views",
+  "granularity": "all",
+  "aggregations": [
+    {
+      "type": "longSum",
+      "name": "views",
+      "fieldName": "views"
+    }
+  ],
+  "intervals": [
+    "2022-01-01T00:00:00.000/2024-01-01T00:00:00.000"
+  ]
+}'
+```
+<!--HTTP-->
+
+```HTTP
+POST /druid/v2?pretty=null HTTP/1.1
+Host: http://ROUTER_IP:ROUTER_PORT
+Content-Type: application/json
+Content-Length: 336
+
+{
+  "queryType": "topN",
+  "dataSource": "social_media",
+  "dimension": "username",
+  "threshold": 5,
+  "metric": "views",
+  "granularity": "all",
+  "aggregations": [
+    {
+      "type": "longSum",
+      "name": "views",
+      "fieldName": "views"
+    }
+  ],
+  "intervals": [
+    "2022-01-01T00:00:00.000/2024-01-01T00:00:00.000"
+  ]
+}
+```
+
+<!--END_DOCUSAURUS_CODE_TABS-->
+
+### Sample response: `topN` query
+
+<details>
+  <summary>Click to show sample response</summary>
+
+  ```json
+[
+    {
+        "timestamp": "2023-07-03T18:49:54.848Z",
+        "result": [
+            {
+                "views": 11591218026,
+                "username": "gus"
+            },
+            {
+                "views": 11578638578,
+                "username": "miette"
+            },
+            {
+                "views": 11561618880,
+                "username": "leon"
+            },
+            {
+                "views": 11552609824,
+                "username": "mia"
+            },
+            {
+                "views": 11551537517,
+                "username": "milton"
+            }
+        ]
+    }
+]
+  ```
+</details>
+
+### Sample request: `groupBy` query
+
+The following example submits a JSON query of the `groupBy` type to retrieve 
the `username` with the highest votes to posts ratio from the `social_media` 
datasource.
+
+In this query:
+* The `upvoteSum` aggregation calculates the sum of the `upvotes` for each 
user.
+* The `postCount` aggregation calculates the sum of posts for each user.
+* The `upvoteToPostRatio` is a post-aggregation of the `upvoteSum` and the 
`postCount`, divided to calculate the ratio.
+* The result is sorted based on the `upvoteToPostRatio` and in descending 
order.
+
+<!--DOCUSAURUS_CODE_TABS-->
+
+<!--cURL-->
+
+```shell
+curl "http://ROUTER_IP:ROUTER_PORT/druid/v2"; \
+--header 'Content-Type: application/json' \
+--data '{
+  "queryType": "groupBy",
+  "dataSource": "social_media",
+  "dimensions": ["username"],
+  "granularity": "all",
+  "aggregations": [
+    { "type": "doubleSum", "name": "upvoteSum", "fieldName": "upvotes" },
+    { "type": "count", "name": "postCount", "fieldName": "post_title" }
+  ],
+  "postAggregations": [
+    {
+      "type": "arithmetic",
+      "name": "upvoteToPostRatio",
+      "fn": "/",
+      "fields": [
+        { "type": "fieldAccess", "name": "upvoteSum", "fieldName": "upvoteSum" 
},
+        { "type": "fieldAccess", "name": "postCount", "fieldName": "postCount" 
}
+      ]
+    }
+  ],
+  "intervals": ["2022-01-01T00:00:00.000/2024-01-01T00:00:00.000"],
+  "limitSpec": {
+    "type": "default",
+    "limit": 1,
+    "columns": [
+      { "dimension": "upvoteToPostRatio", "direction": "descending" }
+    ]
+  }
+}'
+```
+
+<!--HTTP-->
+
+```HTTP
+POST /druid/v2?pretty=null HTTP/1.1
+Host: http://ROUTER_IP:ROUTER_PORT
+Content-Type: application/json
+Content-Length: 817
+
+{
+  "queryType": "groupBy",
+  "dataSource": "social_media",
+  "dimensions": ["username"],
+  "granularity": "all",
+  "aggregations": [
+    { "type": "doubleSum", "name": "upvoteSum", "fieldName": "upvotes" },
+    { "type": "count", "name": "postCount", "fieldName": "post_title" }
+  ],
+  "postAggregations": [
+    {
+      "type": "arithmetic",
+      "name": "upvoteToPostRatio",
+      "fn": "/",
+      "fields": [
+        { "type": "fieldAccess", "name": "upvoteSum", "fieldName": "upvoteSum" 
},
+        { "type": "fieldAccess", "name": "postCount", "fieldName": "postCount" 
}
+      ]
+    }
+  ],
+  "intervals": ["2022-01-01T00:00:00.000/2024-01-01T00:00:00.000"],
+  "limitSpec": {
+    "type": "default",
+    "limit": 1,
+    "columns": [
+      { "dimension": "upvoteToPostRatio", "direction": "descending" }
+    ]
+  }
+}
+```
+
+<!--END_DOCUSAURUS_CODE_TABS-->
+
+### Sample response: `groupBy` query

Review Comment:
   ```suggestion
   ### Sample response: `groupBy`
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to