In a Vespa cluster, the primary components you define in services.xml are:
<admin> – for management and control.
<container> – for serving HTTP (queries/feeds/APIs) and stateless services.
<content> – for stateful services like document storage, indexing, and search.
Let’s deep dive into each with purpose, internal structure, and advanced configuration.
✅ 1. <admin> Component – Management and Monitoring
🔷 Purpose:
The admin component configures admin server, monitoring, metrics, and cluster orchestration (e.g., config servers, cluster controllers).
🔷 Basic Example:
🔷 Advanced Configuration:
🔷 Internal Roles:
✅ 2. <container> Component – Stateless HTTP/Query/Feed/Processing Engine
🔷 Purpose:
Runs:
Query services (REST/JSON)
Feed ingestion
Document processing
Custom HTTP applications
Search and ranking logic
🔷 Basic Example:
🔷 Advanced Configuration:
🔷 Key Elements and Their Roles:
You can have multiple containers: one for feeding, one for querying, one for admin APIs, etc.
✅ 3. <content> Component – Stateful Document Storage, Indexing, Search
🔷 Purpose:
Stores and indexes Vespa documents.
Performs vector search, full-text search, filtering, etc.
Manages replication, distribution, and persistence.