WeaviateEx.API.Backup (WeaviateEx v0.7.4)

View Source

Backup and restore operations for Weaviate.

Provides complete backup management:

  • Create backups to filesystem, S3, GCS, or Azure
  • Restore backups from any supported backend
  • Check backup/restore status
  • List and cancel backups
  • Wait for operations to complete

Creating a Backup

# Simple backup to filesystem
{:ok, status} = Backup.create(client, "my-backup", :filesystem)

# Backup specific collections to S3
{:ok, status} = Backup.create(client, "my-backup", :s3,
  include_collections: ["Article", "Author"],
  wait_for_completion: true
)

# Backup with configuration
{:ok, status} = Backup.create(client, "my-backup", :filesystem,
  config: Config.create(cpu_percentage: 50, compression: :best_compression)
)

Restoring a Backup

# Simple restore
{:ok, status} = Backup.restore(client, "my-backup", :filesystem)

# Restore with wait
{:ok, status} = Backup.restore(client, "my-backup", :s3,
  wait_for_completion: true
)

Checking Status

{:ok, status} = Backup.get_create_status(client, "my-backup", :filesystem)
{:ok, status} = Backup.get_restore_status(client, "my-backup", :s3)

Listing and Canceling

{:ok, backups} = Backup.list(client, :filesystem)
:ok = Backup.cancel(client, "my-backup", :filesystem)

Summary

Functions

Build request body for create operation.

Build request body for restore operation.

Cancel an in-progress backup.

Get the status of a backup creation.

Get the status of a backup restoration.

List all backups for a storage backend.

Functions

build_create_body(backup_id, opts)

@spec build_create_body(
  String.t(),
  keyword()
) :: map()

Build request body for create operation.

Examples

body = Backup.build_create_body("backup-123", include_collections: ["Article"])

build_restore_body(opts)

@spec build_restore_body(keyword()) :: map()

Build request body for restore operation.

Examples

body = Backup.build_restore_body(include_collections: ["Article"])
body = Backup.build_restore_body(roles_restore: :all, users_restore: :none)

cancel(client, backup_id, backend, opts \\ [])

@spec cancel(
  WeaviateEx.Client.t(),
  String.t(),
  WeaviateEx.Backup.Storage.t(),
  keyword()
) ::
  :ok | {:error, WeaviateEx.Error.t()}

Cancel an in-progress backup.

Options

  • :location - Dynamic backup location configuration (Location struct)

Examples

:ok = Backup.cancel(client, "my-backup", :filesystem)

# Cancel with dynamic location
:ok = Backup.cancel(client, "my-backup", :s3,
  location: Location.s3("my-bucket", "/backups", region: "us-west-2"))

create(client, backup_id, backend, opts \\ [])

Create a new backup.

The backend can be either an atom (:filesystem, :s3, :gcs, :azure) or a WeaviateEx.Backup.Location struct for dynamic configuration.

Options

  • :include_collections - List of collections to include (default: all)
  • :exclude_collections - List of collections to exclude
  • :wait_for_completion - Wait for backup to complete (default: false)
  • :config - Backup configuration (see WeaviateEx.Backup.Config)
  • :poll_interval - Status poll interval in ms (default: 1000)
  • :timeout - Maximum wait time in ms (default: 300000)

Examples

{:ok, status} = Backup.create(client, "daily-backup", :filesystem)

# Using dynamic location
{:ok, status} = Backup.create(client, "daily-backup",
  Location.s3("my-bucket", "/backups", region: "us-west-2"),
  wait_for_completion: true
)

{:ok, status} = Backup.create(client, "daily-backup", :s3,
  include_collections: ["Article"],
  wait_for_completion: true,
  config: Config.create(compression: :best_speed)
)

get_create_status(client, backup_id, backend)

Get the status of a backup creation.

Examples

{:ok, status} = Backup.get_create_status(client, "my-backup", :filesystem)
if Status.completed?(status.status) do
  IO.puts("Backup complete!")
end

get_restore_status(client, backup_id, backend)

Get the status of a backup restoration.

Examples

{:ok, status} = Backup.get_restore_status(client, "my-backup", :filesystem)

list(client, backend, opts \\ [])

List all backups for a storage backend.

Options

  • :sort_by_starting_time_asc - Sort backups by start time ascending (default: false)

Examples

{:ok, backups} = Backup.list(client, :filesystem)
Enum.each(backups, fn backup ->
  IO.puts("#{backup.id}: #{backup.status}")
end)

# Sort by start time ascending
{:ok, backups} = Backup.list(client, :s3, sort_by_starting_time_asc: true)

restore(client, backup_id, backend, opts \\ [])

Restore a backup.

The backend can be either an atom (:filesystem, :s3, :gcs, :azure) or a WeaviateEx.Backup.Location struct for dynamic configuration.

Options

  • :include_collections - List of collections to restore (default: all)
  • :exclude_collections - List of collections to exclude
  • :wait_for_completion - Wait for restore to complete (default: false)
  • :config - Restore configuration (see WeaviateEx.Backup.Config)
  • :poll_interval - Status poll interval in ms (default: 1000)
  • :timeout - Maximum wait time in ms (default: 300000)
  • :roles_restore - RBAC roles restore option: :all, :none, or list of role names
  • :users_restore - RBAC users restore option: :all, :none, or list of user IDs
  • :overwrite_alias - Whether to overwrite existing aliases (default: false)

Examples

{:ok, status} = Backup.restore(client, "daily-backup", :filesystem)

# Using dynamic location
{:ok, status} = Backup.restore(client, "daily-backup",
  Location.s3("my-bucket", "/backups", region: "eu-west-1"))

{:ok, status} = Backup.restore(client, "daily-backup", :s3,
  include_collections: ["Article"],
  wait_for_completion: true
)

# With RBAC options
{:ok, status} = Backup.restore(client, "daily-backup", :filesystem,
  roles_restore: :all,
  users_restore: ["admin@example.com"],
  overwrite_alias: true
)

wait_for_completion(client, backup_id, backend, operation, opts \\ [])

Wait for a backup operation to complete.

Polls the status endpoint until the operation completes or times out.

Options

  • :poll_interval - How often to check status (default: 1000ms)
  • :timeout - Maximum wait time (default: 300000ms)

Examples

{:ok, status} = Backup.wait_for_completion(client, "my-backup", :filesystem, :create)