Queries[editar]
Elasticsearch utiliza Query DSL (Lenguaje de dominio específico) para realizar las consultas a los documentos indexados. Es un lenguaje sumamente flexible y de gran alcance, además de simple, que permite conocer y explorar los datos de la mejor manera. Al ser utilizado a través de una interfaz de tipo JSON, las consultas son muy sencillas de leer y, lo más importante, de depurar.
Sobre la base de su estructura y componentes, las consultas se componen de dos cláusulas: "Leaf Query Clauses" y "Compound Query Clauses". La primera hace referencia a aquellas consultas que tienen operaciones como "match", "term" o "range", que devuelven un valor especifico solicitado. Las segundas se podría decir que son una combinación de la primera, una manera de realizar consultas "conjuntas" para obtener información más compleja y detallada.
Tipos de consultas[editar]
Una consulta comienza con la palabra "query" seguida de unas condiciones y filtros dentro, en la forma de un objeto JSON. Existen distintos tipo de consultas que podemos identificar, por ejemplo:
Match all query[editar]
La consulta más básica que se puede hacer. Devuelve todos los objetos que se encuentren indexados:
{ "query":{ "match_all":{} } }
Match query[editar]
Este tipo de consulta se utiliza para realizar una búsqueda donde se busca igualar determinados valores de un término o una frase. Entonces, si buscamos, por ejemplo dentro de nuestra base de datos, todos los objetos cuyo atributo color es verde, tomaría la siguiente forma:
{ "query":{ "match" : { "color":"verde" } } }
Multi match query[editar]
Muy similar a la consulta descrita anteriormente, pero en lugar de buscar la coincidencia con un valor solo, chequea con varios campos:
{ "query":{ "multi_match" : { "query": "montevideo", "fields": [ "ciudad", "departamento" ] } } }
Term queries[editar]
Este tipo de consultas se utilizan cuando se trabaja con datos como números o fechas, para buscar el valor de un término concreto:
{ "query":{ "term":{"animal":"perro"} } }
Range query[editar]
Otro tipo de consultas son aquellas que buscan por el rango de determinado atributo. Se utilizan distintos operadores ("gte": mayor ó igual a determinado valor, "gt": mayor a determinado valor, "lte": menor ó igual , "lt": menor):
{ "query":{ "range":{ "rating":{ "gte":4 } } } }
Estos son algunos de los ejemplos de consulta que se pueden utilizar. Son muchas más las opciones, los operadores y los filtros que se pueden usar; sobre todo si se empieza a combinar los mismos.