{"id":18832671,"url":"https://github.com/datto/es-disk-rebalance","last_synced_at":"2025-10-09T21:15:00.724Z","repository":{"id":49563704,"uuid":"203189823","full_name":"datto/es-disk-rebalance","owner":"datto","description":null,"archived":false,"fork":false,"pushed_at":"2021-06-14T13:16:57.000Z","size":22,"stargazers_count":4,"open_issues_count":1,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-14T04:36:30.799Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/datto.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.mit","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-08-19T14:31:56.000Z","updated_at":"2024-09-05T19:53:44.000Z","dependencies_parsed_at":"2022-07-30T17:19:07.222Z","dependency_job_id":null,"html_url":"https://github.com/datto/es-disk-rebalance","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datto%2Fes-disk-rebalance","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datto%2Fes-disk-rebalance/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datto%2Fes-disk-rebalance/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datto%2Fes-disk-rebalance/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/datto","download_url":"https://codeload.github.com/datto/es-disk-rebalance/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datto%2Fes-disk-rebalance/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259191886,"owners_count":22819406,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T01:58:42.419Z","updated_at":"2025-10-09T21:14:55.692Z","avatar_url":"https://github.com/datto.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Tool for balancing disk usage on an Elasticsearch cluster.\n\nElasticsearch's built in rebalancing tries to balance index count, which can end with\ncertan nodes loaded with very large shards while other nodes hold small ones. This tool\nswaps large shards with small shards to balance out the disk usage.\n\nThis script is intended to be ran automatically via cron or another periodic scheduler.\nIt may take a few runs to get a more optimal result.\n\n```\nusage: es-rebalance [-h] -u URL -b BOX_TYPE [-i ITERATIONS]\n                    [-p SHARD_PERCENTAGE] [-P NODE_PERCENTAGE] [-v]\n                    [--execute]\n\nDisk-usage-based rebalancing tool for ElasticSearch.\n\nSwaps large shards with small shards to balance disk usage between hosts.\n\nStarts one set of swaps per run. Swaps will happen asynchronously after running this script. Multiple runs may be needed to fully balance.\n\nThis script is rack aware; it will not swap shards so that a primary and replica for the same index are on the same rack.\n\nExample:\n\n\tes-rebalance -u localhost:9200 --box-type hot --iterations 50\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -u URL, --url URL     URL to cluster. Can be specified multiple times for\n                        redundancy.\n  -b BOX_TYPE, --box-type BOX_TYPE\n                        Box type of nodes to rebalance. One of 'warm' or\n                        'hot'.\n  -i ITERATIONS, --iterations ITERATIONS\n                        Maximum number of shards to exchange.\n  -p SHARD_PERCENTAGE, --shard-percentage SHARD_PERCENTAGE\n                        Don't exchange shards whose sizes are within this\n                        percent of each other, to avoid swapping similar-sized\n                        shards.\n  -P NODE_PERCENTAGE, --node-percentage NODE_PERCENTAGE\n                        Don't exchange between nodes whose sizes are within\n                        this many percentage points of each other.\n  -v, --verbose         Print debug logs.\n  --execute             Run the plan. If not specified, will be a dry run.\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatto%2Fes-disk-rebalance","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdatto%2Fes-disk-rebalance","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatto%2Fes-disk-rebalance/lists"}