Une condition de filtrage restreint les lignes extraites de votre table de base de données RDS ou PolarDB vers OpenSearch, tant pour la synchronisation complète que pour la synchronisation incrémentielle. Saisissez la condition sous la forme d'une expression séparée par des virgules en utilisant les noms de champs de la table de base de données (et non les noms de champs du schéma de l'application OpenSearch).
Types de champs pris en charge
| Catégorie | Types |
|---|---|
| Entier | TINYINT, SMALLINT, INTEGER, BIGINT |
| Nombre à virgule flottante | FLOAT, REAL, DOUBLE, NUMERIC, DECIMAL |
| Temporel | TIME, TIMESTAMP |
Opérateurs
Comparaison numérique et temporelle
Utilisez <, >, <=, >= avec les types numériques (de TINYINT à DECIMAL) et les types temporels (TIME, TIMESTAMP) :
price > 100
createtime > '2021-02-05 00:00:00'
Égalité et inégalité
Utilisez =, !=, <> avec les types numériques et de caractères :
status = 1
field_string = 'active'
field_string != 'deleted'
field_string <> 'deleted'
Pour les valeurs de type caractère, les guillemets simples ('), les guillemets doubles (") ou l'absence de guillemets sont tous valides.
Vérification des valeurs NULL
Utilisez =, != ou <> pour vérifier les valeurs NULL, et non IS NULL ou IS NOT NULL. Cela s'applique aux champs numériques et de caractères :
field = null
field = NULL
field != null
field != NULL
field <> null
field <> NULL
Exemples de type caractère
field = ''
field != ''
field <> ''
field = 'null'
field = 'NULL'
field != 'null'
field != 'NULL'
field <> 'null'
field <> 'NULL'
Combiner plusieurs conditions
Utilisez une virgule (,) pour représenter la logique ET. L'opérateur OU n'est pas pris en charge.
status=1,literal_id='abcd',createtime>'2021-02-05 00:00:00'
La clause WHERE SQL équivalente est la suivante :
WHERE status = 1 AND literal_id = 'abcd' AND createtime > '2021-02-05 00:00:00'
N'utilisez pas directement AND ni le mot-clé WHERE dans la condition de filtrage :
WHERE status=1 AND type=2 -- Incorrect
status=1 AND type=2 -- Incorrect
status=1,type=2 -- Correct
Notes d'utilisation
Portée
La fonctionnalité de filtrage des sources de données est disponible pour les sources de données RDS et PolarDB.
Impact sur les suppressions
Lorsqu'une condition de filtrage est active, OpenSearch supprime tout document qui ne correspond plus à la condition, y compris lors de la synchronisation incrémentielle.
Par exemple, si le filtre est status=1 et que le statut d'un document passe de 1 à 2 dans RDS, ce document est supprimé d'OpenSearch.
Si votre source de données comporte une table principale et une table secondaire, appliquez des conditions de filtrage aux deux tables afin d'éviter une consommation inutile d'espace de stockage pour la table secondaire.
Nommage des champs
Utilisez les noms de champs de la table de base de données, et non ceux du schéma de l'application OpenSearch.
Champs DATE et DATETIME
Pour les champs DATE ou DATETIME, la valeur temporelle doit respecter le format requis. Exemple :
createtime>'2018-03-01 00:00:00'
Opérations non prises en charge
| Non pris en charge | Exemple incorrect | Alternative correcte |
|---|---|---|
IS NULL / IS NOT NULL |
field IS NULL |
field = null |
LIKE / NOT LIKE |
LIKE '%aaa' |
— |
| Fonctions et expressions | in(type,1,2,3), length(title) > 10 |
— |
| Équations d'identité | 1 = 1 |
— |
| Logique OU | status=1 OR type=2 |
Utilisez une virgule pour ET : status=1,type=2 |