Repository files navigation

Elasticdump

A powerful Go CLI tool to migrate data between Elasticsearch clusters. Elasticdump can also be used to backup and restore data with support for various Elasticsearch versions and efficient handling of large datasets.

Features

  • 🚀 Fast Data Migration: Migrate data between Elasticsearch clusters efficiently
  • 💾 Backup & Restore: Comprehensive backup and restore functionality
  • 🔄 Multi-Version Support: Compatible with various Elasticsearch versions
  • High Performance: Multi-threaded operations for faster processing
  • 📊 Progress Tracking: Real-time progress bars for long-running operations
  • 📝 Multiple Formats: Support for JSON and NDJSON output formats
  • 🎯 Flexible Operations: Transfer data, mappings, or settings independently

Installation

Using Go Install

go install github.com/lilmonk/elasticdump@latest

Building from Source

git clone https://github.com/lilmonk/elasticdump.git
cd elasticdump
go build -o elasticdump

Using Releases

Download the latest binary from the releases page.

Usage

Basic Transfer

Transfer data between two Elasticsearch clusters:

elasticdump transfer --input=http://localhost:9200/source_index --output=http://localhost:9200/dest_index

Backup Data

Backup data to a file:

elasticdump backup --input=http://localhost:9200/myindex --output=backup.ndjson

Restore Data

Restore data from a backup file:

elasticdump restore --input=backup.ndjson --output=http://localhost:9200/myindex

Transfer Mappings

Transfer only index mappings:

elasticdump transfer --input=http://localhost:9200/myindex --output=http://localhost:9200/myindex --type=mapping

Transfer Settings

Transfer only index settings:

elasticdump transfer --input=http://localhost:9200/myindex --output=http://localhost:9200/myindex --type=settings

Commands

transfer

Transfer data, mappings, or settings between Elasticsearch clusters or to/from files.

elasticdump transfer [flags]

Flags:

  • --input, -i: Source Elasticsearch cluster or index (required)
  • --output, -o: Destination Elasticsearch cluster or index (required)
  • --type, -t: Type of data to transfer (data, mapping, settings) (default: "data")
  • --limit, -l: Limit the number of records to transfer (0 = no limit) (default: 0)
  • --concurrency, -c: Number of concurrent operations (default: 4)
  • --format, -f: Output format (json, ndjson) (default: "json")
  • --scrollSize, -s: Size of the scroll for large datasets (default: 1000)
  • --username, -u: Username for Elasticsearch authentication
  • --password, -p: Password for Elasticsearch authentication

backup

Backup Elasticsearch data to a file. This is a convenience wrapper around the transfer command.

elasticdump backup [flags]

Flags:

  • --input, -i: Source Elasticsearch cluster or index (required)
  • --output, -o: Output file path (required)
  • --type, -t: Type of data to backup (data, mapping, settings) (default: "data")
  • --limit, -l: Limit the number of records to backup (0 = no limit) (default: 0)
  • --concurrency, -c: Number of concurrent operations (default: 4)
  • --format, -f: Output format (json, ndjson) (default: "ndjson")
  • --scrollSize, -s: Size of the scroll for large datasets (default: 1000)
  • --username, -u: Username for Elasticsearch authentication
  • --password, -p: Password for Elasticsearch authentication

restore

Restore Elasticsearch data from a backup file.

elasticdump restore [flags]

Flags:

  • --input, -i: Input file path (required)
  • --output, -o: Destination Elasticsearch cluster or index (required)
  • --type, -t: Type of data to restore (data, mapping, settings) (default: "data")
  • --concurrency, -c: Number of concurrent operations (default: 4)
  • --username, -u: Username for Elasticsearch authentication
  • --password, -p: Password for Elasticsearch authentication

Global Flags

  • --verbose, -v: Verbose output
  • --help, -h: Help for any command
  • --version: Show version information

Examples

Complete Index Migration

Migrate an entire index including data, mappings, and settings:

# First, transfer settings and mappings
elasticdump transfer --input=http://source:9200/myindex --output=http://dest:9200/myindex --type=settings
elasticdump transfer --input=http://source:9200/myindex --output=http://dest:9200/myindex --type=mapping
# Then transfer the data
elasticdump transfer --input=http://source:9200/myindex --output=http://dest:9200/myindex --type=data --concurrency=8

Large Dataset with Progress

For large datasets, increase concurrency and scroll size:

elasticdump transfer \
--input=http://localhost:9200/large_index \
--output=http://newcluster:9200/large_index \
--concurrency=10 \
--scrollSize=5000 \
--verbose

Partial Backup

Backup only a subset of documents:

elasticdump backup \
--input=http://localhost:9200/myindex \
--output=partial_backup.ndjson \
--limit=10000 \
--format=ndjson

Authentication

Elasticdump supports basic authentication methods for clusters requiring authentication:

Using Username and Password Flags

elasticdump transfer \
--input=http://source.elasticsearch.com:9200/index \
--output=http://dest.elasticsearch.com:9200/index \
--username=elastic \
--password=your_password

Performance Tips

  1. Increase Concurrency: Use --concurrency flag to increase parallel operations
  2. Optimize Scroll Size: Adjust --scrollSize based on document size and available memory
  3. Use NDJSON Format: For large datasets, NDJSON format is more memory efficient
  4. Network Proximity: Run elasticdump close to your Elasticsearch clusters to reduce network latency

Error Handling

Elasticdump includes robust error handling:

  • Automatic retries for transient network errors
  • Detailed error messages for debugging
  • Graceful handling of malformed documents

Contributing

We welcome contributions! Please see CONTRIBUTING.md for details.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

Acknowledgments

About

Go CLI tool to transfer or backup elasticsearch data.

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Elasticdump

A powerful Go CLI tool to migrate data between Elasticsearch clusters. Elasticdump can also be used to backup and restore data with support for various Elasticsearch versions and efficient handling of large datasets.

Features

  • 🚀 Fast Data Migration: Migrate data between Elasticsearch clusters efficiently
  • 💾 Backup & Restore: Comprehensive backup and restore functionality
  • 🔄 Multi-Version Support: Compatible with various Elasticsearch versions
  • High Performance: Multi-threaded operations for faster processing
  • 📊 Progress Tracking: Real-time progress bars for long-running operations
  • 📝 Multiple Formats: Support for JSON and NDJSON output formats
  • 🎯 Flexible Operations: Transfer data, mappings, or settings independently

Installation

Using Go Install

go install github.com/lilmonk/elasticdump@latest

Building from Source

git clone https://github.com/lilmonk/elasticdump.git
cd elasticdump
go build -o elasticdump

Using Releases

Download the latest binary from the releases page.

Usage

Basic Transfer

Transfer data between two Elasticsearch clusters:

elasticdump transfer --input=http://localhost:9200/source_index --output=http://localhost:9200/dest_index

Backup Data

Backup data to a file:

elasticdump backup --input=http://localhost:9200/myindex --output=backup.ndjson

Restore Data

Restore data from a backup file:

elasticdump restore --input=backup.ndjson --output=http://localhost:9200/myindex

Transfer Mappings

Transfer only index mappings:

elasticdump transfer --input=http://localhost:9200/myindex --output=http://localhost:9200/myindex --type=mapping

Transfer Settings

Transfer only index settings:

elasticdump transfer --input=http://localhost:9200/myindex --output=http://localhost:9200/myindex --type=settings

Commands

transfer

Transfer data, mappings, or settings between Elasticsearch clusters or to/from files.

elasticdump transfer [flags]

Flags:

  • --input, -i: Source Elasticsearch cluster or index (required)
  • --output, -o: Destination Elasticsearch cluster or index (required)
  • --type, -t: Type of data to transfer (data, mapping, settings) (default: "data")
  • --limit, -l: Limit the number of records to transfer (0 = no limit) (default: 0)
  • --concurrency, -c: Number of concurrent operations (default: 4)
  • --format, -f: Output format (json, ndjson) (default: "json")
  • --scrollSize, -s: Size of the scroll for large datasets (default: 1000)
  • --username, -u: Username for Elasticsearch authentication
  • --password, -p: Password for Elasticsearch authentication

backup

Backup Elasticsearch data to a file. This is a convenience wrapper around the transfer command.

elasticdump backup [flags]

Flags:

  • --input, -i: Source Elasticsearch cluster or index (required)
  • --output, -o: Output file path (required)
  • --type, -t: Type of data to backup (data, mapping, settings) (default: "data")
  • --limit, -l: Limit the number of records to backup (0 = no limit) (default: 0)
  • --concurrency, -c: Number of concurrent operations (default: 4)
  • --format, -f: Output format (json, ndjson) (default: "ndjson")
  • --scrollSize, -s: Size of the scroll for large datasets (default: 1000)
  • --username, -u: Username for Elasticsearch authentication
  • --password, -p: Password for Elasticsearch authentication

restore

Restore Elasticsearch data from a backup file.

elasticdump restore [flags]

Flags:

  • --input, -i: Input file path (required)
  • --output, -o: Destination Elasticsearch cluster or index (required)
  • --type, -t: Type of data to restore (data, mapping, settings) (default: "data")
  • --concurrency, -c: Number of concurrent operations (default: 4)
  • --username, -u: Username for Elasticsearch authentication
  • --password, -p: Password for Elasticsearch authentication

Global Flags

  • --verbose, -v: Verbose output
  • --help, -h: Help for any command
  • --version: Show version information

Examples

Complete Index Migration

Migrate an entire index including data, mappings, and settings:

# First, transfer settings and mappings
elasticdump transfer --input=http://source:9200/myindex --output=http://dest:9200/myindex --type=settings
elasticdump transfer --input=http://source:9200/myindex --output=http://dest:9200/myindex --type=mapping
# Then transfer the data
elasticdump transfer --input=http://source:9200/myindex --output=http://dest:9200/myindex --type=data --concurrency=8

Large Dataset with Progress

For large datasets, increase concurrency and scroll size:

elasticdump transfer \
--input=http://localhost:9200/large_index \
--output=http://newcluster:9200/large_index \
--concurrency=10 \
--scrollSize=5000 \
--verbose

Partial Backup

Backup only a subset of documents:

elasticdump backup \
--input=http://localhost:9200/myindex \
--output=partial_backup.ndjson \
--limit=10000 \
--format=ndjson

Authentication

Elasticdump supports basic authentication methods for clusters requiring authentication:

Using Username and Password Flags

elasticdump transfer \
--input=http://source.elasticsearch.com:9200/index \
--output=http://dest.elasticsearch.com:9200/index \
--username=elastic \
--password=your_password

Performance Tips

  1. Increase Concurrency: Use --concurrency flag to increase parallel operations
  2. Optimize Scroll Size: Adjust --scrollSize based on document size and available memory
  3. Use NDJSON Format: For large datasets, NDJSON format is more memory efficient
  4. Network Proximity: Run elasticdump close to your Elasticsearch clusters to reduce network latency

Error Handling

Elasticdump includes robust error handling:

  • Automatic retries for transient network errors
  • Detailed error messages for debugging
  • Graceful handling of malformed documents

Contributing

We welcome contributions! Please see CONTRIBUTING.md for details.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

Acknowledgments

About

Go CLI tool to transfer or backup elasticsearch data.

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Elasticdump

A powerful Go CLI tool to migrate data between Elasticsearch clusters. Elasticdump can also be used to backup and restore data with support for various Elasticsearch versions and efficient handling of large datasets.

Features

  • 🚀 Fast Data Migration: Migrate data between Elasticsearch clusters efficiently
  • 💾 Backup & Restore: Comprehensive backup and restore functionality
  • 🔄 Multi-Version Support: Compatible with various Elasticsearch versions
  • High Performance: Multi-threaded operations for faster processing
  • 📊 Progress Tracking: Real-time progress bars for long-running operations
  • 📝 Multiple Formats: Support for JSON and NDJSON output formats
  • 🎯 Flexible Operations: Transfer data, mappings, or settings independently

Installation

Using Go Install

go install github.com/lilmonk/elasticdump@latest

Building from Source

git clone https://github.com/lilmonk/elasticdump.git
cd elasticdump
go build -o elasticdump

Using Releases

Download the latest binary from the releases page.

Usage

Basic Transfer

Transfer data between two Elasticsearch clusters:

elasticdump transfer --input=http://localhost:9200/source_index --output=http://localhost:9200/dest_index

Backup Data

Backup data to a file:

elasticdump backup --input=http://localhost:9200/myindex --output=backup.ndjson

Restore Data

Restore data from a backup file:

elasticdump restore --input=backup.ndjson --output=http://localhost:9200/myindex

Transfer Mappings

Transfer only index mappings:

elasticdump transfer --input=http://localhost:9200/myindex --output=http://localhost:9200/myindex --type=mapping

Transfer Settings

Transfer only index settings:

elasticdump transfer --input=http://localhost:9200/myindex --output=http://localhost:9200/myindex --type=settings

Commands

transfer

Transfer data, mappings, or settings between Elasticsearch clusters or to/from files.

elasticdump transfer [flags]

Flags:

  • --input, -i: Source Elasticsearch cluster or index (required)
  • --output, -o: Destination Elasticsearch cluster or index (required)
  • --type, -t: Type of data to transfer (data, mapping, settings) (default: "data")
  • --limit, -l: Limit the number of records to transfer (0 = no limit) (default: 0)
  • --concurrency, -c: Number of concurrent operations (default: 4)
  • --format, -f: Output format (json, ndjson) (default: "json")
  • --scrollSize, -s: Size of the scroll for large datasets (default: 1000)
  • --username, -u: Username for Elasticsearch authentication
  • --password, -p: Password for Elasticsearch authentication

backup

Backup Elasticsearch data to a file. This is a convenience wrapper around the transfer command.

elasticdump backup [flags]

Flags:

  • --input, -i: Source Elasticsearch cluster or index (required)
  • --output, -o: Output file path (required)
  • --type, -t: Type of data to backup (data, mapping, settings) (default: "data")
  • --limit, -l: Limit the number of records to backup (0 = no limit) (default: 0)
  • --concurrency, -c: Number of concurrent operations (default: 4)
  • --format, -f: Output format (json, ndjson) (default: "ndjson")
  • --scrollSize, -s: Size of the scroll for large datasets (default: 1000)
  • --username, -u: Username for Elasticsearch authentication
  • --password, -p: Password for Elasticsearch authentication

restore

Restore Elasticsearch data from a backup file.

elasticdump restore [flags]

Flags:

  • --input, -i: Input file path (required)
  • --output, -o: Destination Elasticsearch cluster or index (required)
  • --type, -t: Type of data to restore (data, mapping, settings) (default: "data")
  • --concurrency, -c: Number of concurrent operations (default: 4)
  • --username, -u: Username for Elasticsearch authentication
  • --password, -p: Password for Elasticsearch authentication

Global Flags

  • --verbose, -v: Verbose output
  • --help, -h: Help for any command
  • --version: Show version information

Examples

Complete Index Migration

Migrate an entire index including data, mappings, and settings:

# First, transfer settings and mappings
elasticdump transfer --input=http://source:9200/myindex --output=http://dest:9200/myindex --type=settings
elasticdump transfer --input=http://source:9200/myindex --output=http://dest:9200/myindex --type=mapping
# Then transfer the data
elasticdump transfer --input=http://source:9200/myindex --output=http://dest:9200/myindex --type=data --concurrency=8

Large Dataset with Progress

For large datasets, increase concurrency and scroll size:

elasticdump transfer \
--input=http://localhost:9200/large_index \
--output=http://newcluster:9200/large_index \
--concurrency=10 \
--scrollSize=5000 \
--verbose

Partial Backup

Backup only a subset of documents:

elasticdump backup \
--input=http://localhost:9200/myindex \
--output=partial_backup.ndjson \
--limit=10000 \
--format=ndjson

Authentication

Elasticdump supports basic authentication methods for clusters requiring authentication:

Using Username and Password Flags

elasticdump transfer \
--input=http://source.elasticsearch.com:9200/index \
--output=http://dest.elasticsearch.com:9200/index \
--username=elastic \
--password=your_password

Performance Tips

  1. Increase Concurrency: Use --concurrency flag to increase parallel operations
  2. Optimize Scroll Size: Adjust --scrollSize based on document size and available memory
  3. Use NDJSON Format: For large datasets, NDJSON format is more memory efficient
  4. Network Proximity: Run elasticdump close to your Elasticsearch clusters to reduce network latency

Error Handling

Elasticdump includes robust error handling:

  • Automatic retries for transient network errors
  • Detailed error messages for debugging
  • Graceful handling of malformed documents

Contributing

We welcome contributions! Please see CONTRIBUTING.md for details.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

Acknowledgments

About

Go CLI tool to transfer or backup elasticsearch data.

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Elasticdump

A powerful Go CLI tool to migrate data between Elasticsearch clusters. Elasticdump can also be used to backup and restore data with support for various Elasticsearch versions and efficient handling of large datasets.

Features

  • 🚀 Fast Data Migration: Migrate data between Elasticsearch clusters efficiently
  • 💾 Backup & Restore: Comprehensive backup and restore functionality
  • 🔄 Multi-Version Support: Compatible with various Elasticsearch versions
  • High Performance: Multi-threaded operations for faster processing
  • 📊 Progress Tracking: Real-time progress bars for long-running operations
  • 📝 Multiple Formats: Support for JSON and NDJSON output formats
  • 🎯 Flexible Operations: Transfer data, mappings, or settings independently

Installation

Using Go Install

go install github.com/lilmonk/elasticdump@latest

Building from Source

git clone https://github.com/lilmonk/elasticdump.git
cd elasticdump
go build -o elasticdump

Using Releases

Download the latest binary from the releases page.

Usage

Basic Transfer

Transfer data between two Elasticsearch clusters:

elasticdump transfer --input=http://localhost:9200/source_index --output=http://localhost:9200/dest_index

Backup Data

Backup data to a file:

elasticdump backup --input=http://localhost:9200/myindex --output=backup.ndjson

Restore Data

Restore data from a backup file:

elasticdump restore --input=backup.ndjson --output=http://localhost:9200/myindex

Transfer Mappings

Transfer only index mappings:

elasticdump transfer --input=http://localhost:9200/myindex --output=http://localhost:9200/myindex --type=mapping

Transfer Settings

Transfer only index settings:

elasticdump transfer --input=http://localhost:9200/myindex --output=http://localhost:9200/myindex --type=settings

Commands

transfer

Transfer data, mappings, or settings between Elasticsearch clusters or to/from files.

elasticdump transfer [flags]

Flags:

  • --input, -i: Source Elasticsearch cluster or index (required)
  • --output, -o: Destination Elasticsearch cluster or index (required)
  • --type, -t: Type of data to transfer (data, mapping, settings) (default: "data")
  • --limit, -l: Limit the number of records to transfer (0 = no limit) (default: 0)
  • --concurrency, -c: Number of concurrent operations (default: 4)
  • --format, -f: Output format (json, ndjson) (default: "json")
  • --scrollSize, -s: Size of the scroll for large datasets (default: 1000)
  • --username, -u: Username for Elasticsearch authentication
  • --password, -p: Password for Elasticsearch authentication

backup

Backup Elasticsearch data to a file. This is a convenience wrapper around the transfer command.

elasticdump backup [flags]

Flags:

  • --input, -i: Source Elasticsearch cluster or index (required)
  • --output, -o: Output file path (required)
  • --type, -t: Type of data to backup (data, mapping, settings) (default: "data")
  • --limit, -l: Limit the number of records to backup (0 = no limit) (default: 0)
  • --concurrency, -c: Number of concurrent operations (default: 4)
  • --format, -f: Output format (json, ndjson) (default: "ndjson")
  • --scrollSize, -s: Size of the scroll for large datasets (default: 1000)
  • --username, -u: Username for Elasticsearch authentication
  • --password, -p: Password for Elasticsearch authentication

restore

Restore Elasticsearch data from a backup file.

elasticdump restore [flags]

Flags:

  • --input, -i: Input file path (required)
  • --output, -o: Destination Elasticsearch cluster or index (required)
  • --type, -t: Type of data to restore (data, mapping, settings) (default: "data")
  • --concurrency, -c: Number of concurrent operations (default: 4)
  • --username, -u: Username for Elasticsearch authentication
  • --password, -p: Password for Elasticsearch authentication

Global Flags

  • --verbose, -v: Verbose output
  • --help, -h: Help for any command
  • --version: Show version information

Examples

Complete Index Migration

Migrate an entire index including data, mappings, and settings:

# First, transfer settings and mappings
elasticdump transfer --input=http://source:9200/myindex --output=http://dest:9200/myindex --type=settings
elasticdump transfer --input=http://source:9200/myindex --output=http://dest:9200/myindex --type=mapping
# Then transfer the data
elasticdump transfer --input=http://source:9200/myindex --output=http://dest:9200/myindex --type=data --concurrency=8

Large Dataset with Progress

For large datasets, increase concurrency and scroll size:

elasticdump transfer \
--input=http://localhost:9200/large_index \
--output=http://newcluster:9200/large_index \
--concurrency=10 \
--scrollSize=5000 \
--verbose

Partial Backup

Backup only a subset of documents:

elasticdump backup \
--input=http://localhost:9200/myindex \
--output=partial_backup.ndjson \
--limit=10000 \
--format=ndjson

Authentication

Elasticdump supports basic authentication methods for clusters requiring authentication:

Using Username and Password Flags

elasticdump transfer \
--input=http://source.elasticsearch.com:9200/index \
--output=http://dest.elasticsearch.com:9200/index \
--username=elastic \
--password=your_password

Performance Tips

  1. Increase Concurrency: Use --concurrency flag to increase parallel operations
  2. Optimize Scroll Size: Adjust --scrollSize based on document size and available memory
  3. Use NDJSON Format: For large datasets, NDJSON format is more memory efficient
  4. Network Proximity: Run elasticdump close to your Elasticsearch clusters to reduce network latency

Error Handling

Elasticdump includes robust error handling:

  • Automatic retries for transient network errors
  • Detailed error messages for debugging
  • Graceful handling of malformed documents

Contributing

We welcome contributions! Please see CONTRIBUTING.md for details.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

Acknowledgments

About

Go CLI tool to transfer or backup elasticsearch data.

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Elasticdump

A powerful Go CLI tool to migrate data between Elasticsearch clusters. Elasticdump can also be used to backup and restore data with support for various Elasticsearch versions and efficient handling of large datasets.

Features

  • 🚀 Fast Data Migration: Migrate data between Elasticsearch clusters efficiently
  • 💾 Backup & Restore: Comprehensive backup and restore functionality
  • 🔄 Multi-Version Support: Compatible with various Elasticsearch versions
  • High Performance: Multi-threaded operations for faster processing
  • 📊 Progress Tracking: Real-time progress bars for long-running operations
  • 📝 Multiple Formats: Support for JSON and NDJSON output formats
  • 🎯 Flexible Operations: Transfer data, mappings, or settings independently

Installation

Using Go Install

go install github.com/lilmonk/elasticdump@latest

Building from Source

git clone https://github.com/lilmonk/elasticdump.git
cd elasticdump
go build -o elasticdump

Using Releases

Download the latest binary from the releases page.

Usage

Basic Transfer

Transfer data between two Elasticsearch clusters:

elasticdump transfer --input=http://localhost:9200/source_index --output=http://localhost:9200/dest_index

Backup Data

Backup data to a file:

elasticdump backup --input=http://localhost:9200/myindex --output=backup.ndjson

Restore Data

Restore data from a backup file:

elasticdump restore --input=backup.ndjson --output=http://localhost:9200/myindex

Transfer Mappings

Transfer only index mappings:

elasticdump transfer --input=http://localhost:9200/myindex --output=http://localhost:9200/myindex --type=mapping

Transfer Settings

Transfer only index settings:

elasticdump transfer --input=http://localhost:9200/myindex --output=http://localhost:9200/myindex --type=settings

Commands

transfer

Transfer data, mappings, or settings between Elasticsearch clusters or to/from files.

elasticdump transfer [flags]

Flags:

  • --input, -i: Source Elasticsearch cluster or index (required)
  • --output, -o: Destination Elasticsearch cluster or index (required)
  • --type, -t: Type of data to transfer (data, mapping, settings) (default: "data")
  • --limit, -l: Limit the number of records to transfer (0 = no limit) (default: 0)
  • --concurrency, -c: Number of concurrent operations (default: 4)
  • --format, -f: Output format (json, ndjson) (default: "json")
  • --scrollSize, -s: Size of the scroll for large datasets (default: 1000)
  • --username, -u: Username for Elasticsearch authentication
  • --password, -p: Password for Elasticsearch authentication

backup

Backup Elasticsearch data to a file. This is a convenience wrapper around the transfer command.

elasticdump backup [flags]

Flags:

  • --input, -i: Source Elasticsearch cluster or index (required)
  • --output, -o: Output file path (required)
  • --type, -t: Type of data to backup (data, mapping, settings) (default: "data")
  • --limit, -l: Limit the number of records to backup (0 = no limit) (default: 0)
  • --concurrency, -c: Number of concurrent operations (default: 4)
  • --format, -f: Output format (json, ndjson) (default: "ndjson")
  • --scrollSize, -s: Size of the scroll for large datasets (default: 1000)
  • --username, -u: Username for Elasticsearch authentication
  • --password, -p: Password for Elasticsearch authentication

restore

Restore Elasticsearch data from a backup file.

elasticdump restore [flags]

Flags:

  • --input, -i: Input file path (required)
  • --output, -o: Destination Elasticsearch cluster or index (required)
  • --type, -t: Type of data to restore (data, mapping, settings) (default: "data")
  • --concurrency, -c: Number of concurrent operations (default: 4)
  • --username, -u: Username for Elasticsearch authentication
  • --password, -p: Password for Elasticsearch authentication

Global Flags

  • --verbose, -v: Verbose output
  • --help, -h: Help for any command
  • --version: Show version information

Examples

Complete Index Migration

Migrate an entire index including data, mappings, and settings:

# First, transfer settings and mappings
elasticdump transfer --input=http://source:9200/myindex --output=http://dest:9200/myindex --type=settings
elasticdump transfer --input=http://source:9200/myindex --output=http://dest:9200/myindex --type=mapping
# Then transfer the data
elasticdump transfer --input=http://source:9200/myindex --output=http://dest:9200/myindex --type=data --concurrency=8

Large Dataset with Progress

For large datasets, increase concurrency and scroll size:

elasticdump transfer \
--input=http://localhost:9200/large_index \
--output=http://newcluster:9200/large_index \
--concurrency=10 \
--scrollSize=5000 \
--verbose

Partial Backup

Backup only a subset of documents:

elasticdump backup \
--input=http://localhost:9200/myindex \
--output=partial_backup.ndjson \
--limit=10000 \
--format=ndjson

Authentication

Elasticdump supports basic authentication methods for clusters requiring authentication:

Using Username and Password Flags

elasticdump transfer \
--input=http://source.elasticsearch.com:9200/index \
--output=http://dest.elasticsearch.com:9200/index \
--username=elastic \
--password=your_password

Performance Tips

  1. Increase Concurrency: Use --concurrency flag to increase parallel operations
  2. Optimize Scroll Size: Adjust --scrollSize based on document size and available memory
  3. Use NDJSON Format: For large datasets, NDJSON format is more memory efficient
  4. Network Proximity: Run elasticdump close to your Elasticsearch clusters to reduce network latency

Error Handling

Elasticdump includes robust error handling:

  • Automatic retries for transient network errors
  • Detailed error messages for debugging
  • Graceful handling of malformed documents

Contributing

We welcome contributions! Please see CONTRIBUTING.md for details.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

Acknowledgments

About

Go CLI tool to transfer or backup elasticsearch data.

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Elasticdump

A powerful Go CLI tool to migrate data between Elasticsearch clusters. Elasticdump can also be used to backup and restore data with support for various Elasticsearch versions and efficient handling of large datasets.

Features

  • 🚀 Fast Data Migration: Migrate data between Elasticsearch clusters efficiently
  • 💾 Backup & Restore: Comprehensive backup and restore functionality
  • 🔄 Multi-Version Support: Compatible with various Elasticsearch versions
  • High Performance: Multi-threaded operations for faster processing
  • 📊 Progress Tracking: Real-time progress bars for long-running operations
  • 📝 Multiple Formats: Support for JSON and NDJSON output formats
  • 🎯 Flexible Operations: Transfer data, mappings, or settings independently

Installation

Using Go Install

go install github.com/lilmonk/elasticdump@latest

Building from Source

git clone https://github.com/lilmonk/elasticdump.git
cd elasticdump
go build -o elasticdump

Using Releases

Download the latest binary from the releases page.

Usage

Basic Transfer

Transfer data between two Elasticsearch clusters:

elasticdump transfer --input=http://localhost:9200/source_index --output=http://localhost:9200/dest_index

Backup Data

Backup data to a file:

elasticdump backup --input=http://localhost:9200/myindex --output=backup.ndjson

Restore Data

Restore data from a backup file:

elasticdump restore --input=backup.ndjson --output=http://localhost:9200/myindex

Transfer Mappings

Transfer only index mappings:

elasticdump transfer --input=http://localhost:9200/myindex --output=http://localhost:9200/myindex --type=mapping

Transfer Settings

Transfer only index settings:

elasticdump transfer --input=http://localhost:9200/myindex --output=http://localhost:9200/myindex --type=settings

Commands

transfer

Transfer data, mappings, or settings between Elasticsearch clusters or to/from files.

elasticdump transfer [flags]

Flags:

  • --input, -i: Source Elasticsearch cluster or index (required)
  • --output, -o: Destination Elasticsearch cluster or index (required)
  • --type, -t: Type of data to transfer (data, mapping, settings) (default: "data")
  • --limit, -l: Limit the number of records to transfer (0 = no limit) (default: 0)
  • --concurrency, -c: Number of concurrent operations (default: 4)
  • --format, -f: Output format (json, ndjson) (default: "json")
  • --scrollSize, -s: Size of the scroll for large datasets (default: 1000)
  • --username, -u: Username for Elasticsearch authentication
  • --password, -p: Password for Elasticsearch authentication

backup

Backup Elasticsearch data to a file. This is a convenience wrapper around the transfer command.

elasticdump backup [flags]

Flags:

  • --input, -i: Source Elasticsearch cluster or index (required)
  • --output, -o: Output file path (required)
  • --type, -t: Type of data to backup (data, mapping, settings) (default: "data")
  • --limit, -l: Limit the number of records to backup (0 = no limit) (default: 0)
  • --concurrency, -c: Number of concurrent operations (default: 4)
  • --format, -f: Output format (json, ndjson) (default: "ndjson")
  • --scrollSize, -s: Size of the scroll for large datasets (default: 1000)
  • --username, -u: Username for Elasticsearch authentication
  • --password, -p: Password for Elasticsearch authentication

restore

Restore Elasticsearch data from a backup file.

elasticdump restore [flags]

Flags:

  • --input, -i: Input file path (required)
  • --output, -o: Destination Elasticsearch cluster or index (required)
  • --type, -t: Type of data to restore (data, mapping, settings) (default: "data")
  • --concurrency, -c: Number of concurrent operations (default: 4)
  • --username, -u: Username for Elasticsearch authentication
  • --password, -p: Password for Elasticsearch authentication

Global Flags

  • --verbose, -v: Verbose output
  • --help, -h: Help for any command
  • --version: Show version information

Examples

Complete Index Migration

Migrate an entire index including data, mappings, and settings:

# First, transfer settings and mappings
elasticdump transfer --input=http://source:9200/myindex --output=http://dest:9200/myindex --type=settings
elasticdump transfer --input=http://source:9200/myindex --output=http://dest:9200/myindex --type=mapping
# Then transfer the data
elasticdump transfer --input=http://source:9200/myindex --output=http://dest:9200/myindex --type=data --concurrency=8

Large Dataset with Progress

For large datasets, increase concurrency and scroll size:

elasticdump transfer \
--input=http://localhost:9200/large_index \
--output=http://newcluster:9200/large_index \
--concurrency=10 \
--scrollSize=5000 \
--verbose

Partial Backup

Backup only a subset of documents:

elasticdump backup \
--input=http://localhost:9200/myindex \
--output=partial_backup.ndjson \
--limit=10000 \
--format=ndjson

Authentication

Elasticdump supports basic authentication methods for clusters requiring authentication:

Using Username and Password Flags

elasticdump transfer \
--input=http://source.elasticsearch.com:9200/index \
--output=http://dest.elasticsearch.com:9200/index \
--username=elastic \
--password=your_password

Performance Tips

  1. Increase Concurrency: Use --concurrency flag to increase parallel operations
  2. Optimize Scroll Size: Adjust --scrollSize based on document size and available memory
  3. Use NDJSON Format: For large datasets, NDJSON format is more memory efficient
  4. Network Proximity: Run elasticdump close to your Elasticsearch clusters to reduce network latency

Error Handling

Elasticdump includes robust error handling:

  • Automatic retries for transient network errors
  • Detailed error messages for debugging
  • Graceful handling of malformed documents

Contributing

We welcome contributions! Please see CONTRIBUTING.md for details.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

Acknowledgments

About

Go CLI tool to transfer or backup elasticsearch data.

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Elasticdump

A powerful Go CLI tool to migrate data between Elasticsearch clusters. Elasticdump can also be used to backup and restore data with support for various Elasticsearch versions and efficient handling of large datasets.

Features

  • 🚀 Fast Data Migration: Migrate data between Elasticsearch clusters efficiently
  • 💾 Backup & Restore: Comprehensive backup and restore functionality
  • 🔄 Multi-Version Support: Compatible with various Elasticsearch versions
  • High Performance: Multi-threaded operations for faster processing
  • 📊 Progress Tracking: Real-time progress bars for long-running operations
  • 📝 Multiple Formats: Support for JSON and NDJSON output formats
  • 🎯 Flexible Operations: Transfer data, mappings, or settings independently

Installation

Using Go Install

go install github.com/lilmonk/elasticdump@latest

Building from Source

git clone https://github.com/lilmonk/elasticdump.git
cd elasticdump
go build -o elasticdump

Using Releases

Download the latest binary from the releases page.

Usage

Basic Transfer

Transfer data between two Elasticsearch clusters:

elasticdump transfer --input=http://localhost:9200/source_index --output=http://localhost:9200/dest_index

Backup Data

Backup data to a file:

elasticdump backup --input=http://localhost:9200/myindex --output=backup.ndjson

Restore Data

Restore data from a backup file:

elasticdump restore --input=backup.ndjson --output=http://localhost:9200/myindex

Transfer Mappings

Transfer only index mappings:

elasticdump transfer --input=http://localhost:9200/myindex --output=http://localhost:9200/myindex --type=mapping

Transfer Settings

Transfer only index settings:

elasticdump transfer --input=http://localhost:9200/myindex --output=http://localhost:9200/myindex --type=settings

Commands

transfer

Transfer data, mappings, or settings between Elasticsearch clusters or to/from files.

elasticdump transfer [flags]

Flags:

  • --input, -i: Source Elasticsearch cluster or index (required)
  • --output, -o: Destination Elasticsearch cluster or index (required)
  • --type, -t: Type of data to transfer (data, mapping, settings) (default: "data")
  • --limit, -l: Limit the number of records to transfer (0 = no limit) (default: 0)
  • --concurrency, -c: Number of concurrent operations (default: 4)
  • --format, -f: Output format (json, ndjson) (default: "json")
  • --scrollSize, -s: Size of the scroll for large datasets (default: 1000)
  • --username, -u: Username for Elasticsearch authentication
  • --password, -p: Password for Elasticsearch authentication

backup

Backup Elasticsearch data to a file. This is a convenience wrapper around the transfer command.

elasticdump backup [flags]

Flags:

  • --input, -i: Source Elasticsearch cluster or index (required)
  • --output, -o: Output file path (required)
  • --type, -t: Type of data to backup (data, mapping, settings) (default: "data")
  • --limit, -l: Limit the number of records to backup (0 = no limit) (default: 0)
  • --concurrency, -c: Number of concurrent operations (default: 4)
  • --format, -f: Output format (json, ndjson) (default: "ndjson")
  • --scrollSize, -s: Size of the scroll for large datasets (default: 1000)
  • --username, -u: Username for Elasticsearch authentication
  • --password, -p: Password for Elasticsearch authentication

restore

Restore Elasticsearch data from a backup file.

elasticdump restore [flags]

Flags:

  • --input, -i: Input file path (required)
  • --output, -o: Destination Elasticsearch cluster or index (required)
  • --type, -t: Type of data to restore (data, mapping, settings) (default: "data")
  • --concurrency, -c: Number of concurrent operations (default: 4)
  • --username, -u: Username for Elasticsearch authentication
  • --password, -p: Password for Elasticsearch authentication

Global Flags

  • --verbose, -v: Verbose output
  • --help, -h: Help for any command
  • --version: Show version information

Examples

Complete Index Migration

Migrate an entire index including data, mappings, and settings:

# First, transfer settings and mappings
elasticdump transfer --input=http://source:9200/myindex --output=http://dest:9200/myindex --type=settings
elasticdump transfer --input=http://source:9200/myindex --output=http://dest:9200/myindex --type=mapping
# Then transfer the data
elasticdump transfer --input=http://source:9200/myindex --output=http://dest:9200/myindex --type=data --concurrency=8

Large Dataset with Progress

For large datasets, increase concurrency and scroll size:

elasticdump transfer \
--input=http://localhost:9200/large_index \
--output=http://newcluster:9200/large_index \
--concurrency=10 \
--scrollSize=5000 \
--verbose

Partial Backup

Backup only a subset of documents:

elasticdump backup \
--input=http://localhost:9200/myindex \
--output=partial_backup.ndjson \
--limit=10000 \
--format=ndjson

Authentication

Elasticdump supports basic authentication methods for clusters requiring authentication:

Using Username and Password Flags

elasticdump transfer \
--input=http://source.elasticsearch.com:9200/index \
--output=http://dest.elasticsearch.com:9200/index \
--username=elastic \
--password=your_password

Performance Tips

  1. Increase Concurrency: Use --concurrency flag to increase parallel operations
  2. Optimize Scroll Size: Adjust --scrollSize based on document size and available memory
  3. Use NDJSON Format: For large datasets, NDJSON format is more memory efficient
  4. Network Proximity: Run elasticdump close to your Elasticsearch clusters to reduce network latency

Error Handling

Elasticdump includes robust error handling:

  • Automatic retries for transient network errors
  • Detailed error messages for debugging
  • Graceful handling of malformed documents

Contributing

We welcome contributions! Please see CONTRIBUTING.md for details.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

Acknowledgments

About

Go CLI tool to transfer or backup elasticsearch data.

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Elasticdump

A powerful Go CLI tool to migrate data between Elasticsearch clusters. Elasticdump can also be used to backup and restore data with support for various Elasticsearch versions and efficient handling of large datasets.

Features

  • 🚀 Fast Data Migration: Migrate data between Elasticsearch clusters efficiently
  • 💾 Backup & Restore: Comprehensive backup and restore functionality
  • 🔄 Multi-Version Support: Compatible with various Elasticsearch versions
  • High Performance: Multi-threaded operations for faster processing
  • 📊 Progress Tracking: Real-time progress bars for long-running operations
  • 📝 Multiple Formats: Support for JSON and NDJSON output formats
  • 🎯 Flexible Operations: Transfer data, mappings, or settings independently

Installation

Using Go Install

go install github.com/lilmonk/elasticdump@latest

Building from Source

git clone https://github.com/lilmonk/elasticdump.git
cd elasticdump
go build -o elasticdump

Using Releases

Download the latest binary from the releases page.

Usage

Basic Transfer

Transfer data between two Elasticsearch clusters:

elasticdump transfer --input=http://localhost:9200/source_index --output=http://localhost:9200/dest_index

Backup Data

Backup data to a file:

elasticdump backup --input=http://localhost:9200/myindex --output=backup.ndjson

Restore Data

Restore data from a backup file:

elasticdump restore --input=backup.ndjson --output=http://localhost:9200/myindex

Transfer Mappings

Transfer only index mappings:

elasticdump transfer --input=http://localhost:9200/myindex --output=http://localhost:9200/myindex --type=mapping

Transfer Settings

Transfer only index settings:

elasticdump transfer --input=http://localhost:9200/myindex --output=http://localhost:9200/myindex --type=settings

Commands

transfer

Transfer data, mappings, or settings between Elasticsearch clusters or to/from files.

elasticdump transfer [flags]

Flags:

  • --input, -i: Source Elasticsearch cluster or index (required)
  • --output, -o: Destination Elasticsearch cluster or index (required)
  • --type, -t: Type of data to transfer (data, mapping, settings) (default: "data")
  • --limit, -l: Limit the number of records to transfer (0 = no limit) (default: 0)
  • --concurrency, -c: Number of concurrent operations (default: 4)
  • --format, -f: Output format (json, ndjson) (default: "json")
  • --scrollSize, -s: Size of the scroll for large datasets (default: 1000)
  • --username, -u: Username for Elasticsearch authentication
  • --password, -p: Password for Elasticsearch authentication

backup

Backup Elasticsearch data to a file. This is a convenience wrapper around the transfer command.

elasticdump backup [flags]

Flags:

  • --input, -i: Source Elasticsearch cluster or index (required)
  • --output, -o: Output file path (required)
  • --type, -t: Type of data to backup (data, mapping, settings) (default: "data")
  • --limit, -l: Limit the number of records to backup (0 = no limit) (default: 0)
  • --concurrency, -c: Number of concurrent operations (default: 4)
  • --format, -f: Output format (json, ndjson) (default: "ndjson")
  • --scrollSize, -s: Size of the scroll for large datasets (default: 1000)
  • --username, -u: Username for Elasticsearch authentication
  • --password, -p: Password for Elasticsearch authentication

restore

Restore Elasticsearch data from a backup file.

elasticdump restore [flags]

Flags:

  • --input, -i: Input file path (required)
  • --output, -o: Destination Elasticsearch cluster or index (required)
  • --type, -t: Type of data to restore (data, mapping, settings) (default: "data")
  • --concurrency, -c: Number of concurrent operations (default: 4)
  • --username, -u: Username for Elasticsearch authentication
  • --password, -p: Password for Elasticsearch authentication

Global Flags

  • --verbose, -v: Verbose output
  • --help, -h: Help for any command
  • --version: Show version information

Examples

Complete Index Migration

Migrate an entire index including data, mappings, and settings:

# First, transfer settings and mappings
elasticdump transfer --input=http://source:9200/myindex --output=http://dest:9200/myindex --type=settings
elasticdump transfer --input=http://source:9200/myindex --output=http://dest:9200/myindex --type=mapping
# Then transfer the data
elasticdump transfer --input=http://source:9200/myindex --output=http://dest:9200/myindex --type=data --concurrency=8

Large Dataset with Progress

For large datasets, increase concurrency and scroll size:

elasticdump transfer \
--input=http://localhost:9200/large_index \
--output=http://newcluster:9200/large_index \
--concurrency=10 \
--scrollSize=5000 \
--verbose

Partial Backup

Backup only a subset of documents:

elasticdump backup \
--input=http://localhost:9200/myindex \
--output=partial_backup.ndjson \
--limit=10000 \
--format=ndjson

Authentication

Elasticdump supports basic authentication methods for clusters requiring authentication:

Using Username and Password Flags

elasticdump transfer \
--input=http://source.elasticsearch.com:9200/index \
--output=http://dest.elasticsearch.com:9200/index \
--username=elastic \
--password=your_password

Performance Tips

  1. Increase Concurrency: Use --concurrency flag to increase parallel operations
  2. Optimize Scroll Size: Adjust --scrollSize based on document size and available memory
  3. Use NDJSON Format: For large datasets, NDJSON format is more memory efficient
  4. Network Proximity: Run elasticdump close to your Elasticsearch clusters to reduce network latency

Error Handling

Elasticdump includes robust error handling:

  • Automatic retries for transient network errors
  • Detailed error messages for debugging
  • Graceful handling of malformed documents

Contributing

We welcome contributions! Please see CONTRIBUTING.md for details.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

Acknowledgments

About

Go CLI tool to transfer or backup elasticsearch data.

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages