Elasticsearch introduced an API in version 5.0 to shrink indices, allowing clusters to maintain optimal shard numbers by reducing them after initial high-throughput indexing. However, the challenge of increasing shard numbers for small indices prompted further development. Originally, splitting an index involved creating new indices, which was inefficient for mutable data, such as full-text search. Through discussions and technical considerations, a split API was developed, mirroring the shrink API's functionality in reverse. This process leverages Lucene's capabilities to minimize data copying by using point-in-time snapshots and hard-links, making it a fast operation with minimal space requirements. The procedure requires indices to be read-only temporarily, but it ensures transactional integrity. While index renaming isn't supported, using index aliases for efficient management is recommended, allowing users to atomically switch to resized indices with the update-aliases API. The development reflects a typical software engineering trade-off, prioritizing safe, transactional operations over complex solutions.