Files
landing_page/qdrant-landing/content/documentation/guides/administration.md
T
037a574e61 [v1.16] Document properly strict mode (#1989)
* Document properly strict mode

* add snippet to turn off the strict mode on unindexed filtering

* snippets to disable strict mode

* restructure

* snippets for max_payload_index_count

* sigh

* snippets for max_query_limit

* snippets for max_timeout

* snippets for filter_max_conditions

* snippets for upsert_max_batchsize

* snippets for max_collection_vector_size_bytes

* snippets for rate limiting

* snippets for max_points_count

* snippets for unindexed_filtering_update

* snippets for max_collection_vector_size_bytes

* snippets for condition_max_size

* Update qdrant-landing/content/documentation/guides/administration.md

Co-authored-by: Abdon Pijpelink <abdon.pijpelink@qdrant.com>

* Update qdrant-landing/content/documentation/guides/administration.md

Co-authored-by: Abdon Pijpelink <abdon.pijpelink@qdrant.com>

* Update qdrant-landing/content/documentation/guides/administration.md

Co-authored-by: Abdon Pijpelink <abdon.pijpelink@qdrant.com>

* Update qdrant-landing/content/documentation/guides/administration.md

Co-authored-by: Abdon Pijpelink <abdon.pijpelink@qdrant.com>

* Update qdrant-landing/content/documentation/guides/administration.md

Co-authored-by: Abdon Pijpelink <abdon.pijpelink@qdrant.com>

* Update qdrant-landing/content/documentation/guides/administration.md

Co-authored-by: Abdon Pijpelink <abdon.pijpelink@qdrant.com>

* Update qdrant-landing/content/documentation/guides/administration.md

Co-authored-by: Abdon Pijpelink <abdon.pijpelink@qdrant.com>

* Update qdrant-landing/content/documentation/guides/administration.md

Co-authored-by: Abdon Pijpelink <abdon.pijpelink@qdrant.com>

* Update qdrant-landing/content/documentation/guides/administration.md

* Update qdrant-landing/content/documentation/guides/administration.md

---------

Co-authored-by: Tim Visée <tim@visee.me>
Co-authored-by: Abdon Pijpelink <abdon.pijpelink@qdrant.com>
2025-11-17 14:48:55 +01:00

167 lines
6.9 KiB
Markdown

---
title: Administration
weight: 10
aliases:
- ../administration
---
# Administration
Qdrant exposes administration tools which enable to modify at runtime the behavior of a qdrant instance without changing its configuration manually.
## Locking
A locking API enables users to restrict the possible operations on a qdrant process.
It is important to mention that:
- The configuration is not persistent therefore it is necessary to lock again following a restart.
- Locking applies to a single node only. It is necessary to call lock on all the desired nodes in a distributed deployment setup.
Lock request sample:
```http
POST /locks
{
"error_message": "write is forbidden",
"write": true
}
```
Write flags enables/disables write lock.
If the write lock is set to true, qdrant doesn't allow creating new collections or adding new data to the existing storage.
However, deletion operations or updates are not forbidden under the write lock.
This feature enables administrators to prevent a qdrant process from using more disk space while permitting users to search and delete unnecessary data.
You can optionally provide the error message that should be used for error responses to users.
## Recovery mode
*Available as of v1.2.0*
Recovery mode can help in situations where Qdrant fails to start repeatedly.
When starting in recovery mode, Qdrant only loads collection metadata to prevent
going out of memory. This allows you to resolve out of memory situations, for
example, by deleting a collection. After resolving Qdrant can be restarted
normally to continue operation.
In recovery mode, collection operations are limited to
[deleting](/documentation/concepts/collections/#delete-collection) a
collection. That is because only collection metadata is loaded during recovery.
To enable recovery mode with the Qdrant Docker image you must set the
environment variable `QDRANT_ALLOW_RECOVERY_MODE=true`. The container will try
to start normally first, and restarts in recovery mode if initialisation fails
due to an out of memory error. This behavior is disabled by default.
If using a Qdrant binary, recovery mode can be enabled by setting a recovery
message in an environment variable, such as
`QDRANT__STORAGE__RECOVERY_MODE="My recovery message"`.
## Strict mode
*Available as of v1.13.0*
Strict mode is a feature to restrict certain type of operations on a collection in order to protect the Qdrant cluster.
The goal is to prevent inefficient usage patterns that could overload the system.
Strict mode ensures a more predictable and responsive service when you do not have control over the queries that are being executed.
Upon crossing a limit, the server will return a client side error with the information about the limit that was crossed.
The `strict_mode_config` can be enabled when [creating](#create-a-collection) a new collection, see [schema definitions](https://api.qdrant.tech/api-reference/collections/create-collection#request.body.strict_mode_config) for all the available `strict_mode_config` parameters.
As part of the config, the `enabled` field act as a toggle to enable or disable the strict mode dynamically.
It is possible to raise the default limits and/or disable strict mode entirely. Though, in order to ensure a stable cluster we strongly recommend to keep strict mode enabled using its default configuration. For disabling strict mode on an existing collection use:
{{< code-snippet path="/documentation/headless/snippets/strict-mode/disable/" >}}
### Disable retrieving via non indexed payload
Setting `unindexed_filtering_retrieve` to false prevents retrieving points by filtering on a non indexed payload key which can be very slow.
{{< code-snippet path="/documentation/headless/snippets/strict-mode/unindexed-filtering-retrieve/" >}}
Or turn it off later on an existing collection through the [collection update](#update-collection-parameters) API.
{{< code-snippet path="/documentation/headless/snippets/strict-mode/unindexed-filtering-retrieve-off/" >}}
### Disable updating via non indexed payload
Setting `unindexed_filtering_update` to false prevents updating points by filtering on a non indexed payload key which can be very slow.
{{< code-snippet path="/documentation/headless/snippets/strict-mode/unindexed-filtering-update/" >}}
### Maximum number of payload index count
Setting `max_payload_index_count` caps the maximum number of payload index that can exist on a collection.
{{< code-snippet path="/documentation/headless/snippets/strict-mode/max-payload-index-count/" >}}
### Maximum query `limit` parameter
Retrieving large result set is expensive.
Setting `max_query_limit` caps the maximum number of points that can be retrieved in a single query.
{{< code-snippet path="/documentation/headless/snippets/strict-mode/max-query-limit/" >}}
### Maximum `timeout` parameter
Long running operations are often symptomatic of a deeper issue.
Setting `max_timeout` caps the maximum value in seconds for the `timeout` parameter in all API operations.
{{< code-snippet path="/documentation/headless/snippets/strict-mode/max-timeout/" >}}
### Maximum size of a filtering condition
Large filtering conditions are expensive to evaluate.
Setting `condition_max_size` caps the maximum number of element a filtering condition can have.
e.g. the number of elements in `MatchAny`
{{< code-snippet path="/documentation/headless/snippets/strict-mode/condition-max-size/" >}}
### Maximum number of conditions in a filter
A large number of filtering conditions are expensive to evaluate.
Setting `filter_max_conditions` caps the maximum number of conditions filters can have.
{{< code-snippet path="/documentation/headless/snippets/strict-mode/filter-max-conditions/" >}}
### Maximum batch size when inserting vectors
Sending very large batch upserts can create internal congestion.
Setting `upsert_max_batchsize` caps the maximum size in bytes of a batch during vector upserts.
{{< code-snippet path="/documentation/headless/snippets/strict-mode/upsert-max-batchsize/" >}}
### Maximum collection storage size
It is possible to set the maximum size of a collection in terms of vectors and/or payload storage size.
Setting `max_collection_vector_size_bytes` and/or `max_collection_payload_size_bytes` caps the maximum byte size of a collection.
{{< code-snippet path="/documentation/headless/snippets/strict-mode/max-collection-storage-size-bytes/" >}}
### Maximum points count
Setting `max_points_count` caps the maximum number of points for a collection.
{{< code-snippet path="/documentation/headless/snippets/strict-mode/max-points-count/" >}}
### Rate limiting
An extremely high rate of incoming requests can have a negative impact on the latency.
Setting `read_rate_limit` and/or `write_rate_limit` to cap the maximum number of operations per minute per replica.
When exceeding the maximum number of operations, the client will receive an HTTP 429 error code with a suggested delay before retrying.
{{< code-snippet path="/documentation/headless/snippets/strict-mode/rate-limiting/" >}}