はじめに
サポートされているフィールドタイプ: TINYINT、SMALLINT、INTEGER、BIGINT、FLOAT、REAL、DOUBLE、NUMERIC、DECIMAL、TIME、および TIMESTAMP
サポートされている比較演算子: <、>、<=、>=、=、!=、<>。注: =、!=、および <> は、数値型と文字型のフィールドをフィルタリングするために使用できます。
サポートされている値: null を含むすべての値
例
1. 文字型のフィールドをフィルタリングする: field_string='a'
または field_string! ='b'
一重引用符 (') または二重引用符 (") を使用することも、引用符を使用しないこともできます。次の例は、空のフィールドと null 値を持つフィールドをフィルタリングするために使用できる条件を示しています。
field = ''
field != ''
field <> ''
field = 'null'
field = 'NULL'
field != 'null'
field != 'NULL'
field <> 'null'
field <> 'NULL'
2. null 値を持つフィールドをフィルタリングする: 次の例は、null 値を持つ数値型または文字型のフィールドをフィルタリングするために使用できる条件を示しています。
# 次のフィルタ条件は有効です。
field = null
field = NULL
field != null
field != NULL
field <> null
field <> NULL
3. DATE 型または DATETIME 型のフィールドをフィルタリングする: createtime>'2021-02-05 00:00:00'
4. 複数の条件に基づいてフィールドをフィルタリングする: 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 にプルされません。
AND 論理演算のみがサポートされています。カンマ (,) を使用して AND 論理演算を実装します。OR 論理演算はサポートされていません。
## SQL ステートメントの WHERE 句:
where status=1 and type=2
# OpenSearch でのデータソースのフィルタリングの設定。
where status=1 and type=2 # 無効です。
status=1 and type=2 # 無効です。
status=1,type=2 # 有効です。
null 値または null 以外の値を持つフィールドをフィルタリングする必要がある場合は、is null または is not null を使用することはできません。有効な構文の詳細については、このトピックの「例」セクションの null 値を持つフィールドをフィルタリングするための条件を参照してください。
データベーステーブルの createtime という名前のフィールドなど、DATE 型または DATETIME 型のフィールドをフィルタリングする必要がある場合は、フィルタ条件の時刻が必須の形式である必要があります。例:
createtime>'2018-03-01 00:00:00'
。in(type,1,2,3) や length(title)>10 などの関数や式はサポートされていません。
like '%aaa' や not like '%bbb' などの like および not like はサポートされていません。
1=1 などの同一の等式はサポートされていません。
データソースにプライマリテーブルとセカンダリテーブルが設定されている場合は、プライマリテーブルとセカンダリテーブルの両方でデータをフィルタリングすることをお勧めします。これにより、セカンダリテーブルのデータが過剰なストレージ容量を占有するのを防ぎます。