Al sincronizar datos desde un origen hacia OpenSearch, es posible que los valores de los campos requieran transformación antes de la indexación; por ejemplo, dividir una cadena separada por comas en un arreglo o eliminar etiquetas HTML. Los plugins de procesamiento de datos gestionan estas transformaciones automáticamente durante la sincronización, por lo que no es necesario preprocesar los datos fuera de OpenSearch.
Los plugins de procesamiento de datos solo están disponibles cuando se sincronizan datos mediante un origen de datos configurado. Si carga datos a través de la operación de API o los SDK de OpenSearch, procese la información antes de cargarla.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Un origen de datos configurado para su aplicación de OpenSearch
Asignaciones de campos definidas entre las tablas de origen y las tablas de OpenSearch
Configure los plugins al establecer el origen de datos, no al definir el esquema de la aplicación. Los plugins solo están disponibles después de configurar un origen de datos.
Restricciones del origen de datos
Tenga en cuenta estas restricciones antes de configurar los plugins:
ApsaraDB RDS y PolarDB: Una tabla de OpenSearch puede asociarse con varias tablas de origen (admite fragmentación de base de datos y tablas).
MaxCompute: Una tabla de OpenSearch solo puede asociarse con una única tabla de origen. Para sincronizar datos desde varias tablas de origen de MaxCompute, primero combínelas en una sola tabla.
Plugins disponibles
OpenSearch proporciona cinco plugins para la transformación de campos durante la sincronización:
|
Plugin |
Tipo de transformación |
Función |
|
JsonKeyValueExtractor |
Extracción de JSON |
Extrae el valor de una clave específica de un campo de origen con formato JSON |
|
MultiValueSpliter |
División de valores |
Divide un campo de origen en varios valores mediante un delimitador |
|
KeyValueExtractor |
Extracción de pares clave-valor |
Extrae claves y valores de campos de origen con pares clave-valor |
|
StringCatenateExtractor |
Concatenación de cadenas |
Concatena valores de varios campos en una sola cadena |
|
HTMLTagRemover |
Eliminación de HTML |
Elimina las etiquetas HTML del valor de un campo de origen |
JsonKeyValueExtractor
Extrae el valor de una clave específica de un campo de origen con formato JSON y lo asigna al campo de destino. Solo es posible extraer el valor de la clave indicada.
Requisito de tipo: El tipo del valor extraído debe coincidir con el tipo del campo de destino. Si los tipos no coinciden, el valor extraído se descarta sin notificación.
Conversión de arreglos: Si el valor extraído es un arreglo JSON, se convierte automáticamente en un valor de campo de tipo Array.
Ejemplo
Valor del campo de origen:
{"title": "the content", "body": "the content"}
Para extraer la clave title, configure el plugin para que apunte a title. El campo de destino recibirá "the content".
Para tipos Array:
Origen LITERAL_ARRAY:
{"tags": ["a", "b", "c"]}Origen INT_ARRAY:
{"tags": [1, 2, 3]}
MultiValueSpliter
Divide el valor de un campo de origen en varios valores mediante un delimitador específico y escribe los resultados en un campo de destino de tipo Array.
Requisito de tipo: El campo de destino debe ser de tipo Array.
Compatibilidad con delimitadores:
|
Tipo de delimitador |
Cómo especificarlo |
|
Caracteres no imprimibles comunes (por ejemplo, |
Escríbalos directamente |
|
Caracteres no imprimibles poco comunes |
Use la notación Unicode (por ejemplo, |
|
Delimitadores de varios caracteres (por ejemplo, |
Escríbalos directamente |
Ejemplo
Valor del campo de origen: 1,2,3
Especifique , como delimitador.
Para obtener más detalles sobre la configuración, consulte MultiValueSpliter configuration.
KeyValueExtractor
Extrae claves y valores específicos de un campo de origen con formato de pares clave-valor, y asigna los resultados al campo de destino. Solo pueden extraerse los valores de la clave especificada. No se requieren delimitadores.
Requisito de tipo: El tipo del valor extraído debe coincidir con el tipo del campo de destino. Si los tipos no coinciden, el valor se descarta sin notificación. Si un delimitador separa los valores extraídos, el campo de destino debe ser de tipo Array.
Comportamiento ante claves duplicadas: Si existen dos claves idénticas, solo se extrae el valor de la segunda.
Ejemplo
Valor del campo de origen: key1:value1,value2;key2:value3
Configuración:
Los pares clave-valor se separan con punto y coma (
;): separakey1:value1,value2dekey2:value3Las claves y los valores se separan con dos puntos (
:): separa la clave del valorLos valores se separan con comas (
,): separa varios valores para una misma clave
StringCatenateExtractor
Concatena valores de varios campos de la tabla de destino en una sola cadena según un orden específico.
Requisito de tipo: Este plugin no puede concatenar campos de tipo INT. Se recomienda usar campos de tipo LITERAL.
Origen de los campos: Los campos deben provenir de la tabla de destino, no de la tabla de origen. Separe los nombres de los campos con comas (,).
Variable del sistema: Use $table para incluir el nombre de la tabla actual en la cadena concatenada. $table solo se completa cuando se configura un comodín de fragmentación de tablas.
Ejemplo
Para concatenar field1 y field2 con un guion bajo (_) como separador.
HTMLTagRemover
Elimina todas las etiquetas HTML del valor de un campo de origen. El campo de destino recibe únicamente el contenido en texto plano.
Ejemplo
Valor del campo de origen: <div id="copyright">OpenSearch</div>
Después del procesamiento, el valor del campo de destino será: OpenSearch
Limitaciones
|
Restricción |
Detalle |
|
Cargas mediante API y SDK |
Los plugins no están disponibles. Procese los datos antes de cargarlos. |
|
Origen de datos de MaxCompute |
Una tabla de OpenSearch se asigna únicamente a una tabla de origen de MaxCompute |
|
StringCatenateExtractor |
No admite la concatenación de campos de tipo INT |
|
JsonKeyValueExtractor y KeyValueExtractor |
La falta de coincidencia entre el tipo del valor extraído y el campo de destino provoca la pérdida silenciosa de datos |
|
Momento de configuración del plugin |
Configúrelos solo después de establecer un origen de datos; no están disponibles durante la definición del esquema |