Elasticsearch

Segment Merge Backlog Causing Query Slowdown

warning
performanceUpdated Mar 2, 2026

Background segment merges consolidate small Lucene segments into larger ones, reducing file count. When merge rate cannot keep pace with segment creation, segment count explodes causing slow queries and increased memory usage.

How to detect:

elasticsearch.index.segments.count growing significantly (>100 per shard) with elasticsearch.index.operations.merge.docs_count or elasticsearch.index.operations.merge.size showing sustained merge activity but segment count not decreasing

Recommended action:

If on SSDs with high throughput, increase index.merge.scheduler.max_thread_count from default 1 to min(3, cpu_cores/2) and indices.store.throttle.max_bytes_per_sec from 20mb. Use index.merge.policy.segments_per_tier (default 10) to control merge aggressiveness - lower values trigger merges sooner but increase I/O. Monitor elasticsearch.node.disk.io.write to ensure disk can handle increased write load. For write-heavy workloads, prefer fewer larger shards (20-50GB) over many small ones to reduce merge overhead. Consider force-merging read-only indices to 1 segment. Check elasticsearch.node.operations.current for concurrent merge operations - if maxed out, merges are bottlenecked.