Cloud Server for Elasticsearch in Europe: EU Search Hosting

Cloud Server for Elasticsearch in Europe: EU Search Hosting

Cloud Server for Elasticsearch in Europe: EU Search Hosting

Elasticsearch is the backbone of full-text search, log analytics, and observability stacks in modern applications. For businesses handling data about European users, where that search index lives - and who controls the infrastructure - has direct implications for GDPR compliance and query response times.

This guide covers the hardware Elasticsearch needs, how to tune the JVM heap and shards, and what search throughput to expect on an EU cloud server.

Why EU Data Residency Matters for Elasticsearch

Elasticsearch indexes commonly contain user-generated content, behavioral logs, and document data tied to individual identities - all personal data under GDPR. Hosting on an EU server operated by an EU company means your search index never leaves EU jurisdiction, satisfying data residency requirements without supplementary legal instruments.

Network proximity also matters for search. An Elasticsearch cluster in Central Europe responds to query requests from a Berlin application in 2-5ms. The same cluster in a US data center adds 80-120ms per query - enough to make autocomplete and real-time search feel sluggish to European users.

Minimum Specs for Elasticsearch

Elasticsearch is memory- and CPU-intensive. The JVM heap should be set to 50% of available RAM, and the OS must retain the other 50% for the filesystem cache (Lucene reads segment files through the OS page cache):

  • Small (dev/logging, under 50 GB index) - 4 vCPU, 16 GB RAM, 200 GB NVMe SSD
  • Medium (production search, 50-500 GB index) - 8 vCPU, 32 GB RAM, 1 TB NVMe SSD
  • Large (analytics, multi-TB index or high ingest) - 16+ vCPU, 64 GB RAM, 2+ TB NVMe SSD

NVMe storage is particularly important for Elasticsearch because segment merges are I/O-intensive background operations. Slow disk makes merges fall behind during ingest spikes, causing search latency to spike.

Recommended DCXV Configuration

DCXV cloud servers provide NVMe-backed storage with consistent IOPS, which keeps Elasticsearch segment merges on schedule. Recommended configurations:

  • 8 vCPU, 32 GB RAM, 1 TB NVMe - production search cluster node for a content or e-commerce platform
  • 16 vCPU, 64 GB RAM, 2 TB NVMe - log analytics or observability stack (ELK/OpenSearch compatible)

For a production cluster, deploy 3 nodes on DCXV private networking. This gives you shard redundancy and allows rolling restarts without downtime. Contact sales@dcxv.com to discuss cluster topology and private network configuration.

Quick Setup Commands

# Install Elasticsearch 8.x on Ubuntu 22.04
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list

sudo apt update && sudo apt install -y elasticsearch

# Start and enable the service
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch
# Key elasticsearch.yml settings for a 32 GB RAM node
# Edit /etc/elasticsearch/elasticsearch.yml

cluster.name: my-eu-cluster
node.name: node-1
network.host: 10.0.0.5         # private IP of this server
http.port: 9200
discovery.seed_hosts: ["10.0.0.5", "10.0.0.6", "10.0.0.7"]
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]

# Paths
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
# JVM heap sizing - set to 50% of RAM, never exceed 31 GB
# Edit /etc/elasticsearch/jvm.options.d/heap.options
-Xms16g
-Xmx16g

# OS-level tuning for Elasticsearch
# Disable swap (critical for JVM performance)
sudo swapoff -a
echo 'vm.swappiness=1' | sudo tee -a /etc/sysctl.conf

# Increase file descriptor and mmap limits
echo 'elasticsearch soft nofile 65535' | sudo tee -a /etc/security/limits.conf
echo 'elasticsearch hard nofile 65535' | sudo tee -a /etc/security/limits.conf
echo 'vm.max_map_count=262144' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

sudo systemctl restart elasticsearch
# Verify cluster health and create an index
curl -X GET "http://10.0.0.5:9200/_cluster/health?pretty"

# Create an index with explicit shard/replica settings
curl -X PUT "http://10.0.0.5:9200/my-index" -H 'Content-Type: application/json' -d'
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 1,
    "refresh_interval": "30s"
  }
}'

# Index a document
curl -X POST "http://10.0.0.5:9200/my-index/_doc" -H 'Content-Type: application/json' -d'
{
  "title": "EU cloud server guide",
  "content": "Elasticsearch running on DCXV infrastructure"
}'

# Run a search query
curl -X GET "http://10.0.0.5:9200/my-index/_search?q=cloud&pretty"

Expected Performance Benchmarks

On a DCXV 8 vCPU / 32 GB RAM / NVMe node with Elasticsearch 8.x and 16 GB JVM heap:

  • Indexing throughput (bulk API, batch 1000) - 15,000-30,000 docs/s
  • Search queries per second (simple term query) - 500-1,500 QPS
  • Search queries per second (complex aggregation) - 50-200 QPS
  • P99 query latency (cached warm query) - under 10ms
  • Segment merge throughput - 200-500 MB/s on NVMe

Shard count is the biggest tuning lever. Aim for shards of 20-50 GB each. Too many small shards waste overhead; too few large shards limit parallelism.

Bottom Line

Elasticsearch on an EU cloud server keeps your search index and user data in EU jurisdiction while delivering the low-latency, high-throughput search your application needs. Set JVM heap to 50% of RAM, disable swap, and deploy a 3-node cluster for production resilience. DCXV cloud servers provide the NVMe storage and EU data residency your Elasticsearch cluster requires.

Run Claude Code, Codex and Grok CLI on Your Own Cloud Server
cloudaivps

Run Claude Code, Codex and Grok CLI on Your Own Cloud Server

Turn a Debian or Ubuntu cloud server into a sandbox for AI coding agents like Claude Code, Codex and Grok CLI. Vibe code from anywhere, even your phone.

Roll Back a Cloud Server to a Recent Backup in Two Clicks
backuprecoverycloudCloud

Roll Back a Cloud Server to a Recent Backup in Two Clicks

DCXV cloud servers now let you restore a recent automatic backup straight from your control panel - pick a backup, confirm, and the VM rolls back in minutes.

Manage Client Accounts From One Login - The DCXV Reseller Dashboard
resellercontrol-panelcloudCloud

Manage Client Accounts From One Login - The DCXV Reseller Dashboard

The new DCXV reseller dashboard lets you create client sub-accounts, track their balances and servers, and log into any of them from a single control panel.

Snapshot Before Risky Changes, Roll Back Instantly
snapshotcloudCloud

Snapshot Before Risky Changes, Roll Back Instantly

Create an on-demand snapshot of your DCXV cloud server before any risky change, then roll back in seconds. Add a snapshot in the control panel with one click.

Install Any OS - Boot Your Cloud VM From Your Own ISO
isoinstallcloudCloud

Install Any OS - Boot Your Cloud VM From Your Own ISO

Upload a bootable ISO from any HTTPS URL and boot your DCXV cloud VM from it - install any operating system or run a rescue disk, straight from the control panel.