Una condición de filtro restringe las filas que se extraen de su tabla de base de datos de RDS o PolarDB hacia OpenSearch, tanto para la sincronización completa como para la incremental. Escriba la condición como una expresión separada por comas con los nombres de campo de la tabla de base de datos (no los del esquema de aplicación de OpenSearch).
Tipos de campo compatibles
|
Categoría |
Tipos |
|
Entero |
TINYINT, SMALLINT, INTEGER, BIGINT |
|
Punto flotante |
FLOAT, REAL, DOUBLE, NUMERIC, DECIMAL |
|
Temporal |
TIME, TIMESTAMP |
Operadores
Comparación numérica y temporal
Use <, >, <=, >= con tipos numéricos (de TINYINT a DECIMAL) y temporales (TIME, TIMESTAMP):
price > 100
createtime > '2021-02-05 00:00:00'
Igualdad y desigualdad
Use =, !=, <> tanto con tipos numéricos como de caracteres:
status = 1
field_string = 'active'
field_string != 'deleted'
field_string <> 'deleted'
Para valores de caracteres, son válidas las comillas simples ('), las comillas dobles (") o la ausencia de comillas.
Comprobación de NULL
Use =, != o <> para comprobar valores NULL, en lugar de IS NULL o IS NOT NULL. Esto aplica tanto a campos numéricos como de caracteres:
field = null
field = NULL
field != null
field != NULL
field <> null
field <> NULL
Ejemplos de tipo carácter
field = ''
field != ''
field <> ''
field = 'null'
field = 'NULL'
field != 'null'
field != 'NULL'
field <> 'null'
field <> 'NULL'
Combinar varias condiciones
Use una coma (,) para representar la lógica AND. El operador OR no es compatible.
status=1,literal_id='abcd',createtime>'2021-02-05 00:00:00'
La cláusula SQL WHERE equivalente es:
WHERE status = 1 AND literal_id = 'abcd' AND createtime > '2021-02-05 00:00:00'
No use AND ni la palabra clave WHERE directamente en la condición de filtro:
WHERE status=1 AND type=2 -- Incorrect
status=1 AND type=2 -- Incorrect
status=1,type=2 -- Correct
Notas de uso
Alcance
La función de filtrado de orígenes de datos está disponible para orígenes de datos de RDS y PolarDB.
Efecto en las eliminaciones
Cuando una condición de filtro está activa, OpenSearch elimina cualquier documento que deje de cumplir dicha condición, incluso durante la sincronización incremental.
Por ejemplo, si el filtro es status=1 y el estado de un documento cambia de 1 a 2 en RDS, ese documento se elimina de OpenSearch.
Si su origen de datos tiene una tabla principal y una secundaria, aplique condiciones de filtro a ambas tablas para evitar un consumo innecesario de almacenamiento en la tabla secundaria.
Nomenclatura de campos
Use los nombres de campo de la tabla de base de datos, no los del esquema de aplicación de OpenSearch.
Campos DATE y DATETIME
Para los campos DATE o DATETIME, el valor de tiempo debe tener el formato obligatorio. Ejemplo:
createtime>'2018-03-01 00:00:00'
Operaciones no compatibles
|
No compatible |
Ejemplo incorrecto |
Alternativa correcta |
|
|
|
|
|
|
|
— |
|
Funciones y expresiones |
|
— |
|
Ecuaciones de identidad |
|
— |
|
Lógica OR |
|
Use coma para AND: |