コネクタフィルタリングAPIの更新
この機能はベータ版であり、変更される可能性があります。設計とコードは公式GA機能よりも成熟しておらず、保証なしでそのまま提供されています。ベータ機能は公式GA機能のサポートSLAの対象外です。
コネクタのドラフト filtering
設定を更新し、ドラフトの検証状態を edited
としてマークします。フィルタリングドラフトは、実行中のElasticコネクタサービスによって検証されるとアクティブになります。
フィルタリングプロパティは、コネクタの同期ルール(基本および高度な両方)を構成するために使用されます。詳細は同期ルールのドキュメントを参照してください。
コネクタ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
(必須、文字列)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ファイルはスキップされます。
Python
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)
Js
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": ".*"
}
]
}
コンソール-結果
次の例は、ID my-sql-connector
のMySQLコネクタのドラフト高度な同期ルールを更新します。高度な同期ルールは各コネクタタイプに特有です。高度な同期ルールをサポートするコネクタのリファレンスを参照して、構文と例を確認してください。
Python
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)
Js
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"
}]
}
}
コンソール-結果
ドラフト rules
と advanced_snippet
を単一のリクエストで更新することもできます。
ドラフトが更新されると、その検証状態は edited
に設定されます。コネクタサービスはその後、ルールを検証し、検証状態を invalid
または valid
として報告します。状態が valid
の場合、ドラフトフィルタリングは実行中のElasticコネクタサービスによってアクティブになります。