更新连接器过滤 API编辑

此功能处于测试阶段,可能会发生变化。其设计和代码不如正式的 GA 功能成熟,因此按原样提供,不作任何保证。测试功能不受正式 GA 功能的服务水平协议 (SLA) 的约束。

更新连接器的草稿 filtering 配置,并将草稿验证状态标记为 edited。运行中的 Elastic 连接器服务验证后,过滤草稿将被激活。

filtering 属性用于为连接器配置同步规则(基本规则和高级规则)。在同步规则文档中了解更多信息。

要开始使用连接器 API,请查看教程

请求编辑

PUT _connector/<connector_id>/_filtering

先决条件编辑

  • 要使用自管连接器同步数据,您需要在自己的基础架构上部署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(可选,日期时间)
    添加规则时的时间戳。默认为当前 UTC 时间戳。
  • updated_at(可选,日期时间)
    上次编辑规则时的时间戳。默认为当前 UTC 时间戳。
advanced_snippet

(可选,对象)用于在查询时进行高级过滤,具有以下子属性

  • value(必填,对象或数组)
    直接传递给连接器以进行高级过滤的 JSON 对象/数组。
  • created_at(可选,日期时间)
    创建此 JSON 对象时的时间戳。默认为当前 UTC 时间戳。
  • updated_at(可选,日期时间)
    上次编辑此 JSON 对象时的时间戳。默认为当前 UTC 时间戳。

响应代码编辑

200
连接器草稿过滤已成功更新。
400
未提供 connector_id 或请求有效负载格式错误。
404(缺少资源)
找不到与 connector_id 匹配的连接器。

示例编辑

以下示例更新了 ID 为 my-g-drive-connector 的 Google Drive 连接器的草稿基本同步规则。所有扩展名为 .txt 的 Google Drive 文件都将被跳过

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 连接器的草稿高级同步规则。高级同步规则特定于每种连接器类型。有关语法和示例,请参阅支持高级同步规则的连接器的参考。

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 连接器服务将激活草稿过滤。