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

zhangshenghang pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/seatunnel.git


The following commit(s) were added to refs/heads/dev by this push:
     new d0115a86e2 [Docs][Connector-V2] Improve Qdrant Firestore and IoTDB 
docs (#11313)
d0115a86e2 is described below

commit d0115a86e23fda39d0e712112637fd119cd62b54
Author: Daniel Carter <[email protected]>
AuthorDate: Sat Jul 4 09:53:23 2026 +0800

    [Docs][Connector-V2] Improve Qdrant Firestore and IoTDB docs (#11313)
    
    Co-authored-by: DanielCarter-stack 
<[email protected]>
---
 docs/en/connectors/sink/GoogleFirestore.md | 76 +++++++++++++++++++++---------
 docs/en/connectors/sink/IoTDB.md           | 10 +++-
 docs/en/connectors/sink/Qdrant.md          |  4 +-
 docs/en/connectors/source/IoTDB.md         | 72 ++++++++++++++++++++++++++--
 docs/en/connectors/source/Qdrant.md        |  4 +-
 docs/zh/connectors/sink/GoogleFirestore.md | 67 +++++++++++++++++++-------
 docs/zh/connectors/sink/IoTDB.md           | 12 ++++-
 docs/zh/connectors/sink/Qdrant.md          |  4 +-
 docs/zh/connectors/source/IoTDB.md         | 75 ++++++++++++++++++++++++++---
 docs/zh/connectors/source/Qdrant.md        |  4 +-
 10 files changed, 268 insertions(+), 60 deletions(-)

diff --git a/docs/en/connectors/sink/GoogleFirestore.md 
b/docs/en/connectors/sink/GoogleFirestore.md
index f0932aa5f8..bb4423f68f 100644
--- a/docs/en/connectors/sink/GoogleFirestore.md
+++ b/docs/en/connectors/sink/GoogleFirestore.md
@@ -6,26 +6,28 @@ import ChangeLog from 
'../changelog/connector-google-firestore.md';
 
 ## Description
 
-The GoogleFirestore sink writes SeaTunnel rows to a Google Cloud Firestore
-collection.
+The GoogleFirestore sink writes SeaTunnel rows to a Google Cloud Firestore 
collection.
 
-Each SeaTunnel row is converted to a Firestore document. The connector requires
-the target Google Cloud project and collection. Credentials can be passed as a
-Base64-encoded service account JSON string, or read from Google Application
-Default Credentials when `credentials` is not configured.
+Each SeaTunnel row is converted to one Firestore document. The connector 
generates the Firestore document ID automatically by calling Firestore `add`, 
so it appends documents instead of updating a user-specified document ID.
 
-## Key features
+Credentials can be passed as a Base64-encoded service account JSON string. If 
`credentials` is not configured, the connector reads Google Application Default 
Credentials from the runtime environment.
+
+## Key Features
 
 - [ ] [exactly-once](../../introduction/concepts/connector-v2-features.md)
+- [ ] [cdc](../../introduction/concepts/connector-v2-features.md)
+- [x] [batch](../../introduction/concepts/connector-v2-features.md)
+- [ ] [stream](../../introduction/concepts/connector-v2-features.md)
+- [ ] [support multiple table 
write](../../introduction/concepts/connector-v2-features.md)
 
 ## Options
 
-| name           | type   | required | default value |
-|----------------|--------|----------|---------------|
-| project_id     | string | yes      | -             |
-| collection     | string | yes      | -             |
-| credentials    | string | no       | -             |
-| common-options |        | no       | -             |
+| name           | type   | required | default value | description |
+|----------------|--------|----------|---------------|-------------|
+| project_id     | string | yes      | -             | Google Cloud project ID 
that owns the Firestore database. |
+| collection     | string | yes      | -             | Firestore collection 
name to write to. |
+| credentials    | string | no       | -             | Base64-encoded Google 
Cloud service account JSON. |
+| common-options |        | no       | -             | Sink common options. |
 
 ### project_id [string]
 
@@ -33,21 +35,44 @@ The Google Cloud project ID that owns the Firestore 
database.
 
 ### collection [string]
 
-The Firestore collection to write to.
+The Firestore collection to write to. Each sink block writes to one collection.
 
 ### credentials [string]
 
 Base64-encoded Google Cloud service account JSON.
 
-If this option is not set, the connector uses Google Application Default
-Credentials. In that case, make sure `GOOGLE_APPLICATION_CREDENTIALS` points to
-the service account JSON file or the runtime environment already provides
-default credentials.
+If this option is not set, the connector uses Google Application Default 
Credentials. In that case, make sure `GOOGLE_APPLICATION_CREDENTIALS` points to 
the service account JSON file or the runtime environment already provides 
default credentials.
 
 ### common options
 
-Sink plugin common parameters, please refer to
-[Sink Common Options](../common-options/sink-common-options.md) for details.
+Sink plugin common parameters, please refer to [Sink Common 
Options](../common-options/sink-common-options.md) for details.
+
+## Supported Types
+
+| SeaTunnel type | Firestore value |
+|----------------|-----------------|
+| TINYINT        | integer |
+| SMALLINT       | integer |
+| INT            | integer |
+| BIGINT         | integer |
+| FLOAT          | double |
+| DOUBLE         | double |
+| DECIMAL        | decimal value |
+| STRING         | string |
+| BOOLEAN        | boolean |
+| BYTES          | blob |
+| DATE           | date at UTC start of day |
+| TIMESTAMP      | timestamp |
+| ARRAY          | array |
+| MAP            | map |
+| NULL           | null |
+
+## Notes
+
+- The connector currently provides a sink only. There is no GoogleFirestore 
source connector.
+- Firestore document IDs are generated automatically. Use another connector or 
transform before this sink if you need deterministic document IDs.
+- The sink does not interpret `UPDATE` or `DELETE` row kinds as CDC operations.
+- Do not put raw service account JSON directly in `credentials`; encode it 
with Base64 first.
 
 ## Example
 
@@ -61,22 +86,27 @@ source {
   FakeSource {
     schema = {
       fields {
+        c_map = "map<string, string>"
+        c_array = "array<int>"
         c_string = string
         c_boolean = boolean
+        c_tinyint = tinyint
+        c_smallint = smallint
         c_int = int
         c_bigint = bigint
+        c_float = float
         c_double = double
         c_decimal = "decimal(30, 8)"
+        c_null = "null"
+        c_bytes = bytes
         c_date = date
         c_timestamp = timestamp
-        c_map = "map<string, string>"
-        c_array = "array<int>"
       }
     }
     rows = [
       {
         kind = INSERT
-        fields = ["hello", true, 10, 10000000000, 1.23, "123.456", 
"2023-04-22", "2023-04-22T23:20:58", {"a": "b"}, [1, 2, 3]]
+        fields = [{"a": "b"}, [10], "c_string", true, 117, 15987, 56387395, 
7084913402530365000, 1.23, 1.23, "2924137191386439303744.39292216", null, 
"bWlJWmo=", "2023-04-22", "2023-04-22T23:20:58"]
       }
     ]
   }
diff --git a/docs/en/connectors/sink/IoTDB.md b/docs/en/connectors/sink/IoTDB.md
index d8728d2174..539c53a791 100644
--- a/docs/en/connectors/sink/IoTDB.md
+++ b/docs/en/connectors/sink/IoTDB.md
@@ -50,7 +50,7 @@ Used to write data to IoTDB.
 | key_device                  | String  | Yes      | -                         
     | Specify field name of the IoTDB deviceId in SeaTunnelRow                 
                                                                                
         |
 | key_timestamp               | String  | No       | processing time           
     | Specify field-name of the IoTDB timestamp in SeaTunnelRow. If not 
specified, use processing-time as timestamp                                     
                |
 | key_measurement_fields      | Array   | No       | exclude device and 
timestamp fields | Specify field names of the IoTDB measurement list in 
SeaTunnelRow. If not specified, include all fields except `key_device` and 
`key_timestamp` fields.             |
-| storage_group               | Array   | No       | -                         
     | Specify device storage group(path prefix) <br/> example: deviceId = 
\${storage_group} + "." +  \${key_device}                                       
              |
+| storage_group               | String  | No       | -                         
     | Specify device storage group(path prefix) <br/> example: deviceId = 
\${storage_group} + "." +  \${key_device}                                       
              |
 | batch_size                  | Integer | No       | 1024                      
     | For batch writing, data is flushed into IoTDB when the buffered row 
count reaches `batch_size`.                                                     
               |
 | max_retries                 | Integer | No       | -                         
     | The number of retries to flush failed                                    
                                                                                
         |
 | retry_backoff_multiplier_ms | Integer | No       | -                         
     | Using as a multiplier for generating the next delay for backoff          
                                                                                
         |
@@ -62,6 +62,14 @@ Used to write data to IoTDB.
 | connection_timeout_in_ms    | Integer | No       | -                         
     | The maximum time (in ms) to wait when connecting to IoTDB                
                                                                                
         |
 | common-options              |         | no       | -                         
     | Sink plugin common parameters, please refer to [Sink Common 
Options](../common-options/sink-common-options.md) for details                  
                                     |
 
+## Write Rules
+
+- `key_device` must name the SeaTunnel field that contains the IoTDB device 
path.
+- `storage_group` is a string prefix. When it is set, the final device path is 
built from `storage_group` and the value of `key_device`.
+- `key_timestamp` can name a `STRING`, `BIGINT`, or `TIMESTAMP` field. If it 
is not configured, the connector uses the current processing time.
+- If `key_measurement_fields` is not configured, all fields except 
`key_device` and `key_timestamp` are written as measurements.
+- The sink supports `STRING`, `BOOLEAN`, `TINYINT`, `SMALLINT`, `INT`, 
`BIGINT`, `FLOAT`, and `DOUBLE` measurement fields.
+
 ## Examples
 
 ```hocon
diff --git a/docs/en/connectors/sink/Qdrant.md 
b/docs/en/connectors/sink/Qdrant.md
index c4346e3910..d73297b36a 100644
--- a/docs/en/connectors/sink/Qdrant.md
+++ b/docs/en/connectors/sink/Qdrant.md
@@ -24,7 +24,7 @@ The Qdrant sink writes SeaTunnel rows into one existing 
Qdrant collection. Norma
 | collection_name | string | yes      | -             | Qdrant collection name 
to write to. |
 | host            | string | no       | localhost     | Qdrant gRPC host. |
 | port            | int    | no       | 6334          | Qdrant gRPC port. |
-| api_key         | string | no       | -             | Qdrant API key for 
authenticated deployments. |
+| api_key         | string | no       | ""            | Qdrant API key for 
authenticated deployments. |
 | use_tls         | bool   | no       | false         | Whether to use TLS for 
the gRPC connection. |
 | common-options  |        | no       | -             | Sink common options. |
 
@@ -42,7 +42,7 @@ The gRPC port of the Qdrant instance.
 
 ### api_key [string]
 
-The API key used to connect to authenticated Qdrant deployments.
+The API key used to connect to authenticated Qdrant deployments. Leave it 
empty when the Qdrant service does not require authentication.
 
 ### use_tls [bool]
 
diff --git a/docs/en/connectors/source/IoTDB.md 
b/docs/en/connectors/source/IoTDB.md
index 1ab8aa3e98..8394018870 100644
--- a/docs/en/connectors/source/IoTDB.md
+++ b/docs/en/connectors/source/IoTDB.md
@@ -43,9 +43,8 @@ Used to read data from IoTDB.
 | DOUBLE          | DOUBLE              |
 | TEXT            | STRING              |
 | STRING          | STRING              |
-| TIMESTAMP       | TIMESTAMP           |
-| BLOB            | STRING              |
-| DATE            | DATE                |
+| time column     | BIGINT              |
+| time column     | TIMESTAMP           |
 
 ## Source Options
 
@@ -66,7 +65,11 @@ Used to read data from IoTDB.
 | version                    | string  | no       | -             | SQL 
semantic version used by the client. The possible values are `V_0_12` and 
`V_0_13`.                           |
 | common-options             |         | no       | -             | Source 
plugin common parameters, please refer to [Source Common 
Options](../common-options/source-common-options.md) for details |
 
-We can use time column as a partition key in SQL queries.
+The first field in `schema.fields` must describe the IoTDB time column. It can 
be `bigint` when you want epoch milliseconds, or `timestamp` when you want a 
SeaTunnel timestamp value.
+
+When the SQL uses `align by device`, the second field normally describes the 
IoTDB device name. The remaining fields must follow the same order as the 
measurements returned by the SQL query.
+
+You can use the time column as a partition key in SQL queries.
 
 #### num_partitions [int]
 
@@ -135,6 +138,67 @@ sink {
 
 `lower_bound`, `upper_bound`, and `num_partitions` are optional. They are 
useful when the query covers a large time range and you want SeaTunnel to split 
the read into multiple time partitions.
 
+The following example reads from one IoTDB path, replaces the device prefix, 
and writes the result to another IoTDB path.
+
+```hocon
+env {
+  parallelism = 2
+  job.mode = "BATCH"
+}
+
+source {
+  IoTDB {
+    plugin_output = "iotdb_rows"
+    node_urls = "localhost:6667"
+    username = "root"
+    password = "root"
+    sql = "SELECT c_string, c_boolean, c_tinyint, c_smallint, c_int, c_bigint, 
c_float, c_double FROM root.source_group.* WHERE time < 4102329600000 align by 
device"
+    lower_bound = 1
+    upper_bound = 4102329600000
+    num_partitions = 10
+    schema {
+      fields {
+        ts = timestamp
+        device_name = string
+        c_string = string
+        c_boolean = boolean
+        c_tinyint = tinyint
+        c_smallint = smallint
+        c_int = int
+        c_bigint = bigint
+        c_float = float
+        c_double = double
+      }
+    }
+  }
+}
+
+transform {
+  Replace {
+    plugin_input = "iotdb_rows"
+    plugin_output = "sink_rows"
+    replace_field = "device_name"
+    pattern = "root.source_group"
+    replacement = "root.sink_group"
+    is_regex = false
+    replace_first = true
+  }
+}
+
+sink {
+  IoTDB {
+    plugin_input = "sink_rows"
+    node_urls = ["localhost:6667"]
+    username = "root"
+    password = "root"
+    key_device = "device_name"
+    key_timestamp = "ts"
+    key_measurement_fields = ["c_string", "c_boolean", "c_tinyint", 
"c_smallint", "c_int", "c_bigint", "c_float", "c_double"]
+    batch_size = 1
+  }
+}
+```
+
 The data format from upstream IoTDB is as follows:
 
 ```shell
diff --git a/docs/en/connectors/source/Qdrant.md 
b/docs/en/connectors/source/Qdrant.md
index 4afd059247..a7067cda71 100644
--- a/docs/en/connectors/source/Qdrant.md
+++ b/docs/en/connectors/source/Qdrant.md
@@ -28,7 +28,7 @@ The Qdrant source reads points from one existing Qdrant 
collection. Point payloa
 | schema          | config | yes      | -             | SeaTunnel schema used 
to map Qdrant point IDs, payload fields, and vectors. |
 | host            | string | no       | localhost     | Qdrant gRPC host. |
 | port            | int    | no       | 6334          | Qdrant gRPC port. |
-| api_key         | string | no       | -             | Qdrant API key for 
authenticated deployments. |
+| api_key         | string | no       | ""            | Qdrant API key for 
authenticated deployments. |
 | use_tls         | bool   | no       | false         | Whether to use TLS for 
the gRPC connection. |
 | common-options  |        | no       | -             | Source common options. 
|
 
@@ -78,7 +78,7 @@ The gRPC port of the Qdrant instance.
 
 ### api_key [string]
 
-The API key used to connect to authenticated Qdrant deployments.
+The API key used to connect to authenticated Qdrant deployments. Leave it 
empty when the Qdrant service does not require authentication.
 
 ### use_tls [bool]
 
diff --git a/docs/zh/connectors/sink/GoogleFirestore.md 
b/docs/zh/connectors/sink/GoogleFirestore.md
index 3e82e66fbf..07cd4e0b94 100644
--- a/docs/zh/connectors/sink/GoogleFirestore.md
+++ b/docs/zh/connectors/sink/GoogleFirestore.md
@@ -8,22 +8,26 @@ import ChangeLog from 
'../changelog/connector-google-firestore.md';
 
 GoogleFirestore Sink 用于将 SeaTunnel 数据写入 Google Cloud Firestore 集合。
 
-每一行 SeaTunnel 数据会转换为一个 Firestore 文档。连接器必须配置目标
-Google Cloud 项目和集合。凭证可以通过 `credentials` 传入 Base64 编码后的
-服务账号 JSON;如果不配置该参数,则会使用 Google 应用默认凭证。
+每一行 SeaTunnel 数据会转换为一个 Firestore 文档。连接器通过 Firestore `add` 自动生成文档 
ID,因此它是追加写入,不会按用户指定的文档 ID 更新已有文档。
+
+凭证可以通过 `credentials` 传入 Base64 编码后的服务账号 JSON;如果不配置该参数,则会从运行环境读取 Google 应用默认凭证。
 
 ## 主要特性
 
 - [ ] [精确一次](../../introduction/concepts/connector-v2-features.md)
+- [ ] [CDC](../../introduction/concepts/connector-v2-features.md)
+- [x] [批处理](../../introduction/concepts/connector-v2-features.md)
+- [ ] [流处理](../../introduction/concepts/connector-v2-features.md)
+- [ ] [支持多表写入](../../introduction/concepts/connector-v2-features.md)
 
 ## 选项
 
-| 名称           | 类型   | 必填 | 默认值 |
-|----------------|--------|------|--------|
-| project_id     | string | 是   | -      |
-| collection     | string | 是   | -      |
-| credentials    | string | 否   | -      |
-| common-options |        | 否   | -      |
+| 名称           | 类型   | 必填 | 默认值 | 说明 |
+|----------------|--------|------|--------|------|
+| project_id     | string | 是   | -      | Firestore 数据库所在的 Google Cloud 项目 
ID。 |
+| collection     | string | 是   | -      | 要写入的 Firestore 集合名称。 |
+| credentials    | string | 否   | -      | Base64 编码后的 Google Cloud 服务账号 JSON。 
|
+| common-options |        | 否   | -      | Sink 通用选项。 |
 
 ### project_id [string]
 
@@ -31,18 +35,44 @@ Firestore 数据库所在的 Google Cloud 项目 ID。
 
 ### collection [string]
 
-要写入的 Firestore 集合名称。
+要写入的 Firestore 集合名称。每个 sink 配置块写入一个集合。
 
 ### credentials [string]
 
 Base64 编码后的 Google Cloud 服务账号 JSON。
 
-如果不配置该参数,连接器会使用 Google 应用默认凭证。此时需要确保
-`GOOGLE_APPLICATION_CREDENTIALS` 指向服务账号 JSON 文件,或者运行环境已经提供默认凭证。
+如果不配置该参数,连接器会使用 Google 应用默认凭证。此时需要确保 `GOOGLE_APPLICATION_CREDENTIALS` 指向服务账号 
JSON 文件,或者运行环境已经提供默认凭证。
 
 ### 通用选项
 
-Sink 插件通用参数,请参考 [Sink Common 
Options](../common-options/sink-common-options.md)。
+Sink 插件通用参数,请参考 [Sink 通用选项](../common-options/sink-common-options.md)。
+
+## 支持的数据类型
+
+| SeaTunnel 类型 | Firestore 值 |
+|----------------|--------------|
+| TINYINT        | 整数 |
+| SMALLINT       | 整数 |
+| INT            | 整数 |
+| BIGINT         | 整数 |
+| FLOAT          | 双精度浮点数 |
+| DOUBLE         | 双精度浮点数 |
+| DECIMAL        | 十进制数 |
+| STRING         | 字符串 |
+| BOOLEAN        | 布尔值 |
+| BYTES          | 二进制 Blob |
+| DATE           | UTC 当天零点日期 |
+| TIMESTAMP      | 时间戳 |
+| ARRAY          | 数组 |
+| MAP            | Map |
+| NULL           | null |
+
+## 注意事项
+
+- 当前连接器只提供 sink,不提供 GoogleFirestore source。
+- Firestore 文档 ID 会自动生成。如果需要固定文档 ID,请在写入前使用其他连接器或转换处理。
+- sink 不会按 `UPDATE` 或 `DELETE` 行类型执行 CDC 语义。
+- `credentials` 不能直接填写服务账号 JSON 原文,需要先做 Base64 编码。
 
 ## 示例
 
@@ -56,22 +86,27 @@ source {
   FakeSource {
     schema = {
       fields {
+        c_map = "map<string, string>"
+        c_array = "array<int>"
         c_string = string
         c_boolean = boolean
+        c_tinyint = tinyint
+        c_smallint = smallint
         c_int = int
         c_bigint = bigint
+        c_float = float
         c_double = double
         c_decimal = "decimal(30, 8)"
+        c_null = "null"
+        c_bytes = bytes
         c_date = date
         c_timestamp = timestamp
-        c_map = "map<string, string>"
-        c_array = "array<int>"
       }
     }
     rows = [
       {
         kind = INSERT
-        fields = ["hello", true, 10, 10000000000, 1.23, "123.456", 
"2023-04-22", "2023-04-22T23:20:58", {"a": "b"}, [1, 2, 3]]
+        fields = [{"a": "b"}, [10], "c_string", true, 117, 15987, 56387395, 
7084913402530365000, 1.23, 1.23, "2924137191386439303744.39292216", null, 
"bWlJWmo=", "2023-04-22", "2023-04-22T23:20:58"]
       }
     ]
   }
diff --git a/docs/zh/connectors/sink/IoTDB.md b/docs/zh/connectors/sink/IoTDB.md
index 427d09003d..c226e935a2 100644
--- a/docs/zh/connectors/sink/IoTDB.md
+++ b/docs/zh/connectors/sink/IoTDB.md
@@ -50,7 +50,7 @@ import ChangeLog from '../changelog/connector-iotdb.md';
 | key_device                  | String  | 是    | -                             
 | 在SeaTunnelRow中指定 IoTDB 设备ID的字段名                                              
|
 | key_timestamp               | String  | 否    | processing time               
 | 在SeaTunnelRow中指定 IoTDB 时间戳的字段名。如果未指定,则使用处理时间作为时间戳                            
|
 | key_measurement_fields      | Array   | 否    | 排除设备和时间字段                     
  | 在 SeaTunnelRow 中指定 IoTDB 测点字段列表。未配置时,会写入除 `key_device` 和 `key_timestamp` 
对应字段外的其他字段 |
-| storage_group               | Array   | 否    | -                             
 | 指定设备存储组(路径前缀) <br/> 例如: deviceId = \${storage_group} + "." +  \${key_device} 
|
+| storage_group               | String  | 否    | -                             
 | 指定设备存储组(路径前缀) <br/> 例如: deviceId = \${storage_group} + "." +  \${key_device} 
|
 | batch_size                  | Integer | 否    | 1024                          
 | 批量写入时,当缓存行数达到 `batch_size`,数据会刷新到 IoTDB 中                                    
  |
 | max_retries                 | Integer | 否    | -                             
 | 写入失败后的最大重试次数                                                                 
|
 | retry_backoff_multiplier_ms | Integer | 否    | -                             
 | 用作生成下一个退避延迟的乘数                                                               
|
@@ -60,7 +60,15 @@ import ChangeLog from '../changelog/connector-iotdb.md';
 | zone_id                     | string  | 否    | -                             
 | IoTDB 客户端使用的 `java.time.ZoneId`                                              
  |
 | enable_rpc_compression      | Boolean | 否    | -                             
 | 在 IoTDB 客户端中启用rpc压缩                                                          
|
 | connection_timeout_in_ms    | Integer | 否    | -                             
 | 连接到 IoTDB 时等待的最长时间(毫秒)                                                       
|
-| common-options              |         | 否    | -                             
 | Sink 插件通用参数,详见 [Sink Common 
Options](../common-options/sink-common-options.md)              |
+| common-options              |         | 否    | -                             
 | Sink 插件通用参数,详见 [Sink 通用选项](../common-options/sink-common-options.md)         
     |
+
+## 写入规则
+
+- `key_device` 必须指定 SeaTunnel 中保存 IoTDB 设备路径的字段名。
+- `storage_group` 是字符串前缀。配置后,最终设备路径会由 `storage_group` 和 `key_device` 对应字段值拼接而成。
+- `key_timestamp` 可以指定 `STRING`、`BIGINT` 或 `TIMESTAMP` 类型字段。未配置时,连接器会使用当前处理时间。
+- 未配置 `key_measurement_fields` 时,会把除 `key_device` 和 `key_timestamp` 
之外的所有字段写为测点。
+- sink 支持写入 `STRING`、`BOOLEAN`、`TINYINT`、`SMALLINT`、`INT`、`BIGINT`、`FLOAT` 和 
`DOUBLE` 类型测点。
 
 ## 示例
 
diff --git a/docs/zh/connectors/sink/Qdrant.md 
b/docs/zh/connectors/sink/Qdrant.md
index bc5c00f9d8..2f02c14212 100644
--- a/docs/zh/connectors/sink/Qdrant.md
+++ b/docs/zh/connectors/sink/Qdrant.md
@@ -24,7 +24,7 @@ Qdrant sink 会把 SeaTunnel 行写入一个已经存在的 Qdrant collection。
 | collection_name | string | 是   | -         | 要写入的 Qdrant collection 名称。 |
 | host            | string | 否   | localhost | Qdrant gRPC 主机。 |
 | port            | int    | 否   | 6334      | Qdrant gRPC 端口。 |
-| api_key         | string | 否   | -         | 认证场景下使用的 Qdrant API key。 |
+| api_key         | string | 否   | ""        | 认证场景下使用的 Qdrant API key。 |
 | use_tls         | bool   | 否   | false     | gRPC 连接是否启用 TLS。 |
 | common-options  |        | 否   | -         | Sink 通用选项。 |
 
@@ -42,7 +42,7 @@ Qdrant 实例的 gRPC 端口。
 
 ### api_key [string]
 
-连接需要认证的 Qdrant 部署时使用的 API key。
+连接需要认证的 Qdrant 部署时使用的 API key。如果 Qdrant 服务不需要认证,可以保持为空。
 
 ### use_tls [bool]
 
diff --git a/docs/zh/connectors/source/IoTDB.md 
b/docs/zh/connectors/source/IoTDB.md
index 8297633ce6..7be5224ed3 100644
--- a/docs/zh/connectors/source/IoTDB.md
+++ b/docs/zh/connectors/source/IoTDB.md
@@ -43,10 +43,8 @@ import ChangeLog from '../changelog/connector-iotdb.md';
 | DOUBLE     | DOUBLE         |
 | TEXT       | STRING         |
 | STRING     | STRING         |
-| TIMESTAMP  | BIGINT         |
-| TIMESTAMP  | TIMESTAMP      |
-| BLOB       | STRING         |
-| DATE       | DATE           |
+| 时间列        | BIGINT         |
+| 时间列        | TIMESTAMP      |
 
 ## Source 选项
 
@@ -65,9 +63,13 @@ import ChangeLog from '../changelog/connector-iotdb.md';
 | thrift_max_frame_size      | int     | 否    | -   | Thrift 最大帧尺寸             
                                                        |
 | enable_cache_leader        | boolean | 否    | -   | 是否启用 Leader 节点缓存         
                                                        |
 | version                    | string  | 否    | -   | 客户端 SQL 语义版本(`V_0_12` / 
`V_0_13`)                                                |
-| common-options             |         | 否    | -   | Source 插件通用参数,详见 [Source 
Common Options](../common-options/source-common-options.md)            |
+| common-options             |         | 否    | -   | Source 插件通用参数,详见 [Source 
通用选项](../common-options/source-common-options.md)            |
 
-我们可以使用时间列进行分区查询。
+`schema.fields` 中的第一个字段必须对应 IoTDB 时间列。需要毫秒时间戳时可以配置为 `bigint`,需要 SeaTunnel 
timestamp 值时可以配置为 `timestamp`。
+
+当 SQL 使用 `align by device` 时,第二个字段通常对应 IoTDB 设备名。后续字段需要和 SQL 返回的测点顺序保持一致。
+
+可以使用时间列进行分区查询。
 
 ### num_partitions [int]
 
@@ -138,6 +140,67 @@ sink {
 
 `lower_bound`、`upper_bound` 和 `num_partitions` 
是可选项。当查询覆盖很大的时间范围时,可以用它们把读取任务按时间范围拆成多个分区。
 
+下面的示例从一个 IoTDB 路径读取数据,替换设备名前缀后,再写入另一个 IoTDB 路径。
+
+```hocon
+env {
+  parallelism = 2
+  job.mode = "BATCH"
+}
+
+source {
+  IoTDB {
+    plugin_output = "iotdb_rows"
+    node_urls = "localhost:6667"
+    username = "root"
+    password = "root"
+    sql = "SELECT c_string, c_boolean, c_tinyint, c_smallint, c_int, c_bigint, 
c_float, c_double FROM root.source_group.* WHERE time < 4102329600000 align by 
device"
+    lower_bound = 1
+    upper_bound = 4102329600000
+    num_partitions = 10
+    schema {
+      fields {
+        ts = timestamp
+        device_name = string
+        c_string = string
+        c_boolean = boolean
+        c_tinyint = tinyint
+        c_smallint = smallint
+        c_int = int
+        c_bigint = bigint
+        c_float = float
+        c_double = double
+      }
+    }
+  }
+}
+
+transform {
+  Replace {
+    plugin_input = "iotdb_rows"
+    plugin_output = "sink_rows"
+    replace_field = "device_name"
+    pattern = "root.source_group"
+    replacement = "root.sink_group"
+    is_regex = false
+    replace_first = true
+  }
+}
+
+sink {
+  IoTDB {
+    plugin_input = "sink_rows"
+    node_urls = ["localhost:6667"]
+    username = "root"
+    password = "root"
+    key_device = "device_name"
+    key_timestamp = "ts"
+    key_measurement_fields = ["c_string", "c_boolean", "c_tinyint", 
"c_smallint", "c_int", "c_bigint", "c_float", "c_double"]
+    batch_size = 1
+  }
+}
+```
+
 上游 IoTDB 的数据格式如下所示:
 
 ```shell
diff --git a/docs/zh/connectors/source/Qdrant.md 
b/docs/zh/connectors/source/Qdrant.md
index 342362aa46..c40ec13d66 100644
--- a/docs/zh/connectors/source/Qdrant.md
+++ b/docs/zh/connectors/source/Qdrant.md
@@ -28,7 +28,7 @@ Qdrant source 用来从一个已经存在的 Qdrant collection 读取 point。po
 | schema          | config | 是   | -         | SeaTunnel schema,用来映射 Qdrant 
point ID、payload 字段和向量。 |
 | host            | string | 否   | localhost | Qdrant gRPC 主机。 |
 | port            | int    | 否   | 6334      | Qdrant gRPC 端口。 |
-| api_key         | string | 否   | -         | 认证场景下使用的 Qdrant API key。 |
+| api_key         | string | 否   | ""        | 认证场景下使用的 Qdrant API key。 |
 | use_tls         | bool   | 否   | false     | gRPC 连接是否启用 TLS。 |
 | common-options  |        | 否   | -         | Source 通用选项。 |
 
@@ -78,7 +78,7 @@ Qdrant 实例的 gRPC 端口。
 
 ### api_key [string]
 
-连接需要认证的 Qdrant 部署时使用的 API key。
+连接需要认证的 Qdrant 部署时使用的 API key。如果 Qdrant 服务不需要认证,可以保持为空。
 
 ### use_tls [bool]
 

Reply via email to