operations

Operations define the actions performed during a test procedure. They are referenced from test procedure schedules.

Syntax

Operations can be defined inline in a schedule or in a top-level "operations" section:

{
  "operations": [
    {
      "name": "my-search",
      "operation-type": "search",
      "body": {
        "query": "*:*",
        "rows": 10
      }
    }
  ]
}

Built-in operation types

bulk-index

{
  "operation-type": "bulk-index",
  "bulk-size": 500,
  "collection": "my_collection"
}
Parameter Default Description
bulk-size 500 Number of documents per batch
collection (first collection in workload) Target collection
corpora (all corpora) Corpus name to index from
commit false If true, issue a hard commit to Solr after each batch

The search operation supports two styles.

JSON body style — passes a full Solr JSON Request API object:

{
  "operation-type": "search",
  "body": {
    "query": "*:*",
    "rows": 10,
    "fl": "id,title"
  },
  "collection": "my_collection"
}

Classic params style — individual Solr query parameters as top-level fields:

{
  "operation-type": "search",
  "q": "city:New York",
  "fl": "id,name",
  "rows": 10,
  "fq": "type:restaurant",
  "sort": "score desc",
  "request-params": {
    "defType": "edismax"
  },
  "collection": "my_collection"
}
Parameter Default Description
body (none) Full Solr JSON query body (JSON Request API format). Takes precedence over classic params if both are present
q *:* Query string (classic params style)
fl (none) Field list to return
rows (none) Number of documents to return
fq (none) Filter query
sort (none) Sort order
request-params {} Additional Solr query parameters appended to the request
collection (first collection in workload) Target collection

commit

{ "operation-type": "commit" }

Issues a hard commit to Solr. Also registered as refresh.

Parameter Default Description
collection (first collection in workload) Target collection
soft-commit false If true, issues a soft commit instead of a hard commit

optimize

{ "operation-type": "optimize", "max-segments": 1 }

Issues a force-merge (optimize) to reduce the segment count to max-segments (default: 1).

wait-for-merges

{ "operation-type": "wait-for-merges" }

Polls the Solr node metrics API until no active merge operations remain across any core, or the timeout is reached.

Parameter Default Description
collection (first collection in workload) Target collection
retry-wait-period 2.0 Seconds between polling attempts
max-wait-seconds 3600 Maximum seconds to wait before giving up
{
  "operation-type": "paginated-search",
  "q": "my query",
  "rows": 100,
  "sort": "id asc"
}

Executes a cursor-paginated Solr search using Solr’s cursorMark deep pagination API. Fetches all result pages and returns the total document count. Also registered as scroll-search.

Parameter Default Description
collection (first collection in workload) Target collection
q *:* Query string
rows 100 Page size (documents per request)
sort id asc Sort order — must include a uniqueKey field for cursor pagination to work
fl (none) Field list to return
fq (none) Filter query
request-params {} Additional Solr query parameters

create-collection

{
  "operation-type": "create-collection",
  "collection": "my_collection",
  "configset-path": "configsets/my_schema",
  "num-shards": 1,
  "replication-factor": 1
}
Parameter Default Description
collection (required) Collection name
configset (collection name) Configset name to use; defaults to the collection name
configset-path (none) Path to local configset directory (relative to workload dir)
num-shards 1 Number of shards
replication-factor 1 Number of NRT replicas per shard
tlog-replicas 0 Number of TLOG replicas per shard
pull-replicas 0 Number of pull replicas per shard
delete-configset-on-error true Delete uploaded configset if collection creation fails

delete-collection

{
  "operation-type": "delete-collection",
  "collection": "my_collection"
}
Parameter Default Description
collection (required) Collection name to delete
configset (collection name) Configset name to delete alongside the collection
delete-configset true If true, also deletes the associated configset
ignore-missing true If true, silently succeeds if the collection does not exist

raw-request

{
  "operation-type": "raw-request",
  "path": "/api/collections/my_collection/config",
  "method": "POST",
  "body": {
    "set-property": {
      "updateHandler.autoSoftCommit.maxTime": "5000"
    }
  }
}

Executes an arbitrary HTTP request against the Solr Admin API (/api/... V2 endpoints).

Parameter Default Description
path (required) API path, e.g. /api/collections/my_coll/config
method GET HTTP method: GET, POST, DELETE
body (none) Request body (JSON object)
headers {} Additional HTTP headers

sleep

{ "operation-type": "sleep", "duration": 5 }

Pauses the schedule for the specified number of seconds. Useful between tasks that need a settling period (for example, after a commit before running queries).

Parameter Default Description
duration (required) Seconds to sleep

composite

{
  "operation-type": "composite",
  "operations": [
    { "operation-type": "bulk-index", "bulk-size": 500 },
    { "operation-type": "commit" }
  ]
}

Groups multiple operations into a single logical unit. Operations within the composite execute sequentially; the composite completes when all child operations finish. Useful for measuring end-to-end latency of a multi-step sequence.

Parameter Default Description
operations (required) Array of operation definitions to execute in sequence

retry wrapper

Any operation can be wrapped with retry logic by adding retry parameters directly to the operation definition:

{
  "operation-type": "bulk-index",
  "bulk-size": 500,
  "retries": 3,
  "retry-wait-period": 0.5,
  "retry-on-timeout": true,
  "retry-on-error": true
}
Parameter Default Description
retries 0 Number of times to retry on failure
retry-until-success false If true, retry indefinitely until the operation succeeds
retry-wait-period 0.5 Seconds to wait between retry attempts
retry-on-timeout true Retry when a timeout error occurs
retry-on-error false Retry when any other error occurs

Backup operations

The following backup-related operation types are registered but not yet implemented in this release: create-backup, restore-backup, create-backup-repository, delete-backup-repository, wait-for-backup-create. Use raw-request to call the Solr Backup V2 API directly.