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

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

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