更新连接器过滤 API
编辑更新连接器过滤 API
编辑此功能处于 Beta 阶段,可能会发生变化。其设计和代码不如正式 GA 功能成熟,按原样提供,不提供任何担保。Beta 功能不受正式 GA 功能的支持服务级别协议 (SLA) 的约束。
更新连接器的草稿 filtering
配置,并将草稿验证状态标记为 edited
。过滤草稿在经过正在运行的 Elastic 连接器服务验证后激活。
过滤属性用于配置连接器的同步规则(基本规则和高级规则)。在 同步规则 中了解更多信息。
要开始使用连接器 API,请查看 我们的教程。
请求
编辑PUT _connector/<connector_id>/_filtering
先决条件
编辑- 要使用自管理连接器同步数据,您需要在自己的基础设施上部署 Elastic 连接器服务。对于 Elastic 托管连接器,此服务会在 Elastic Cloud 上自动运行。
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
(可选,日期时间)
添加规则的时间戳。默认为now
UTC 时间戳。 -
updated_at
(可选,日期时间)
上次编辑规则的时间戳。默认为now
UTC 时间戳。
-
-
advanced_snippet
-
(可选,对象) 用于在查询时进行 高级过滤,具有以下子属性
-
value
(必填,对象或数组)
直接传递给连接器以进行高级过滤的 JSON 对象/数组。 -
created_at
(可选,日期时间)
创建此 JSON 对象的时间戳。默认为now
UTC 时间戳。 -
updated_at
(可选,日期时间)
上次编辑此 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 连接器服务将激活草稿过滤。