# Qdrant Scroll: вывести записи по числовому полю

Источник: https://modelium.tech/zhurnal/qdrant-scroll-order-by/

Параметр order_by в Qdrant Scroll упорядочивает точки по полю дополнительной записи (payload). Для числового поля нужен индекс с поддержкой диапазона; direction: desc показывает большие значения первыми. Ниже — команды для отдельной учебной коллекции на своём сервере, а не результат запуска Qdrant редакцией. При такой сортировке обычная постраничная выдача по ID отключается.

**Технический уровень.** Нужен свой Qdrant v1.19.x и терминал Linux/macOS с `curl`. Это не домашний рецепт установки AI-модели. Действия сверены с документацией 19 октября 2026 года; редакция не запускала Qdrant. Числа в примере — заданные нами данные, не измерение производительности. Команды обращаются только к `127.0.0.1`; сервер с API-ключом потребует отдельной авторизации. [s2](#src-s2) [s5](#src-s5)

## Когда нужен порядок по полю?

В коллекции заметок вы хотите увидеть записи с наибольшим числовым значением `seq` первыми. **Точка** в Qdrant — запись с ID, вектором и дополнительными полями (*payload*). Обычный [Scroll](/zhurnal/qdrant-scroll-vse-tochki/) перечисляет точки по ID, а `order_by` меняет порядок на значение поля. Это не поиск ближайших по смыслу документов и не проверка прав доступа. [s1](#src-s1) [s2](#src-s2)

Для сортировки по `seq` предварительно создайте индекс `integer`: он поддерживает условия диапазона, которые нужны этой операции. Используйте учебное поле с целыми числами; индекс занимает дополнительные ресурсы. При `order_by` ответ не содержит обычного `next_page_offset`, так что не переносите в этот пример постраничный обход по ID. [s1](#src-s1) [s3](#src-s3)

## Как получить две последние учебные записи?

Если Qdrant ещё не установлен, начните с [локальной установки](/zhurnal/qdrant-lokalno/). Выберите **свободное** имя `demo_order_20261019` только для учебного набора; если оно занято, остановитесь и выберите другое имя во всех командах. Не запускайте создание/загрузку на рабочей коллекции. Создайте коллекцию с искусственными двухчисловыми векторами: `curl -fsS -X PUT 'http://127.0.0.1:6333/collections/demo_order_20261019' -H 'Content-Type: application/json' -d '{"vectors":{"size":2,"distance":"Cosine"}}'`. Ожидайте `status: ok` и `result: true`; размерность 2 не рекомендована для настоящей модели. [s5](#src-s5)

Создайте числовой индекс: `curl -fsS -X PUT 'http://127.0.0.1:6333/collections/demo_order_20261019/index?wait=true' -H 'Content-Type: application/json' -d '{"field_name":"seq","field_schema":"integer"}'`. Дождитесь `status: ok` и `result.status: completed`. [s3](#src-s3) [s4](#src-s4)

Запишите три точки в **ту же учебную** коллекцию: `curl -fsS -X PUT 'http://127.0.0.1:6333/collections/demo_order_20261019/points?wait=true' -H 'Content-Type: application/json' -d '{"points":[{"id":1,"vector":[1,0],"payload":{"seq":10}},{"id":2,"vector":[0,1],"payload":{"seq":30}},{"id":3,"vector":[1,1],"payload":{"seq":20}}]}'`. Ожидайте `result.status: completed`; повторная запись того же ID может заменить точку. [s6](#src-s6)

Теперь запросите две записи с большим `seq`: `curl -fsS -X POST 'http://127.0.0.1:6333/collections/demo_order_20261019/points/scroll' -H 'Content-Type: application/json' -d '{"limit":2,"order_by":{"key":"seq","direction":"desc"},"with_vector":false}'`. Для **неизменённого** набора ожидаемый порядок `result.points` — ID `2` (`seq:30`), затем ID `3` (`seq:20`). Это вывод из наших входных значений, а не ответ реально запущенного Qdrant. Если порядок иной, проверьте поле, индекс, имя коллекции и то, что точки не менялись параллельно. [s1](#src-s1) [s2](#src-s2)

## Что учесть на своей коллекции?

Если нужен полный обход, перейдите к [Scroll без сортировки](/zhurnal/qdrant-scroll-vse-tochki/): сортированный ответ не выдаёт `next_page_offset`. У нескольких точек с одинаковым `seq` порядок между ними не следует считать стабильным; для страниц Qdrant описывает отдельную схему `start_from` вместе с исключением уже увиденных ID, но этот расширенный маршрут здесь не нужен. Не используйте `order_by` как контроль доступа: ограничения на чтение должны быть настроены отдельно. Мы не измеряли время запроса на реальном сервере. [s1](#src-s1)

## Источники

1. [Qdrant — Order Points by Payload Key и ограничение пагинации](https://qdrant.tech/documentation/manage-data/points/) — получено 2026-10-19
2. [Qdrant API v1.19.x — Scroll points](https://api.qdrant.tech/v-1-19-x/api-reference/points/scroll-points.md) — получено 2026-10-19
3. [Qdrant — Payload indexing, integer и Range](https://qdrant.tech/documentation/manage-data/indexing/) — получено 2026-10-19
4. [Qdrant API v1.19.x — Create payload index](https://api.qdrant.tech/v-1-19-x/api-reference/indexes/create-field-index.md) — получено 2026-10-19
5. [Qdrant API v1.19.x — Create collection](https://api.qdrant.tech/v-1-19-x/api-reference/collections/create-collection.md) — получено 2026-10-19
6. [Qdrant API v1.19.x — Upsert points](https://api.qdrant.tech/v-1-19-x/api-reference/points/upsert-points.md) — получено 2026-10-19
