<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title><![CDATA[Dianna Hohensee - Elasticsearch Labs]]></title>
    <description><![CDATA[Articles and tutorials from the Search team at Elastic]]></description>
    <copyright><![CDATA[© 2026. Elasticsearch B.V. All Rights Reserved]]></copyright>
    <image>
      <title><![CDATA[Dianna Hohensee - Elasticsearch Labs]]></title>
      <url>https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1121c0bf0e8a6e65/6a88da6340a1841030ef456f/search-labs-thumbnail.png</url>
      <link>https://www.elastic.co/search-labs/author/dianna-hohensee</link>
    </image>
    <link>https://www.elastic.co/search-labs/author/dianna-hohensee</link>
    <atom:link href="https://www.elastic.co/search-labs/rss/author/dianna-hohensee.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[en]]></language>
    <lastBuildDate>Tue, 22 Sep 2026 03:47:14 GMT</lastBuildDate>
  <item>
    <title><![CDATA[Avoiding and Correcting Hotspots: How Elasticsearch Serverless Balances Shards]]></title>
    <description><![CDATA[Elasticsearch Serverless replaces the Elasticsearch node-weight based shard rebalancing algorithm with resource usage aware rebalancing that avoids index shard colocation, OOM events and write load hotspotting]]></description>
    <content:encoded><![CDATA[<p>The Elasticsearch Serverless Balancer addresses write load hotspots, prevents data node out-of-memory (OOM) events and avoids index-level hotspots in Elasticsearch Serverless clusters: these are workload edge cases that in non-Serverless require manual intervention and custom tuning of cluster settings. Serverless shard balancing focuses on staying within the bounds of node-level resource constraints. Rebalancing moves are explainable, where moves are made explicitly to either avoid performance degradation or correct hotspots when they develop. Shard movements are generally found to be fewer, as well.</p><h2>How Elasticsearch Shard Balancing Works</h2><p>Elasticsearch uses a weights-based algorithm to create a Desired Balance, an assignment of shards to data nodes. The Balancer determines the target allocation of shards across a cluster of nodes using four key metrics weighted in a linear algorithm. A total weight is calculated per node, and the shard balancer aims to equalize the total weights across cluster nodes. A final Desired Balance shard allocation is precomputed based on the latest cluster state information, and then the elected master node initiates incremental shard moves to reach the desired shard allocation.</p><p>The four metrics are:</p><ul><li><p><strong>Write Load:</strong> the total write threadpool activity per node, using the sum of threadpool indexing activity per data-stream shard.</p></li><li><p><strong>Disk Usage:</strong> the total disk usage of shards per node, using the sum of disk space used per shard.</p></li><li><p><strong>Shard Count:</strong> the total number of shards assigned to a node.</p></li><li><p><strong>Index Balance (shard anti-affinity):</strong> per index, how many shards in the index are assigned to the node.</p></li></ul><p>The total weight of a node is calculated using a linear algorithm that finds the deviation from the node-level cluster average for each individual metric, applies a different weight factor multiplier to each, and then takes the sum of all resultant values. The weight factor multipliers attempt to equalize the relative magnitude of each metric so that metrics with large values do not eclipse metrics with naturally small values. Write load tends to be a small value, related to thread usage, and thus gets multiplied by a relatively larger weight factor of <code>10</code>; whereas disk usage in bytes is a very large number and therefore gets multiplied by a tiny weight factor of <code>2e-11</code>.</p><p>The following are the cluster settings with default values, representing the different weight factors:</p><p><code>cluster.routing.allocation.balance.shard: 0.45</code></p><p><code>cluster.routing.allocation.balance.index: 0.55</code></p><p><code>cluster.routing.allocation.balance.disk_usage: 2e-11</code></p><p><code>cluster.routing.allocation.balance.write_load: 10.0</code></p><p>The linear algorithm looks something like this:</p>final float shardWeightFactor =
    settingValue("cluster.routing.allocation.balance.shard");
final float writeLoadWeightFactor = 
    settingValue("cluster.routing.allocation.balance.write_load");
final float diskUsageWeightFactor = 
    settingValue("cluster.routing.allocation.balance.disk_usage");
final float indexWeightFactor = 
    settingValue("cluster.routing.allocation.balance.index");

final float shardCountDeviation = numShardsOnNode - averageShardsPerNode;
final float writeLoadDeviation = totalWriteLoadOnNode - averageWriteLoadPerNode;
final float diskUsageDeviation = totalShardDiskUsageOnNode - averageShardDiskUsagePerNode;
final float indexDeviation = numIndexShardsOnNode - averageNumIndexShardsPerNode;

return shardCountDeviation * shardWeightFactor
    + writeLoadDeviation * writeLoadWeightFactor
    + diskUsageDeviation * diskUsageWeightFactor
    + indexDeviation * indexWeightFactor;<p>Shard movements are triggered to ensure that the difference in total node weight across cluster nodes remains below the <code>cluster.routing.allocation.balance.threshold</code> with a default value of <code>1</code>: whenever the threshold is exceeded, shards are moved from the most heavily weighted nodes to the least heavily weighted nodes until the difference between the most heavily weighted and least heavily weighted node is at or below the <code>threshold</code>. Whenever cluster activity occurs that changes shard allocation (e.g., create/delete index, add/remove node, or the disk usage grows), the Balancer rechecks the weights across nodes and triggers shard rebalancing if the delta between the most and least heavily weighted nodes exceeds the configured threshold. The threshold-based approach attempts to balance the trade-off between keeping the cluster perfectly balanced and minimizing shard movements. Large Elasticsearch deployments that use nodes with greater resources typically benefit from raising the <code>threshold</code> setting: a larger weight delta between nodes reduces shard rebalancing.</p><p>Shard movement is also constrained by strict shard assignment rules that prohibit certain node assignments according to cluster and index level settings. Examples include: not assigning copies of the same shard to the same node or host; not allowing further assignment of shards to a node that does not have spare disk space; and excluding node(s) as host for a particular index. More on this below.</p><h2>How a Balanced Cluster Looks (Based on Weights)</h2><p>Using the linear algorithm and cluster setting defaults previously described, the following is an example of what the Balancer considers balanced. Notably, it can sometimes allow considerable deviation across nodes in any one particular metric. For simplicity, index balance is not included.</p><p><em>Weight Node1 = 0</em>.45 (5 - 6) + 10 (0.3 - 0.33) + 2e-11 (1e+11 - 8e+10) =  <em> - 0.35</em></p><p><em>Weight Node2 </em>= 0.45 (7 - 6) + 10 (0.4 - 0.33) + 2e-11 (4e+10 - 8e+10) = <em>  0.35</em></p><p><em>Weight Node3 </em>= 0.45 (6 - 6) + 10 (0.3 - 0.33) + 2e-11 (1e+11 - 8e+10) = <em>  0.10</em></p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt716ecf26a404be16/6a969bee0897906115efbc2d/2.png" alt="Weights-based shard balancing: three Elasticsearch data nodes with 5, 7 and 6 shards, differing disk usage and write load" /><h2>Limitations of Weights-Based Shard Allocation</h2><p>Elasticsearch Serverless deployments are managed by Elastic and could run into many edge cases that, without additional configuration, the weights-based shard allocation handles poorly. In self-managed Elasticsearch deployments, it is possible to work around many of these issues by configuring the cluster to suit the user’s workload. However, Elasticsearch Serverless is configured once and must work across all customer use cases. Issues experienced by some Elasticsearch customers (early adopters of Serverless among them) include:</p><ul><li><p>Continuous rebalancing background noise in active clusters. This could be because the <code>threshold</code> setting needs tuning or because the cluster is very busy.</p></li><li><p>The Balancer’s behavior cannot be tuned in a predictable manner. Adjusting the Balancer settings (individual weight factors) can lead to unpredictable outcomes due to the linear algorithm. For example, decreasing the shard count weight factor relative to the other weight factors can lead to data node OOM events when shard count balancing is deprioritized and too many shards pile up on a single node.</p></li><li><p>No explanation of why the Balancer is making shard moves. The linear algorithm is difficult to understand without relevant node metrics.</p></li><li><p>The linear algorithm allows a high value in one metric to cancel out a low value in another metric. For example, a node can have a higher than average (across cluster nodes) write load, but counterbalance with a lower than average shard count (or vice versa), and the linear algorithm cancels out the spikes: no shards are moved to address the write load hotspot.</p></li><li><p>Index-level hotspots can occur when a disproportionate number of index shards are assigned to the same node, rather than spreading out across nodes, despite the index balance weight in the linear algorithm. Index balance weight can, in some situations, be little compared to the other weight factors. It can also get skewed and counterbalanced by another non-average individual weight in the linear algorithm, as described in a previous bullet.</p></li><li><p>No search load balancing.</p></li><li><p>Regular indices do not have write load estimate support, leaving some write load hotspots unaddressed. Only data stream indices have write load estimates.</p></li><li><p>Write load hotspots can be missed. Write load estimates are only refreshed at rollover time, which can be infrequent in some configurations, causing new load to be ignored for some time. The write load is also the average write load activity over a potentially large window of time between index rollover events, so temporary write load increases can disappear when averaged with inactive write periods.</p></li></ul><p>The above issues persist in some Elasticsearch deployments and require monitoring and workload tuning to manage when they do occur. Shard allocation balancing in Elasticsearch Serverless aims to address these issues and avoid any manual intervention requirements using a new approach that is explained in subsequent sections of this article.</p><h2>Elasticsearch Serverless Shard Allocation </h2><p>Elasticsearch Serverless considers node resources individually: shards are rebalanced away from a node when any resource usage on that node grows to threaten performance, and shard movements to a node are declined when the assignment could threaten that node’s performance.</p><p>The Elasticsearch single combined score per node is replaced in Elasticsearch Serverless with independent per-resource decisions:</p><p>
</p><p><strong>Elasticsearch Weights-Based Balancing</strong></p><p><strong>Elasticsearch Serverless Resource-Aware Deciders</strong></p><p><strong>Decision Basis</strong></p><p>Single weighted sum across four metrics</p><p>Each resource evaluated independently</p><p><strong>Metric Interaction</strong></p><p>A high value can offset a low one</p><p>No offsetting; each decider acts separately</p><p><strong>Decision Types</strong></p><p><code>YES</code> / <code>NO</code></p><p><code>YES</code> / <code>NO</code> / <code>NOT_PREFERRED</code></p><p><strong>Rebalancing Trigger</strong></p><p>Weight delta across nodes exceeds <code>threshold</code></p><p>Individually configurable safe limits per resource</p><p><strong>Explainability</strong></p><p>Can only make an educated guess</p><p>Each move traces to a named decider</p><p>The Elasticsearch Balancer has three phases, in order of priority, for shard movement decisions. The first phase is to assign unassigned shards. Assignment of unassigned shards is the top priority for data availability reasons. The second phase is to move shards that can no longer remain where they are assigned due to cluster configuration changes. Internally, <code>AllocationDecider</code> implementations enforce cluster settings, like <a href="https://www.elastic.co/docs/reference/elasticsearch/index-settings/shard-allocation#index-allocation-filters">index-level shard allocation filtering</a>, <a href="https://www.elastic.co/docs/deploy-manage/distributed-architecture/shard-allocation-relocation-recovery/shard-allocation-awareness">shard allocation awareness</a>, <a href="https://www.elastic.co/docs/reference/elasticsearch/configuration-reference/cluster-level-shard-allocation-routing-settings#disk-based-shard-allocation">disk usage thresholds</a>, or moving shards off of a node before shutdown. The third phase rebalances shards when the <code>cluster.routing.allocation.balance.threshold</code> is exceeded, using the previously described weights algorithm.</p><p>The new Serverless balancing approach adds additional logic to the Balancer’s first and second phases, leveraging the existing <code>AllocationDecider</code> logic, and eliminates the third phase. Previously, each <code>AllocationDecider</code> had simple responses of <code>YES</code> and <code>NO</code>. Now, the decision type of <code>NOT_PREFERRED</code> has been added, along with several new <code>AllocationDecider</code> implementations. An <code>AllocationDecider</code> will return <code>NOT_PREFERRED</code> when it observes that performance might suffer from a shard’s assignment to a particular cluster node. The Serverless Balancer will prefer a node assignment for the shard where all <code>AllocationDecider</code> implementations reply <code>YES</code>.</p><p>A <code>NOT_PREFERRED</code> shard allocation may be left uncorrected if all other node assignments return <code>NO</code> or <code>NOT_PREFERRED</code>. Such responses mean that the shard cannot be assigned elsewhere without either violating a cluster/index rule or potentially degrading the performance of another cluster node. Serverless Autoscaling activates before all cluster nodes hotspot: even one unaddressable hotspot leads to a scale-up event. New <code>AllocationDecider</code> implementations have also been added for important finite resources, like available heap memory (further discussion below), using only the original <code>YES</code> and <code>NO</code> decisions: exceeding certain categories of resources can lead to node unavailability.</p><p>The individual weight metrics in the Balancer’s linear algorithm have been replaced by resource-aware <code>AllocationDecider</code> implementations, and new <code>AllocationDecider</code> implementations are being built for additional resources: Serverless Search Tier load-balancing improvements are currently in development. Each shard migration will have a clear purpose to address a potential resource usage bottleneck.</p><p>Internal stats have shown far fewer shard movements in general, without any noticeable accompanying node performance degradations – one workload showed a 50% reduction in shard movements with the same write throughput. Fewer shard movements has the benefit of: avoiding momentary read/write latencies from warming up local caches; and saving on cloud infrastructure costs moving data between servers.</p><h3>Serverless IndexBalanceDecider: Avoid Colocation of Index Shards</h3><p>The <code>IndexBalanceDecider</code> ensures index shard anti-affinity much more strictly than the original weights-based linear algorithm could achieve. Colocation of index shards in excess of the index’s average shards per available node is avoided, except in the case of a strict <code>NO</code> assignment (essentially non-existent right now in Serverless except for shutting down nodes and rolling upgrade incompatible version checks) or <code>NOT_PREFERRED</code> assignment due to temporary node hotspotting.</p><p>The <code>IndexBalanceDecider</code> is a very effective means of pre-balancing both write load and search load before user workloads begin to generate load statistics: each index begins life with its shards distributed across as many nodes as possible.</p><h4>IndexBalanceDecider Results: Even Write Load Distribution Across Cluster Nodes</h4><p>Write load across data nodes became much more evenly distributed after the <code>IndexBalanceDecider</code> was enabled in the Serverless Production environment. Projects fleet-wide generally show even ingest load (counted in saturated <code>WRITE</code> threadpool threads), combining the release of the <code>IndexBalanceDecider</code> and many other prior improvements:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltb1d22b863724026b/6a969c19ecdaa7898505223b/4.png" alt="Ingestion load per data node across an Elasticsearch Serverless project, showing even write load distribution over time" /><p>A reproducible workload demonstrates a clear before and after view of the impact of the new <code>IndexBalanceDecider</code> when an ingest workload was run with and without it enabled:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltb3788a358c3a3043/6a969c385c3126893d43ef2b/5.png" alt="Scale test ingestion load per node with the IndexBalanceDecider off then on, showing write load spread across data nodes" /><p>The <code>IndexBalanceDecider</code> also serves in the Serverless Search Tier to distribute shards of the same index as much as allowed, similarly limited only by the tier’s node count and the number of shards in each index.</p><h3>Serverless HeapUsageDecider: Assign Shards by Available Heap</h3><p>The <code>HeapUsageDecider</code> limits shard count on a node based on available heap to hold in-memory shard metadata and run associated write/read operations, removing the dependency on shard count limits per node. The <code>HeapUsageDecider</code> returns a strict <code>YES</code> or <code>NO</code> decision, rather than using the new <code>NOT_PREFERRED</code> decision type, because a data node risks an OOM event if the estimated available heap memory is exceeded.</p><h4>HeapUsageDecider Results: Reduced Data Node OOMs</h4><p>Data node OOMs in the serverless index tier decreased significantly as the <code>HeapUsageDecider</code> rolled out to the Serverless production environment.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt5c28891290e3a635/6a969c88d04dac5ed56ca2f1/6.png" alt="Indexing OOM errors on Elasticsearch Serverless data nodes falling to near zero after the HeapUsageDecider rollout" /><p>Index tier OOM errors still occur from time to time in the Serverless Index Tier, though at a much reduced rate, as miscellaneous runaway memory usage edge cases are surfaced. The remaining OOM errors are being progressively resolved as they are identified, through a combination of memory usage improvements in the code, adding component level limits, and updating the internal Elasticsearch Serverless memory model service to more completely account for memory usage.</p><p>The <code>HeapUsageDecider</code> is not yet turned on in the Serverless Search Tier, due to the need for additional and different metrics, but that work is in active development.</p><h3>Serverless WriteLoadDecider: Prevent and Correct Write Load Hotspots</h3><p>The <code>WriteLoadDecider</code> receives periodically refreshed (every 30 seconds by default) per shard and per node write load stats and uses the data to correct and avoid write load hotspots. The master node retrieves stats directly from each data node’s write threadpool: an Elasticsearch node tracks the total time that its <code>WRITE</code> threadpools is in use, and each individual Elasticsearch shard instance tracks how much time it spent using its node’s <code>WRITE</code> threadpool.</p><p>A write load hotspot is identified at the node level. The criteria for a hotspot is the presence of <code>WRITE</code> threadpool queue latency above a configured threshold and sufficiently high, and sustained, <code>WRITE</code> threadpool thread saturation. Once that situation is detected, the Balancer is signaled to select shards to move away from a hotspotting node, until fresh non-hotspotting write load stats are received from the node. The Balancer will do nothing if all nodes are hotspotting at once, expecting the Autoscaler to solve the problem by introducing more, or bigger, data nodes to the cluster.</p><p>The <code>WriteLoadDecider</code> uses a heuristic to choose shards to move away from a hotspotting node that aims to minimize ingest disruptions while still effectively reducing a node’s write load. A shard write load <code>threshold</code> is identified on a hotspotting node: the <code>threshold</code> is currently calculated as ½ the ingest load of the hottest shard on that node. Shards that can be moved are then prioritized in the following order:</p><p><code>threshold</code><code> = ½ * </code><code>maxWriteLoadShardOnNode</code></p><ol><li><p>Shards with write load in the range [<code>threshold</code>, <code>maxWriteLoadShardOnNode</code>), the shard at or closest to threshold preferred.</p></li><li><p>Shards with write load in the range (<code>threshold</code>, <code>0</code>], the shard closest to threshold preferred.</p></li><li><p>Shards with write load equal to <code>maxWriteLoadShardOnNode</code>.</p></li><li><p>Shards with zero write load.</p></li></ol><p>The heuristic prefers to avoid disruption to the highest ingest shards and instead chooses middlingly loaded shards. Movement of the hottest shard will cause the most latency disruption; and movement of the coldest shards will be the least effective in resolving a hotspot.</p><p>The Balancer limits write load hotspot correction shard moves to one move per hotspotting node per stats refresh period, in order to see the effect of a move in real-time node-level write load, before attempting any further corrections. This was a simple initial design that proved effective. Furthermore, the Balancer will not move a shard whose write load alone is sufficient to meet the node-level hotspot criteria: this would just relocate a hotspot to another data node, not actually resolve the hotspot. The Serverless Autoscaler and Serverless Autosharding components are relied upon to resolve hotspots that reallocation of shards cannot.</p><p>The <code>WriteLoadDecider</code> returns <code>NOT_PREFERRED</code> when acceptance of a shard could cause a node to start experiencing <code>WRITE</code> threadpool queue latency and create a hotspot. A shard will still be relocated to a <code>NOT_PREFERRED</code> node, however, and risk some performance degradation, as a better option than, say, risking a data node OOM from keeping a shard on a data node where the <code>HeapUsageDecider</code> returns <code>NO</code>.</p><h4>WriteLoadDecider Results: Hotspots are Quickly Corrected </h4><p>Hotspot stats showed general improvement as the <code>WriteLoadDecider</code> was rolled out to Serverless production, in particular the fleet-wide time to correct a hotspot decreased greatly:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1e3ad68727d2121d/6a969cb28814aa3f7c89c987/7.png" alt="Write load hotspot duration p50, p95 and p100 in Elasticsearch Serverless dropping after the WriteLoadDecider rollout" /><p>Since these graphs were collected, additional work has been released incrementally to better prevent and correct hotspots, and improvements are still in progress.</p><h2>Serverless Autoscaling, Autobalancing, and Autosharding</h2><p>Elasticsearch Serverless relies on both new autobalancing logic and new autoscaling logic. The Serverless Balancer must sufficiently distribute shard resource usage across nodes in order to fully saturate the cluster’s resources. The Serverless Autoscaler will trigger a scale-up event when it receives a report that a certain percentage of the total cluster resources are in use and more resources are needed. The Autoscaler will not scale up the cluster if one node is hotspotting and another node has an excess of available resources because the resources are summed across nodes. Therefore, the Balancer must first do a good job on load distribution, and then the Autoscaler will activate as needed.</p><p>Autosharding based on write load is also in progress and coming soon to address shard hotspots. Elasticsearch Serverless projects have a default number of shards per index based on the project type. These defaults generally work, but do not account for all possible workloads. Hotspots can occur when an index has too few shards, as well as too many. Too few index shards leads to the Balancer being unable to further distribute an index’s write load across available data nodes, and then the Autoscaler will not see a problem because the cluster-level resources are not fully consumed. Conversely, indices cannot by default have too many shards, since that could degrade search performance for small indices and potentially strain cluster metadata operations if the total number of shards in a cluster grew too large.</p><h2>Production Example: 708 TB Data Set, 37 Index Tier Nodes (not counting Search Tier), 4,100 Indices, 30,000 Shards</h2><p>The following graphs cover a period when the Index Tier, in an Elasticsearch Serverless project, scales up from 10 to 37 indexing nodes and then back down to 10 after a write load spike dissipated.</p><h3>Graph of the Ingest Load Per Index Node</h3><p>This graph shows fairly even distribution of load, though a little less even temporarily during scale-up. There are nearly 250 fully saturated write threads at peak load. </p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt6daf46a0823c4a37/6a969cd437d7f3a2008e9204/8.png" alt="Ingestion load per Elasticsearch Serverless index node, peaking near 250 saturated write threads during a load spike" /><h3>Graph of CPU Saturation Per Index Node</h3><p>CPU usage remains within safe bounds. Usage is mostly below 60%, except for momentary outliers that reach into the 90% range as write load rises before nodes are added to the cluster.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltf60cff9da89290c9/6a969d203eabd090dd4409b4/9.png" alt="CPU usage per Elasticsearch Serverless data node, mostly below 60% with brief peaks above 90% during scale-up" /><h3>Graph of WRITE Threadpool Queue Latency Per Node </h3><p>When a node’s <code>WRITE</code> threadpool is fully saturated, tasks are placed in the threadpool’s queue. Queuing can happen with few tasks, if active write tasks are long-running, or there may simply be a lot of tasks.</p><p>This graph’s time window is zoomed in further than the others. One node reaches 75 seconds of queue latency during the scale-up spike. There are 29 nodes when the queue latency spike occurs at 19h25m, before autoscaling calls for 37 nodes at 19h28m.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt9c16dbf83897366c/6a969d478814aa399089c98b/10.png" alt="Maximum WRITE threadpool queue latency per data node, with one Elasticsearch Serverless node reaching 75 seconds" /><h3>Graphs of Total Cluster Ingest per Second, in Documents and MBs</h3><p>Ingest rate peaks at 190,000 documents / second and 54.40MB / second. The document ingest rate is respectable at 4000-5000 docs/sec per node. The MBs ingest rate, however, is very low in this case: this can happen when indexing operations involve heavy computation. Document ingestion rate can also vary depending on the size of the documents.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt8cec5b62e8339a7f/6a969d7e37d7f35c438e9208/12.png" alt="Total indexing request rate for an Elasticsearch Serverless cluster, peaking at 190,000 documents per second" /><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blta9c147b7bd608b73/6a969dae5f9db76cd1560dc8/11.png" alt="Bulk byte indexing rate for an Elasticsearch Serverless cluster, peaking at 54.40 MB per second during the write spike" /><h2>What’s Next for Elasticsearch Serverless Balancing</h2><p>The team is currently working on shard balancing improvements for the Serverless Search Tier, focusing on creating metrics and <code>AllocationDecider</code> implementations for search performance. The team is excited to share these improvements soon!</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/elasticsearch-shard-balancing-serverless</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/elasticsearch-shard-balancing-serverless</guid>
    <category><![CDATA[Elastic Cloud Serverless]]></category>
    <category><![CDATA[Inside Elastic]]></category>
    <dc:creator><![CDATA[Dianna Hohensee]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltca84dead3c455000/6a969ba12707c589983290d7/1.png" length="0" type="image/png"/>
    <pubDate>Tue, 01 Sep 2026 15:25:00 GMT</pubDate>
  </item>
  </channel>
</rss>