Cuando crea índices, puede establecer el tipo de dato de un campo como text, long, double o JSON. Este tema describe los tipos de dato de los campos y proporciona ejemplos de configuración.
Descripción general de los tipos de dato
Se recomienda usar la consola para create indexes. Simple Log Service (SLS) genera automáticamente un índice de campo con base en la primera entrada de los datos de vista previa durante la recopilación. También es posible crear índices de campo personalizados.
-
Tipos text, long y double:
-
Si desea consultar y analizar campos de tipo string, debe establecer el tipo de dato de los campos como text al crear los índices y habilitar Enable Analytics para dichos campos.
NotaLos campos de tipo text, long y double pueden tener el análisis habilitado de forma independiente. Un campo se puede usar para filtrar con cláusulas WHERE, realizar análisis agregados (SELECT/GROUP BY) y generar visualizaciones en consultas SQL únicamente después de habilitar Enable Analytics para ese campo. Si el análisis no está habilitado, es posible que el campo no se pueda extraer o que devuelva null en el análisis de la consulta SQL.
En la interfaz de configuración Key/Value Index Attributes de la consola, cada fila de campo tiene un interruptor Enable Analytics. Este interruptor está disponible de manera independiente para los tipos de campo text, long y double, y no desaparece cuando cambia el tipo de campo.
ImportanteLa longitud máxima predeterminada del valor de un campo en Simple Log Service es de 2 KB (2,048 bytes). El contenido que supera este límite se trunca y no se indexa ni se analiza. Esto no afecta la recopilación ni el reporte de Raw Logs.
Para analizar por completo campos más largos, puede aumentar la longitud máxima de un campo de texto analizado a 16 KB. El impacto de aumentar este límite en el rendimiento del análisis SQL no está documentado. Evalúe el impacto según su escenario de negocio.
-
Consulte el valor de un campo mediante un rango numérico solo si estableció el tipo de dato del campo como long o double. Si establece el tipo de dato de un campo como long o double, no podrá consultarlo mediante un asterisco (*) o un signo de interrogación (?). Estos caracteres comodín se usan para ejecutar una coincidencia aproximada.
Si el valor de un campo es un número entero, establezca el tipo de dato del campo como long.
Si el valor de un campo es un número de punto flotante, establezca el tipo de dato del campo como double. De lo contrario, no podrá consultar el campo.
Si establece el tipo de dato de un campo como long o double, pero el valor del campo es una cadena, no podrá consultar el campo.
ImportanteSi el valor de un campo es un valor numérico no válido, consulte el campo mediante la instrucción de búsqueda not key > -1000000. Esta instrucción devuelve los registros donde el valor del campo es un valor numérico no válido. Reemplace -1000000 con un valor numérico válido que sea menor o igual al valor numérico válido más pequeño del campo en sus registros.
-
-
Tipo JSON: si el valor de un campo es de tipo JSON, establezca el tipo de dato del campo como JSON cuando cree los índices.
-
Establezca el tipo de dato de un campo en objetos JSON como long, double o text según el valor del campo y habilite Enable Analytics para dicho campo. Después de habilitar Enable Analytics, SLS le permite consultar y analizar el campo.
Si selecciona Automatically Index All Text Fields in JSON Field, se crean índices automáticamente para todos los campos de tipo text en los objetos JSON. Una vez creados los índices, se genera tráfico de índice.

-
Para datos con formato JSON parcialmente válidos, SLS solo puede analizar sintácticamente la parte válida de los datos.
A continuación se muestra un ejemplo de un registro JSON incompleto. SLS puede analizar sintácticamente los campos content.remote_addr, content.request.request_length y content.request.request_method.
content: { remote_addr:"192.0.2.0" request: { request_length:"73" request_method:"GEImportantePuede crear índices para nodos hoja en objetos JSON. No es posible crear índices para nodos secundarios que contienen nodos hoja.
No se pueden crear índices para campos cuyos valores son arreglos JSON ni para campos dentro de un arreglo JSON.
Si el valor de un campo es de tipo booleano, puede establecer el tipo de dato del campo como text cuando cree los índices.
Una instrucción de consulta tiene el formato
Search statement|Analytic statement. En una instrucción analítica, debe encerrar el nombre del campo entre comillas dobles ("") y las cadenas entre comillas simples ('').
-
Referencias
Para obtener más información sobre los escenarios y las preguntas frecuentes relacionadas con la consulta y el análisis de registros JSON, consulte FAQ about querying and analyzing JSON logs. Las preguntas frecuentes incluyen información sobre cómo crear índices, consultar y analizar campos JSON indexados, usar funciones JSON y analizar arreglos JSON.
Para obtener más información sobre las configuraciones y el procedimiento relacionado con la consulta y el análisis de registros JSON, consulte Query and analyze JSON logs.
Si el volumen de datos de los registros JSON que desea consultar y analizar es pequeño, no necesita crear índices para los nodos hoja JSON. Use funciones JSON para consultar y analizar los registros. En ciertos casos de uso, solo puede usar funciones JSON para la consulta y el análisis. Para obtener más información sobre el uso de las funciones JSON, consulte When to use JSON functions. Para conocer las descripciones y los ejemplos de las funciones JSON, consulte JSON functions.
-
A diferencia de los campos normales, los rangos de fecha y hora no se pueden configurar como campos indexados. Para consultar registros, especifique manualmente un rango de tiempo mediante Time Range en la consola.
Procedimiento
Cree índices en la consola de SLS. Para obtener más información, consulte Create an index.
-
Seleccione los tipos de dato para los campos cuando cree los índices.
Tipos text, long y double
Registro de ejemplo

Configuraciones de índice

-
Instrucciones de consulta de ejemplo
Para consultar los registros cuya duración de solicitud es mayor a 60 segundos, ejecute la siguiente instrucción:
request_time > 60Para consultar los registros cuya duración de solicitud es mayor o igual a 60 segundos, pero menor a 200 segundos, ejecute una de las siguientes instrucciones:
request_time in [60 200)yrequest_time >= 60 and request_time < 200.Para consultar los registros cuyo código de estado de solicitud es 200, ejecute la siguiente instrucción:
status = 200.Para consultar los registros que no registran solicitudes GET, ejecute la siguiente instrucción:
not request_method : GET.Para consultar los registros que contienen palabras específicas que comienzan con cn, ejecute la siguiente instrucción:
cn*.Para recopilar estadísticas de distribución de clientes, ejecute la siguiente instrucción:
* | SELECT ip_to_province(client_ip) as province, count(*) AS pv GROUP BY province ORDER BY pv.
Tipo JSON
-
Registro de ejemplo
La siguiente figura muestra un ejemplo de un registro JSON. El registro contiene los campos class, latency, status e info, además de los campos reservados de SLS. El valor del campo info es un objeto JSON que contiene varias capas.

-
Configuraciones de índice

A continuación se detallan más aspectos:
Los valores de los campos IP y data son arreglos JSON. Por lo tanto, no puede crear índices para el campo IP ni para el campo data, y tampoco puede consultar ni analizar datos mediante estos campos.
Los campos region y CreateTime están dentro de un arreglo JSON. Por lo tanto, no puede crear índices para el campo region ni para el campo CreateTime, y tampoco puede consultar ni analizar datos mediante estos campos.
-
Instrucciones de consulta de ejemplo
Para consultar los registros donde el valor del campo usedTime es mayor a 60 segundos, ejecute la siguiente instrucción:
info.usedTime > 60.Para consultar los registros donde el valor del campo success es true, ejecute la siguiente instrucción:
info.success : true.Para consultar los registros donde el valor del campo usedTime es mayor a 60 segundos y el valor del campo projectName no es project01, ejecute la siguiente instrucción:
info.usedTime > 60 not info.param.projectName : project01.Para calcular la duración promedio necesaria para obtener la información del proyecto, ejecute la siguiente instrucción:
methodName = getProjectInfo | SELECT avg("info.usedTime") AS avg_time.
Al configurar índices, tenga en cuenta las siguientes reglas:
Debe habilitar como mínimo uno de los atributos FullText Index o Key/Value Index.
Las configuraciones de índice a nivel de campo anulan los ajustes de campos con el mismo nombre en FullText Index. Por ejemplo, si un campo está configurado para búsqueda tokenizada de texto completo en FullText Index, pero usted configura por separado un tipo y propiedades para este campo en Key/Value Index, la configuración de Key/Value Index tiene prioridad.
Cuando el tipo de campo es long o double, las propiedades Case Sensitive y Token no surten efecto.
Solo es posible reducir el tiempo de retención del índice.
Los cambios en la configuración de índices (incluida la adición de campos, la modificación de tipos y la activación de los interruptores de estadísticas o consultas) surten efecto después de aproximadamente 1 minuto. Sin embargo, solo aplican a los datos nuevos escritos después de que el índice entra en vigor. Para consultar datos históricos, debe reindexar los datos. Para obtener más información, consulte Reindex data.
La reindexación solo admite datos de los últimos 30 días y con una antigüedad mínima de 15 minutos.