DSL (DOMAIN SPECIFIC LANGUAGE)
Es el lenguaje que se utiliza para realizar las consultas dentro de Elastic Search y donde Kibana utiliza para para realizar las visualizaciones que representan nuestros Dashboards.
Utiliza el formato JSON
Existen dos tipos:
- Consultas Simples
- Consultas Compuestas
Query DSL Características
Su comportamiento varía dependiendo del contexto:
Query (Context): Se calcula una puntuación (_score) evaluando la coincidencia de los resultados en esa consulta.
Filter (Context): Comprueba si un documento cumple las condiciones de la consulta o si debe o no realizar una puntuación.
Match All Query (Query que devuelve todos los resultados y no hace ningún tipo de filtrado)
GET /_search
{“query”:{match_all”:{} } }
Match None Query (Query que no devuelve ningún resultado
GET /_search
{“query”:{match_none”:{} } }
Full Text Queries (Aplicadas sobre campos que contengan texto)
- match_query (Recoge las palabras de una cadena de texto)
- match_phrase query (Analiza el conjunto de la frase)
- match_phrase_prefix query (Busca un valor en más de un campo)
- multi_ match query
- common terms query
- query_strings query (Búsqueda sencilla aplicando lógica – “OR”)
- simple_query_strings query
Term Level Queries (Consulta sobre datos estructurados y parseados como números, fechas, texto, etc. Busca a nivel del contenido del campo)
- term query (Interpreta todo como una única String, no interpreta por separado los valores a buscar)
- terms query (Busca distintos valores en un único campo)
- terms_set query
- range query
- exists query (Filtra los eventos en donde exista el campo declarado)
- prefix query
- wildcard query (Uso de expresiones regulares dentro de un campo)
- regexp query
- fuzzy query
- type query
Compound Queries (Consultas compuestas. Envuelven otras consultas, ya sea para combinar sus resultados/scores, para modificar su comportamiento o para cambiar el contexto a filtrado.)
- constant_score query (Hacer un filtrado por el Score)
- bool query (Consulta Booleana)
- dis_max query
- function_score query (Cambiar el valor del Score)
- boosting query
Joining Queries
La realización de JOINs (como en SQL) es muy pesado (recursos). Elasticsearch ofrece dos formas de realizarlo:
- nested query (Cuando un campo tenga una estructura JSON en su interior)
- has_child query (Dependencia de documento padre)
- has_parent query (Declaración de documento padre)
GEO Queries
- Soporta geo_point (lat,lon) y geo_shape (polígonos)
Specialized Queries (Aquellas que no encajan en ningún otro grupo)
- More_like_this query
- Script query
- Percolate query
- Wrapper query
Ejemplos Full_text_y_Term_Queries
Ejemplos Otras_queries