Un índice de posición registra el orden y la ubicación de los tokens, lo que permite coincidir frases en el nivel de índice. Al habilitar un índice de posición, las consultas de frase devuelven resultados de registros e histogramas precisos sin analizar los registros candidatos.
La función de índice de posición se encuentra actualmente en versión preliminar y no tiene costo. Esta función solo está disponible para los usuarios incluidos en la lista de permitidos. Para utilizarla, envíe un ticket y solicite acceso.
Funcionamiento
Un índice de posición es un modificador a nivel de logstore que hereda las configuraciones de índice existentes para distinción entre mayúsculas y minúsculas, segmentación de palabras en chino y delimitadores. No amplía la cobertura de los índices existentes. Al habilitar esta función, el sistema registra las posiciones de los tokens para los índices de texto tokenizables existentes, incluidos los índices de texto completo, los índices de campos de tipo texto y los campos hoja indexados como texto dentro de los índices de campos de tipo JSON. Los campos sin índice de texto no generan un índice de posición.
Por ejemplo, si el índice de texto completo está deshabilitado y solo message tiene un índice de campo de tipo texto, y el campo hoja error bajo el campo JSON payload tiene un índice de tipo texto, únicamente message y payload.error generarán un índice de posición.
Requisitos previos
Ha enviado un ticket para agregar el logstore objetivo a la lista de permitidos del índice de posición.
El logstore objetivo tiene un full-text index or a text-type field index configurado.
Habilitar un índice de posición
Habilitar desde la consola
Habilitar desde la consola
Inicie sesión en la consola de Simple Log Service.
Vaya a la página de consulta y análisis del logstore objetivo.
Elija .
Active el interruptor Enable Position Index en la parte inferior de la página y guarde la configuración.
La configuración surte efecto en aproximadamente un minuto.
Habilitar mediante un SDK
Habilitar mediante un SDK
A continuación se muestra un ejemplo que utiliza el SDK de Python. Los SDK de otros lenguajes siguen un enfoque similar.
Instale el SDK de Python:
pip install -U aliyun-log-python-sdk
Actualizar un índice sobrescribe toda la configuración. Lea primero la configuración existente y luego agregue el campo de nivel superior "position_index": true:
from aliyun.log import LogClient
class IndexConfigJson(dict):
def to_json(self):
return self
client = LogClient(
"your-endpoint",
"your-access-key-id",
"your-access-key-secret",
)
project = "your-project"
logstore = "your-logstore"
config = client.get_index_config(project, logstore).get_body()
config.pop("lastModifyTime", None)
config["position_index"] = True
client.update_index(project, logstore, IndexConfigJson(config))
Uso de consultas de frase
Una phrase query utiliza # como identificador y encierra la frase entre comillas dobles.
|
Tipo de consulta |
Sintaxis |
Ejemplo |
|
Consulta de frase de texto completo |
|
|
|
Consulta de frase de campo |
|
|
Una consulta de frase coincide con secuencias de tokens y posiciones adyacentes; no realiza una coincidencia carácter por carácter. Por ejemplo, connection reset by peer coincide con #"connection reset", pero connection was reset by peer no.
Comparación de capacidades
Un índice de posición no modifica la sintaxis de la consulta de frase, sino que mejora sus capacidades:
|
Elemento |
Sin índice de posición |
Con índice de posición |
|
Método de coincidencia |
Lee los registros candidatos y los verifica uno por uno |
Realiza una coincidencia exacta en el nivel de índice |
|
Paginación de resultados |
Solo admite paginación secuencial |
Admite paginación secuencial y saltos de página aleatorios |
|
Histograma |
Basado en resultados candidatos de palabras clave |
Basado en resultados de frase precisos |
|
Combinación de condiciones |
No admite condiciones |
Admite condiciones |
|
Sentencia analítica |
No compatible |
Compatible |
|
SPL |
No compatible |
Compatible |
Los siguientes ejemplos muestran condiciones y análisis disponibles únicamente cuando se habilita un índice de posición:
not #"connection reset"
#"connection reset" and host:api-*
#"connection reset" | SELECT level, count(*) GROUP BY level
#"connection reset" | where level = 'ERROR'
Notas de uso
Un índice de posición solo surte efecto en datos recién escritos o en datos con índices reconstruidos. Los datos históricos no generan automáticamente un índice de posición.
La consulta de frase mejorada se utiliza solo cuando todos los datos dentro del rango de consulta cuentan con un índice de posición. Si algún dato en el rango carece de este índice, la consulta recurre a la ruta de procesamiento sin índice de posición.
Habilitar un índice de posición incrementa la sobrecarga de construcción y almacenamiento del índice. Este aumento depende principalmente de la frecuencia de aparición de los tokens.
Los tokens de alta frecuencia y los rangos de tiempo más amplios aumentan el volumen de lectura de datos de posición. Reduzca el rango de tiempo, agregue condiciones de campo o utilice frases más específicas.
Si un logstore tiene tanto un índice de texto completo como índices de campos de tipo texto con diferentes configuraciones de tokenización, la consulta de frase de texto completo
#"phrase"solo coincidirá según el resultado de tokenización del índice de texto completo. Para contenido que solo puede coincidir mediante un índice de campo, utilice la consulta de frase de campofield:#"phrase".Al actualizar un índice mediante la API o el SDK, conserve la configuración existente para evitar sobrescribir y perder los ajustes actuales.