En este tema, aprenderemos cómo realizar búsquedas en Elasticsearch. Este es uno de los aspectos más poderosos y útiles de Elasticsearch, ya que permite realizar consultas rápidas y eficientes sobre grandes volúmenes de datos.
- Introducción a la Búsqueda en Elasticsearch
Elasticsearch utiliza un lenguaje de consulta llamado Query DSL (Domain Specific Language) que permite construir consultas complejas de manera sencilla. Las búsquedas en Elasticsearch se realizan mediante solicitudes HTTP a la API RESTful.
Conceptos Clave
- Índice: Un contenedor de documentos que comparten características similares.
- Documento: La unidad básica de información que se puede indexar.
- Tipo: Una categoría de documentos dentro de un índice (obsoleto en versiones recientes de Elasticsearch).
- Realizando una Búsqueda Básica
Para realizar una búsqueda básica, utilizamos el método HTTP GET
en la ruta /_search
. A continuación, se muestra un ejemplo de una búsqueda simple que devuelve todos los documentos en un índice.
Ejemplo de Búsqueda Básica
Explicación del Código
GET /mi_indice/_search
: Realiza una búsqueda en el índice llamadomi_indice
."query": { "match_all": {} }
: Utiliza la consultamatch_all
que devuelve todos los documentos en el índice.
- Búsqueda por Campos Específicos
Podemos buscar documentos que coincidan con un valor específico en un campo determinado utilizando la consulta match
.
Ejemplo de Búsqueda por Campo
Explicación del Código
"match": { "campo": "valor" }
: Busca documentos donde el campocampo
coincida con el valorvalor
.
- Búsqueda con Múltiples Condiciones
Para realizar búsquedas con múltiples condiciones, podemos utilizar la consulta bool
que permite combinar varias consultas.
Ejemplo de Búsqueda con Múltiples Condiciones
GET /mi_indice/_search { "query": { "bool": { "must": [ { "match": { "campo1": "valor1" } }, { "match": { "campo2": "valor2" } } ] } } }
Explicación del Código
"bool": { "must": [...] }
: La consultabool
con la cláusulamust
requiere que todas las condiciones dentro de la lista se cumplan.{ "match": { "campo1": "valor1" } }
: Primera condición que debe cumplirse.{ "match": { "campo2": "valor2" } }
: Segunda condición que debe cumplirse.
- Búsqueda con Filtros
Los filtros se utilizan para restringir los resultados de búsqueda sin afectar la puntuación de relevancia. Los filtros son más eficientes que las consultas porque no necesitan calcular la puntuación.
Ejemplo de Búsqueda con Filtros
GET /mi_indice/_search { "query": { "bool": { "must": { "match": { "campo": "valor" } }, "filter": { "term": { "campo_filtro": "valor_filtro" } } } } }
Explicación del Código
"filter": { "term": { "campo_filtro": "valor_filtro" } }
: Aplica un filtro que requiere que el campocampo_filtro
tenga el valorvalor_filtro
.
- Ejercicios Prácticos
Ejercicio 1: Búsqueda Básica
Realiza una búsqueda que devuelva todos los documentos en el índice productos
.
Ejercicio 2: Búsqueda por Campo
Busca documentos en el índice productos
donde el campo nombre
sea igual a "laptop".
Ejercicio 3: Búsqueda con Múltiples Condiciones
Busca documentos en el índice productos
donde el campo nombre
sea igual a "laptop" y el campo marca
sea igual a "Dell".
GET /productos/_search { "query": { "bool": { "must": [ { "match": { "nombre": "laptop" } }, { "match": { "marca": "Dell" } } ] } } }
Ejercicio 4: Búsqueda con Filtros
Busca documentos en el índice productos
donde el campo nombre
sea igual a "laptop" y el campo precio
sea igual a 1000.
GET /productos/_search { "query": { "bool": { "must": { "match": { "nombre": "laptop" } }, "filter": { "term": { "precio": 1000 } } } } }
Soluciones a los Ejercicios
Solución Ejercicio 1
Solución Ejercicio 2
Solución Ejercicio 3
GET /productos/_search { "query": { "bool": { "must": [ { "match": { "nombre": "laptop" } }, { "match": { "marca": "Dell" } } ] } } }
Solución Ejercicio 4
GET /productos/_search { "query": { "bool": { "must": { "match": { "nombre": "laptop" } }, "filter": { "term": { "precio": 1000 } } } } }
Conclusión
En esta sección, hemos aprendido cómo realizar búsquedas en Elasticsearch utilizando consultas básicas, búsquedas por campos específicos, búsquedas con múltiples condiciones y búsquedas con filtros. Estos conceptos son fundamentales para aprovechar al máximo las capacidades de búsqueda de Elasticsearch. En el próximo tema, exploraremos cómo actualizar y eliminar datos en Elasticsearch.
Curso de Elasticsearch
Módulo 1: Introducción a Elasticsearch
- ¿Qué es Elasticsearch?
- Instalando Elasticsearch
- Conceptos Básicos: Nodos, Clústeres e Índices
- Arquitectura de Elasticsearch
Módulo 2: Empezando con Elasticsearch
Módulo 3: Técnicas Avanzadas de Búsqueda
Módulo 4: Modelado de Datos y Gestión de Índices
- Mapeo y Analizadores
- Plantillas de Índices
- Alias y Reindexación
- Gestión del Ciclo de Vida del Índice
Módulo 5: Rendimiento y Escalabilidad
- Optimizando el Rendimiento de Búsqueda
- Escalando Elasticsearch
- Monitoreo y Mantenimiento
- Respaldo y Restauración
Módulo 6: Seguridad y Control de Acceso
- Asegurando Elasticsearch
- Autenticación y Autorización de Usuarios
- Control de Acceso Basado en Roles
- Auditoría y Cumplimiento
Módulo 7: Integraciones y Ecosistema
- Elasticsearch con Logstash
- Elasticsearch con Kibana
- Elasticsearch con Beats
- Elasticsearch con Otras Herramientas