🐳 docker-labs GitHub ↗

Elasticsearch Search Infraestructura

Servicio de indexacion y busqueda full text para catalogos y conocimiento.

Objetivo: Explorar busqueda full-text con Elasticsearch como motor de indexacion y recuperacion de documentos.

Rol en la plataforma
Motor de busqueda
Stack
Python 3.12 + Elasticsearch
Puertos del host
8001 9200
Memoria recomendada
6 GB
Categoría
Infraestructura
Entradas
API: http://localhost:8001
Elasticsearch: http://localhost:9200
Health check
http://localhost:8001/health
Nota de puertos
8001 evita conflicto con Inventory Core (05-postgres-api) en 8000
Labs relacionados
Inventory Core · Prometheus + Grafana

Qué hacer una vez levantado

docker compose -f 11-elasticsearch-search/docker-compose.yml up -d --build

11 — Elasticsearch Search#

Servicio de indexación y búsqueda full-text para catálogos y bases de conocimiento, con una API Python como capa de acceso.

🧩 Rol en el repositorio#

Este lab introduce búsqueda avanzada de texto completo como capacidad complementaria de la plataforma. Elasticsearch se usa para indexar documentos y ejecutar consultas que van más allá de lo que un LIKE en SQL puede ofrecer: scoring por relevancia, búsqueda aproximada, filtros facetados y análisis de texto.

⚠️ Requiere ≥ 6 GB de RAM asignados a Docker. Elasticsearch carga su JVM completa al arrancar. Por esta razón, este lab está excluido del CI automático — funciona correctamente en entornos con recursos suficientes.

📦 Servicios y puertos#

ServicioImagenPuerto hostPuerto contenedorDescripción
elasticsearch_apibuild local (Python)80018000API REST para indexación y búsqueda
elasticsearch_searchelasticsearch:8.11.092009200Motor de búsqueda — modo single-node

La API espera a que Elasticsearch reporte healthy antes de arrancar (depends_on: condition: service_healthy).


⚡ Inicio rápido#

docker compose up -d --build
El primer arranque puede tardar 60–90 segundos mientras Elasticsearch inicializa su JVM y el cluster single-node queda listo.

🔗 Accesos#

RecursoURL
API — Swagger UIhttp://localhost:8001/docs
API — Healthhttp://localhost:8001/health
Elasticsearch — Cluster healthhttp://localhost:9200/_cluster/health
Elasticsearch — Índiceshttp://localhost:9200/_cat/indices?v

✅ Health checks#

elasticsearch_api#

wget -qO- http://localhost:8000/health
ParámetroValor
Intervalo15 s
Timeout5 s
Reintentos3
Start period40 s
wget -qO- http://localhost:9200/_cluster/health
ParámetroValor
Intervalo20 s
Timeout10 s
Reintentos5
Start period60 s

🔍 Verificación#

# Estado de los contenedores
docker compose ps

# Confirmar que Elasticsearch está activo
curl http://localhost:9200/_cluster/health

# Confirmar que la API responde
curl http://localhost:8001/health

# Ver índices disponibles
curl http://localhost:9200/_cat/indices?v

⚠️ Notas de puerto y recursos#

AspectoDetalle
Puerto 8001 (en lugar de 8000)Evita conflicto con Inventory Core (05-postgres-api) en 8000
RAM mínima6 GB asignados a Docker Desktop — Elasticsearch reserva ~2 GB para su JVM
CIExcluido del pipeline automático por requisito de recursos

📚 Documentos relacionados#