This post is also available in english.
¿Ya has probado ES|QL? ES|QL es un lenguaje diseñado desde cero para Elasticsearch. Está pensado para proporcionar la mejor experiencia para filtrar, analizar y transformar tus datos.
El filtrado de texto es fundamental para acotar los resultados en las búsquedas. A menudo necesitarás búsquedas de texto para:
• Encontrar mensajes específicos en logs
• Obtener resultados con una etiqueta o un valor en un campo determinados
• Recuperar todos los hosts de una lista que contienen una cadena específica en su nombre
¡ES|QL puede ayudar! Hay varias funciones de filtrado de texto que puedes utilizar para encontrar texto en tus datos.
Coincidencia exacta
Puedes usar el operador de igualdad (==
) para encontrar una coincidencia exacta de texto:
FROM logs
| WHERE environment == "production"
Esto sólo encontrará resultados que coincidan exactamente con la cadena proporcionada.
Por supuesto, puedes utilizar la expresividad de ES|QL para transformar tanto el texto que buscas como los valores en los que se buscará:
FROM logs
| WHERE LEFT(environment, 10) == TO_UPPER("production")
Coincidencia parcial
La búsqueda por patrones permite buscar una subcadena específica:
FROM hosts
| WHERE STARTS_WITH(host, "prod-")
FROM access
| WHERE ENDS_WITH(username, "-test")
También puedes usar patrones de cadenas con comodines (wildcards)…
FROM logs
| WHERE message LIKE """*NullPointerException*"""
… o expresiones regulares…
FROM users
| WHERE email RLIKE """.+\.com$"""
Las comillas triples evitan que sea necesario escapar caracteres, para que puedas concentrarte en lo que necesitas buscar.
Limitaciones del filtrado de texto
El filtrado de texto es perfecto para descubrir y filtrar tus datos, pero hay algunas limitaciones en los métodos anteriores:
• El texto no está analizado. Es posible que quieras utilizar analizadores para procesar el texto y la consulta, asegurando que se obtenga el mejor resultado posible.
• Valores múltiples. Las funciones en ES|QL devuelven null cuando se aplican a un campo con múltiples valores. Es necesario procesar de antemano los valores múltiples para poderlos buscar, por ejemplo, usando MV_CONCAT
.
Presentamos la nueva búsqueda de texto completo
Hemos incluido la búsqueda de texto completo en ES|QL para conseguir mejores resultados en las búsquedas de texto.
Se han añadido dos nuevas funciones a Elastic Serverless, que estarán disponibles también en Elasticsearch 8.17:
• match(field, query)
: Permite hacer una query match para buscar en campos específicos.
• qstr(query):
Usa la sintaxis de query string para realizar consultas complejas.
Estas funciones usan los analizadores para realizar las búsquedas, y también pueden buscar en valores individuales en valores múltiples, sin necesidad de ningún paso adicional.
Ahora es posible realizar búsquedas de texto completo como la siguiente:
FROM logs
| WHERE match(message, "this is a test")
Se puede simplificar aún más la función match
usando el operador match (:
):
FROM logs
| WHERE message : "this is a test"
También se puede utilizar qstr
para realizar consultas complejas que incluyan varios campos y condiciones:
FROM emails
| WHERE qstr("subject:(new york city) OR text:(big apple)")
qstr
también permite realizar búsqueda difusa (fuzzy):
FROM emails
| WHERE qstr("subject: york~2")
Seguiremos incluyendo nuevas funcionalidades a las funciones de búsqueda de texto completo, ¡mantente informado!
¡Pruébalo!
Hay varias formas de realizar filtrados de texto en ES|QL para encontrar tus datos. Ya sea coincidencia exacta, patrones, o búsqueda de texto completo, ES|QL tiene todo lo que necesitas.
Empieza a buscar en tus textos con ES|QL, y ¡cuéntanos tu opinión!