フィルター条件を設定することで、ApsaraDB RDS または PolarDB のテーブルから OpenSearch へ同期される行を制御できます。条件を満たす行のみがインデックス化されます。この条件は、フル同期および増分同期の両方に適用されます。
サポートされる構文
フィールドの種類
フィルター条件では、以下の SQL フィールド型がサポートされています。
| カテゴリ | 型 |
|---|---|
| 整数型 | TINYINT、SMALLINT、INTEGER、BIGINT |
| 浮動小数点型 | FLOAT、REAL、DOUBLE、NUMERIC、DECIMAL |
| 日時 | TIME、TIMESTAMP |
文字列(文字)型フィールドおよび DATE/DATETIME 型フィールドについては、特定の構文でサポートされます — 詳細については、「利用シーンの例」をご参照ください。
比較演算子
| 演算子 | 適用対象 |
|---|---|
<、>、<=、>= | 数値型および日時型フィールド |
=、!=、<> | 数値型および文字列型フィールド |
論理演算子
AND 論理のみがサポートされています。複数の条件をカンマ (,) で区切って指定してください。AND キーワードは使用できません。
# SQL WHERE 句(OpenSearch のフィルター条件では無効)
where status=1 and type=2 # 無効
status=1 and type=2 # 無効
# OpenSearch のフィルター条件構文
status=1,type=2 # 有効利用シーンの例
文字列型フィールドの値によるフィルター
文字列型フィールドが特定の値と一致する行のみを同期する場合:
field_string='a'
field_string!='b'文字列値には、シングルクォート (')、ダブルクォート (")、またはクォートなしのいずれかを指定できます。
文字列型フィールドが空である行、または文字列 null を含む行を同期する場合:
field = ''
field != ''
field <> ''
field = 'null'
field = 'NULL'
field != 'null'
field != 'NULL'
field <> 'null'
field <> 'NULL'NULL 値によるフィルター
数値型または文字列型フィールドが NULL である行を含める/除外する場合:
field = null
field = NULL
field != null
field != NULL
field <> null
field <> NULLIS NULLおよびIS NOT NULLはサポートされていません。= nullまたは!= nullを代わりに使用してください。
日付または日時型フィールドによるフィルター
特定の日付以降に作成された行のみを同期する場合:
createtime>'2021-02-05 00:00:00'時刻値は、YYYY-MM-DD HH:MM:SS の形式に従う必要があります。
複数条件によるフィルター
複数の条件(AND 論理のみ)を組み合わせる場合は、カンマで区切って指定します。
status=1,literal_id='abcd',createtime>'2021-02-05 00:00:00'注意事項
フィルター条件は、ApsaraDB RDS および PolarDB のデータソースにのみ適用されます。
OpenSearch アプリケーションスキーマのフィールド名ではなく、ソースデータベースのテーブルフィールド名を使用してください。
フィルター条件は、フル同期および増分同期の両方に適用されます。たとえば、
status=1が設定されている状態で、ApsaraDB RDS 内のドキュメントのstatus=1がstatus=2に変更された場合、そのドキュメントは OpenSearch へプルされません。以下の構文はサポートされていません。
OR 論理
IS NULL/IS NOT NULL関数および式(例:
in(type,1,2,3)、length(title)>10)LIKEおよびNOT LIKE1=1などの恒真条件