Skip to main content
[ PIER ]

Elasticsearch

El motor distribuido de búsqueda full-text y analítica.

Service #search#analytics#logging#elk#full-text

Elasticsearch es un motor de búsqueda y analítica distribuido y RESTful construido sobre Apache Lucene. Mueve barras de búsqueda, agregación de logs (stack ELK), catálogos de productos, analítica de seguridad y herramientas de observabilidad en empresas de todos los tamaños. Pier despliega una configuración single-node adecuada para desarrollo, testing y producción pequeña a mediana.

Desplegar con Pier

  1. 1 Abre el panel de Pier y haz clic en Add service.
  2. 2 Elige Elasticsearch en la lista de plantillas.
  3. 3 Elige la versión, asigna un nombre al servicio y Pier provisionará automáticamente el contenedor, el almacenamiento y los puertos.
  4. 4 Vincula un dominio si quieres HTTPS. Traefik genera el certificado de Let's Encrypt automáticamente.

¿Qué es Elasticsearch?

Elasticsearch es el motor de búsqueda full-text y analítica más desplegado del mundo. Empezó en 2010 como un wrapper distribuido sobre Apache Lucene y ha crecido hasta convertirse en la base del stack moderno de logging/observabilidad (la “E” en ELK + EFK), analítica de seguridad (SIEM) y aplicaciones search-driven en todas las industrias.

Su truco: almacena documentos JSON en shards, construye índices invertidos para búsqueda por keywords, construye índices de vectores densos para búsqueda semántica y expone todo vía una API REST JSON. Las agregaciones lo convierten en motor analítico en tiempo real. Autocomplete, fuzzy matching, analizadores multi-idioma y sinónimos lo convierten en el motor de barra de búsqueda para muchos sites e-commerce y productos SaaS.

Cómo lo despliega Pier

Pier usa la imagen oficial docker.elastic.co/elasticsearch/elasticsearch (la latest actual es 8.x o 9.x según fecha). Puerto por defecto 9200/tcp internamente. El volumen de datos se monta en /usr/share/elasticsearch/data.

Una contraseña fuerte del usuario elastic se autogenera. La seguridad (HTTPS + basic auth) está habilitada por defecto en Elasticsearch 8+; puedes deshabilitar para uso interno de dev vía el override de env xpack.security.enabled=false.

Para visualización, despliega la plantilla elasticsearch-kibana que empaqueta Elasticsearch + Kibana con el wiring de env correcto. Para clusters de producción con 3+ nodos, necesitarás orquestar manualmente — la plantilla single-container de Pier apunta a dev y prod pequeña.

Cuándo NO usar Elasticsearch

Para observabilidad log-pesada a escala — ClickHouse almacena logs 10× más barato. Para búsqueda pura de catálogo de productos — Meilisearch o Typesense son más ligeros y fáciles de operar. Para despliegues diminutos — la búsqueda full-text de Postgres con tsvector y un índice GIN suele ser suficiente. Elasticsearch brilla cuando necesitas búsqueda

  • analítica + agregaciones + búsqueda vectorial en un mismo motor.

Características clave

Búsqueda full-text potenciada

Índices invertidos, ranking BM25, fuzzy matching, autocomplete (edge n-grams), sinónimos, analizadores multi-idioma. Consulta en DSL JSON o sintaxis Lucene.

Distribuido por diseño

Shards (particionado horizontal) y réplicas (redundancia) integrados en el modelo de datos. Escala linealmente entre nodos; clusters de 100+ nodos son rutina.

Agregaciones y analítica

GROUP BY, percentiles, histogramas, agregaciones geo-espaciales, pipeline aggregations — Elasticsearch dobla como motor analítico en tiempo real sobre documentos JSON.

Lenguaje ES|QL

ES|QL (8.11+) añade una sintaxis tipo SQL con pipes para exploración ad-hoc. Menor barrera que Query DSL para principiantes.

Búsqueda vectorial

Campo de vector denso nativo y indexación HNSW desde 8.0. Cargas RAG y de búsqueda semántica — junto con BM25 clásico en una consulta híbrida única.

Ecosistema

Kibana para visualización, Logstash para pipelines de ingesta, Beats para shippers ligeros, clientes oficiales para Java/JS/Python/Go/Ruby/PHP/.NET/Rust.

Casos de uso

Búsqueda de aplicación y logs

La "E" en ELK. Beats / Fluent Bit / Vector envían logs de tus apps; Elasticsearch indexa; Kibana visualiza. Stack de observabilidad por defecto en miles de orgs.

Búsqueda de catálogo de productos

Navegación facetada, tolerancia a typos, sinónimos, boosts ponderados, recomendaciones. La barra de búsqueda de tu sitio e-commerce.

Analítica de seguridad (SIEM)

Elastic Security usa Elasticsearch como columna SIEM. Reglas de detección, analítica behavioural, threat hunting.

Búsqueda híbrida vector + léxica

Combina matching BM25 por keywords con similitud por vector denso. Lo mejor de ambos para RAG sobre documentos enterprise.

Métricas de negocio en tiempo real

Agregaciones sobre datos de eventos JSON dan analítica sub-segundo — ventas por región, sesiones por dispositivo, etc.

Ejemplos de código

Indexar un documento bash
curl -X POST "elasticsearch:9200/products/_doc" -H 'Content-Type: application/json' -d '{
  "name": "iPhone 17 Pro",
  "category": "phones",
  "price": 1299,
  "in_stock": true,
  "tags": ["apple", "5g", "flagship"]
}'
Búsqueda full-text + filtro bash
curl -X POST "elasticsearch:9200/products/_search" -H 'Content-Type: application/json' -d '{
  "query": {
    "bool": {
      "must":   [{ "match": { "name": "iphone" } }],
      "filter": [{ "term":  { "in_stock": true } }, { "range": { "price": { "lte": 1500 } } }]
    }
  },
  "aggs": {
    "categories": { "terms": { "field": "category" } }
  }
}'
Consulta ad-hoc ES|QL sql
FROM logs-*
| WHERE @timestamp > NOW() - 24 HOURS
| STATS count = COUNT(*) BY service.name
| SORT count DESC
| LIMIT 20
Búsqueda por vector denso (kNN) bash
curl -X POST "elasticsearch:9200/products/_search" -d '{
  "knn": {
    "field": "embedding",
    "query_vector": [0.1, 0.2, ...],
    "k": 10,
    "num_candidates": 100
  }
}'

Comparativa

vs OpenSearch OpenSearch es el fork Apache 2.0 de Elasticsearch (post cambio de licencia 7.10), mantenido por AWS + la comunidad. APIs altamente compatibles. Elige OpenSearch si quieres OSS estricto; Elasticsearch para las features más recientes.
vs ClickHouse ClickHouse es 10× más barato almacenando datos estructurados de logs y más rápido en agregaciones. Elastic gana en búsqueda full-text y consultas ad-hoc JSON. Muchos stacks de observabilidad movieron logs de Elastic a ClickHouse pero mantuvieron Elastic para búsqueda.
vs Algolia / Typesense Algolia es SaaS hosted — rápido, pulido, caro. Typesense es OSS y más ligero. Elasticsearch es más pesado pero cubre analítica + log search más allá del full-text puro.
vs Meilisearch Meilisearch es un motor moderno full-text enfocado — más simple que Elastic, más fácil de operar. Elige Meili para búsqueda de catálogo de producto; Elastic para "búsqueda + analítica para todo".

Preguntas frecuentes

¿Situación de licencia?
Elasticsearch fue relicenciado de Apache 2.0 a dual SSPL/Elastic License en 2021. SSPL restringe ofrecer Elasticsearch como servicio gestionado. Para tu propia app o logs internos estás bien — Pier despliega la imagen oficial Elastic.
¿Requisitos de memoria?
Elasticsearch es JVM y consume mucha memoria. Mínimo 2 GB RAM en el contenedor; 4 GB+ para producción. Configura `ES_JAVA_OPTS=-Xms2g -Xmx2g` para controlar heap.
¿Single-node o cluster?
La plantilla Elasticsearch de Pier corre single-node por defecto (apta para dev/test/prod pequeña). Para clusters de producción típicamente quieres 3+ master-eligible nodes — fuera del alcance de esta plantilla single-container.
¿Seguridad / auth?
Elasticsearch 8 habilita HTTPS + basic auth por defecto. Pier genera la contraseña del usuario elastic y la muestra en la página del servicio. Desactiva TLS vía `xpack.security.enabled=false` solo en dev.
¿Cómo conecto Kibana?
Usa la plantilla `elasticsearch-kibana` — empaqueta ES + Kibana con el wiring de env correcto.
¿Indices vs Data Streams?
Para datos time-series (logs, métricas), usa Data Streams + ILM (Index Lifecycle Management) para rollover automático. Para colecciones de documentos (productos, artículos), usa indices planos.
¿Estrategia de backup?
Usa Snapshot Repositories — configura S3 como repositorio y corre snapshots programados. Restaurar es una sola llamada API.

Servicios relacionados

Desplegar en tu VPS

Elasticsearch es un motor de búsqueda y analítica distribuido y RESTful construido sobre Apache Lucene. Mueve barras de búsqueda, agregación de logs (stack ELK), catálogos de productos, analítica de seguridad y herramientas de observabilidad en empresas de todos los tamaños. Pier despliega una configuración single-node adecuada para desarrollo, testing y producción pequeña a mediana.

Desplegar este servicio →