更新连接器过滤 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 (必填,字符串)
    指定策略,例如 includeexclude
  • field (必填,字符串)
    此规则适用的文档中的字段。
  • rule (必填,字符串)
    规则的类型,例如 regexstarts_withends_withcontainsequals<> 等。
  • 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"
}

请注意,您也可以在单个请求中更新草稿 rulesadvanced_snippet

更新草稿后,其验证状态将设置为 edited。然后,连接器服务将验证规则并将验证状态报告为 invalidvalid。如果状态为 valid,则正在运行的 Elastic 连接器服务将激活草稿过滤。