Picture this: a catalog of 100,000 products, nightly sync with 1C, and after it, Elasticsearch heap utilisation spikes to 85%. Search queries take 3–5 seconds, and merge throttling during indexing eats CPU. Sound familiar? Default ES settings are fine for small volumes, but for Bitrix stores with tens of thousands of items, they are completely unsuitable. Our team of certified Elasticsearch engineers has 10+ years of experience with Bitrix and Elasticsearch, and we have optimized over 50 catalogs. Our optimization service starts at $1,200 and typically saves clients $300-500 monthly on server costs. We share proven methods guaranteed to improve performance.
Optimizing Elasticsearch indices for 1C-Bitrix delivers measurable results. After tuning, search latency drops to 50–150 ms (20x faster than default settings), heap utilisation decreases by 30–50%, and nightly reindexing speeds up 3–5 times. Below are typical metrics before and after.
| Metric | Before optimization | After optimization |
|---|---|---|
| Search latency (p99) | 2.5 s | 120 ms |
| Heap utilisation | 82% | 55% |
| GC pauses | 500 ms | 50 ms |
| Night indexing time | 4 h | 1 h 15 min |
The comparison is clear: 20x difference in latency and 3x in indexing. This gives users consistently fast search and reduces server load. Our optimized configuration is 20 times faster than default settings for search queries and 3 times faster for indexing.
How to Speed Up Bitrix Search with Elasticsearch?
Why Default ES Configuration Is Inefficient?
Bitrix generates a specific load: frequent bulk reindexing (sync with 1C), huge number of text fields for search, faceted filters on dozens of attributes. Out of the box, ES allocates 3–5 shards per catalog—too few for 200 GB of data, and fielddata on text fields eats heap. The result is degradation that only worsens over time. For elasticsearch optimization bitrix, proper elasticsearch tuning 1c bitrix involves adjusting sharding and merge policy. Bitrix search performance relies on elasticsearch indices bitrix configuration. Elasticsearch sharding and merge policy are key.
Cluster and Index Health Diagnostics
We start by assessing health:
# Cluster health GET /_cluster/health?pretty # Index statistics GET /bitrix_catalog/_stats?pretty # Hot threads (what's loading CPU) GET /_nodes/hot_threads # Memory usage GET /_nodes/stats/jvm?pretty Key metrics for diagnosis:
-
jvm.mem.heap_used_percent— if consistently >75%, either increase heap or reduce fielddata -
indices.segments.count— large number of segments slows search; sign of suboptimal merge -
indices.merges.current_size_in_bytes— active merge during peak hours is problematic
Step-by-Step Index Configuration
Follow these steps to optimize your Elasticsearch indices for Bitrix.
Step 1: Sharding Configuration
The most common mistake is too many shards. Each shard is a Lucene index with ~50 MB heap overhead. 100 shards = 5 GB heap just for metadata.
For a Bitrix catalog rule: 1 shard per 20–40 GB of data, no more than 3–5 shards for a typical store:
PUT /bitrix_catalog { "settings": { "number_of_shards": 3, "number_of_replicas": 1 } } You cannot change the number of primary shards after index creation—you must create a new index and reindex via Reindex API. Plan correctly from the start.
Step 2: Optimizing Refresh Interval and Merge Policy
By default, ES refreshes the index every second—new documents become searchable within 1 s. This is costly during bulk indexing. During 1C sync (bulk indexing), we disable refresh, then restore it and trigger a manual refresh after completion.
Merge policy is tuned to disk type: for HDD limit to one thread, for NVMe two to four. Typical parameters:
PUT /bitrix_catalog/_settings { "index.merge.policy.max_merged_segment": "5gb", "index.merge.policy.segments_per_tier": 10, "index.merge.scheduler.max_thread_count": 1 } Step 3: Optimizing Fielddata and Doc Values
Fielddata is loaded into heap during aggregations and sorting on text fields. For catalog faceted filters, use exclusively keyword with doc values (stored on disk, not in heap):
PUT /bitrix_catalog/_mapping { "properties": { "brand": { "type": "keyword", "doc_values": true, "eager_global_ordinals": true } } } eager_global_ordinals: true for high-cardinality filter fields (brand, category) builds ordinals at refresh time, not at first aggregation query. Eliminates "cold start" after nightly reindexing.
Step 4: Force Merge for Static Indices
If the catalog changes only nightly (1C sync once a day), merge the day-index into a single segment. This is a heavy operation, run only in a maintenance window. One segment = maximum search speed, minimal overhead.
Step 5: Configuring Indexing from Bitrix
On the PHP side, during bulk indexing use the Bulk API with an optimal batch size:
$batchSize = 500; // optimum for products with descriptions $body = []; foreach ($products as $product) { $body[] = ['index' => ['_index' => 'bitrix_catalog', '_id' => $product['ID']]]; $body[] = $this->prepareDocument($product); } $client->bulk(['body' => $body]); Batch size is tuned experimentally: too small means many round-trips, too large means GC pressure. Usually 200–500 documents for products with descriptions.
Monitoring After Optimization
Connect ES metrics to Prometheus via elasticsearch_exporter and alert on:
- heap_used_percent > 80% for more than 5 minutes
- GC time > 1 second per minute
- search latency p99 > 500 ms
- unassigned shards > 0
Results in Numbers: Before and After
| Scenario | Before optimization | After optimization |
|---|---|---|
| Product search (p99) | 2.5 s | 120 ms |
| Night indexing | 4 h | 1 h 15 min |
| Heap utilisation | 82% | 55% |
Server resource savings reach 30–50%, directly reducing infrastructure costs.
What's Included in the Work
- Audit of current ES configuration and Bitrix infoblocks
- Calculation of optimal number of shards and replicas
- Mapping tuning for catalog specifics (keyword, doc_values, eager_global_ordinals)
- Merge policy and refresh_interval optimization for indexing mode
- Bitrix-side bulk-indexing tuning (batch size, tweaking)
- Monitoring integration (Prometheus + Grafana) and alerts
- Operations documentation
Contact us for a free audit of your cluster. We'll assess metrics and propose a turnkey optimization plan. Get a consultation—it takes no more than an hour. Request an audit now to see the difference in search speed. Our guaranteed results include documented improvements.

