Skip to content

Configuration Reference

AOSC settings are cluster-level dynamic settings. Change them with PUT /_cluster/settings.

Migration Defaults

SettingDefaultRangeType
aosc.defaults.convergence_threshold5000 to 1000000int
aosc.defaults.max_convergence_rounds10001 to 100000int
aosc.defaults.transient_target_settings{"index.number_of_replicas":"0","index.refresh_interval":"-1"}JSON object with index. keysstring
aosc.defaults.remove_source_write_block_on_successfalseboolean

Liveness and Target Readiness

SettingDefaultRangeType
aosc.liveness.check_interval30s>=5sTimeValue
aosc.liveness.timeout300s>=10sTimeValue
aosc.target.ready_timeout4h>=1mTimeValue

Cross-Shard Backfill Concurrency

SettingDefaultRangeType
aosc.backfill.max_concurrent_per_node20 to 1000int

0 pauses new backfill permits. Reducing the value does not revoke permits already held; the count drains as workers finish.

Controller Type

SettingDefaultAllowed values
aosc.backfill.controller.typeadaptive_batchfixed, adaptive_batch, adaptive
aosc.replay.controller.typeadaptive_batchfixed, adaptive_batch

adaptive is supported only for backfill. Replay rejects adaptive controller type.

Fixed Controller Settings

SettingDefaultRangeType
aosc.backfill.read.page_size10001 to 50000int
aosc.backfill.controller.batch.size5001 to 50000int
aosc.backfill.controller.concurrency11 to 32int
aosc.replay.controller.batch.size5001 to 50000int

Shared Batch Limits

SettingDefaultRangeType
aosc.backfill.controller.batch.max_bytes100MB1MB to 512MBByteSizeValue
aosc.replay.controller.batch.max_bytes100MB1MB to 512MBByteSizeValue

Adaptive Batch Settings

SettingDefaultRangeType
aosc.backfill.controller.batch.min_bytes512KB1KB to 100MBByteSizeValue
aosc.backfill.controller.batch.max_docs5001 to 50000int
aosc.backfill.controller.batch.start_bytes_per_doc10KB256B to 1MBByteSizeValue
aosc.backfill.controller.aimd.increase_threshold31 to 100int
aosc.backfill.controller.aimd.increase_ratio0.200.01 to 1.0double
aosc.backfill.controller.aimd.min_step_bytes256KB1KB to 100MBByteSizeValue
aosc.backfill.controller.aimd.cooldown_ticks20 to 100int
aosc.backfill.controller.aimd.trial_revert_threshold0.100.0 to 1.0double
aosc.replay.controller.batch.min_bytes512KB1KB to 100MBByteSizeValue
aosc.replay.controller.batch.max_docs5001 to 50000int
aosc.replay.controller.batch.start_bytes_per_doc10KB256B to 1MBByteSizeValue
aosc.replay.controller.aimd.increase_threshold31 to 100int
aosc.replay.controller.aimd.increase_ratio0.200.01 to 1.0double
aosc.replay.controller.aimd.min_step_bytes256KB1KB to 100MBByteSizeValue
aosc.replay.controller.aimd.cooldown_ticks20 to 100int
aosc.replay.controller.aimd.trial_revert_threshold0.100.0 to 1.0double

Adaptive Backfill Concurrency Settings

These apply when aosc.backfill.controller.type=adaptive.

SettingDefaultRangeType
aosc.backfill.controller.concurrency.max81 to 32int
aosc.backfill.controller.concurrency.probe_interval51 to 100int
aosc.backfill.controller.concurrency.gradient_threshold1.51.0 to 10.0double

Overload Protection

SettingDefaultRangeType
aosc.overload.max_consecutive_failures501 to 10000int
aosc.backfill.controller.overload.base_pause2000ms100ms to 600000mslong
aosc.backfill.controller.overload.max_pause120000ms1000ms to 600000mslong
aosc.replay.controller.overload.base_pause2000ms100ms to 600000mslong
aosc.replay.controller.overload.max_pause120000ms1000ms to 600000mslong

Per-Migration Options

Pass these in the start request under options:

FieldDefaultValidation
convergence_threshold_per_shardcluster default0 to 1000000
max_convergence_rounds_per_shardcluster default1 to 100000
doc_count_tolerance0>=0
validation_queryunsetValid query DSL on both source and target
accept_data_loss_if_custom_routing_is_usedfalseboolean
transient_target_settingscluster defaultkeys must start with index.
target_ready_timeout_secondscluster defaultpositive enough to satisfy cluster setting range
remove_source_write_block_on_successcluster default, currently falseboolean

Opinionated Configuration Sets

For production clusters with live search traffic where minimizing CPU overhead matters more than migration speed, run one backfill worker per node:

bash
curl -X PUT 'http://localhost:9200/_cluster/settings' \
  -H 'Content-Type: application/json' \
  -d '{
    "persistent": {
      "aosc.backfill.controller.batch.max_docs": "500",
      "aosc.backfill.controller.batch.size": "500",
      "aosc.backfill.read.page_size": "1000",
      "aosc.backfill.controller.type": "adaptive_batch",
      "aosc.replay.controller.batch.max_docs": "500",
      "aosc.replay.controller.batch.size": "500",
      "aosc.replay.controller.type": "adaptive_batch",
      "aosc.defaults.convergence_threshold": "500",
      "aosc.backfill.max_concurrent_per_node": "1"
    }
  }'

For write-only clusters or offline clusters where migration throughput is the priority, use a higher-throughput profile:

bash
curl -X PUT 'http://localhost:9200/_cluster/settings' \
  -H 'Content-Type: application/json' \
  -d '{
    "persistent": {
      "aosc.backfill.controller.batch.max_docs": "5000",
      "aosc.backfill.controller.batch.size": "5000",
      "aosc.backfill.read.page_size": "5000",
      "aosc.backfill.controller.type": "adaptive",
      "aosc.replay.controller.batch.max_docs": "5000",
      "aosc.replay.controller.batch.size": "5000",
      "aosc.replay.controller.type": "adaptive_batch",
      "aosc.defaults.convergence_threshold": "5000",
      "aosc.backfill.max_concurrent_per_node": "10"
    }
  }'

Example

bash
curl -X PUT 'http://localhost:9200/_cluster/settings' \
  -H 'Content-Type: application/json' \
  -d '{
    "transient": {
      "aosc.backfill.max_concurrent_per_node": 1,
      "aosc.backfill.controller.batch.max_bytes": "50MB"
    }
  }'

Read current values with:

bash
curl -s 'http://localhost:9200/_cluster/settings?include_defaults=true' | jq '.defaults.aosc'

Released under the Apache 2.0 License.