更新连接器过滤 API
编辑更新连接器过滤 API
编辑此功能处于 Beta 阶段,可能会发生更改。其设计和代码不如正式 GA 功能成熟,按“现状”提供,不提供任何保证。Beta 功能不受官方 GA 功能的支持 SLA 约束。
更新连接器的草稿 filtering
配置,并将草稿验证状态标记为 edited
。过滤草稿在运行的 Elastic 连接器服务验证后激活。
过滤属性用于配置连接器的同步规则(包括基本规则和高级规则)。在同步规则中了解更多信息。
要开始使用连接器 API,请查看我们的教程。
请求
编辑PUT _connector/<connector_id>/_filtering
先决条件
编辑- 要使用自托管连接器同步数据,您需要在您自己的基础设施上部署Elastic 连接器服务。此服务在 Elastic Cloud 上为 Elastic 托管连接器自动运行。
connector_id
参数应引用现有的连接器。- 过滤草稿在运行的 Elastic 连接器服务验证后激活,
draft.validation.state
必须为valid
。 - 如果,在验证尝试后,
draft.validation.state
等于invalid
,请检查draft.validation.errors
并修复任何问题。
路径参数
编辑-
<connector_id>
- (必需,字符串)
请求正文
编辑-
rules
-
(可选,对象数组)基本同步规则的数组,每个规则具有以下子属性
-
id
(必需,字符串)
规则的唯一标识符。 -
policy
(必需,字符串)
指定策略,例如include
或exclude
。 -
field
(必需,字符串)
文档中应用此规则的字段。 -
rule
(必需,字符串)
规则类型,例如regex
、starts_with
、ends_with
、contains
、equals
、<
、>
等。 -
value
(必需,字符串)
与规则一起使用的值,用于匹配文档字段的内容。 -
order
(必需,数字)
应用规则的顺序。匹配的第一个规则会应用其策略。 -
created_at
(可选,datetime)
添加规则时的时间戳。默认为now
UTC 时间戳。 -
updated_at
(可选,datetime)
上次编辑规则时的时间戳。默认为now
UTC 时间戳。
-
-
advanced_snippet
-
(可选,对象)用于在查询时进行高级过滤,具有以下子属性
-
value
(必需,对象或数组)
直接传递给连接器的 JSON 对象/数组,用于高级过滤。 -
created_at
(可选,datetime)
创建此 JSON 对象时的时间戳。默认为now
UTC 时间戳。 -
updated_at
(可选,datetime)
上次编辑此 JSON 对象时的时间戳。默认为now
UTC 时间戳。
-
响应代码
编辑-
200
- 成功更新连接器草稿过滤。
-
400
- 未提供
connector_id
或请求负载格式不正确。 -
404
(缺少资源) - 找不到与
connector_id
匹配的连接器。
示例
编辑以下示例更新 ID 为 my-g-drive-connector
的 Google Drive 连接器的草稿基本同步规则。将跳过所有扩展名为 .txt
的 Google Drive 文件
resp = client.connector.update_filtering( connector_id="my-g-drive-connector", rules=[ { "field": "file_extension", "id": "exclude-txt-files", "order": 0, "policy": "exclude", "rule": "equals", "value": "txt" }, { "field": "_", "id": "DEFAULT", "order": 1, "policy": "include", "rule": "regex", "value": ".*" } ], ) print(resp)
const response = await client.connector.updateFiltering({ connector_id: "my-g-drive-connector", rules: [ { field: "file_extension", id: "exclude-txt-files", order: 0, policy: "exclude", rule: "equals", value: "txt", }, { field: "_", id: "DEFAULT", order: 1, policy: "include", rule: "regex", value: ".*", }, ], }); console.log(response);
PUT _connector/my-g-drive-connector/_filtering { "rules": [ { "field": "file_extension", "id": "exclude-txt-files", "order": 0, "policy": "exclude", "rule": "equals", "value": "txt" }, { "field": "_", "id": "DEFAULT", "order": 1, "policy": "include", "rule": "regex", "value": ".*" } ] }
{ "result": "updated" }
以下示例更新 ID 为 my-sql-connector
的 MySQL 连接器的草稿高级同步规则。高级同步规则特定于每种连接器类型。有关支持高级同步规则的连接器的语法和示例,请参阅参考资料。
resp = client.connector.update_filtering( connector_id="my-sql-connector", advanced_snippet={ "value": [ { "tables": [ "users", "orders" ], "query": "SELECT users.id AS id, orders.order_id AS order_id FROM users JOIN orders ON users.id = orders.user_id" } ] }, ) print(resp)
const response = await client.connector.updateFiltering({ connector_id: "my-sql-connector", advanced_snippet: { value: [ { tables: ["users", "orders"], query: "SELECT users.id AS id, orders.order_id AS order_id FROM users JOIN orders ON users.id = orders.user_id", }, ], }, }); console.log(response);
PUT _connector/my-sql-connector/_filtering { "advanced_snippet": { "value": [{ "tables": [ "users", "orders" ], "query": "SELECT users.id AS id, orders.order_id AS order_id FROM users JOIN orders ON users.id = orders.user_id" }] } }
{ "result": "updated" }
请注意,您也可以在单个请求中更新草稿 rules
和 advanced_snippet
。
更新草稿后,其验证状态设置为 edited
。然后,连接器服务将验证规则并报告验证状态为 invalid
或 valid
。如果状态为 valid
,则运行的 Elastic 连接器服务将激活草稿过滤。