/
-
GET/ -
Обращение к корню экземпляра CouchDB возвращает метаинформацию об экземпляре. Ответ представляет собой структуру JSON, содержащую информацию о сервере, включая приветственное сообщение, версию сервера и список
features. Элементыfeaturesмогут меняться в зависимости от включённых параметров конфигурации (например,quickjs, если он задан как движок JavaScript по умолчанию) или установленных и настроенных дополнительных компонентов (например, приложения для текстовой индексацииnouveau).- Заголовки запроса:
-
-
Accept –
application/json
text/plain
-
- Заголовки ответа:
-
-
application/json
text/plain; charset=utf-8
-
- Коды состояния:
-
200 ОК – Запрос успешно выполнен
401 Не авторизован – Неавторизованный запрос к защищённому API
403 Доступ запрещён – Недостаточно прав / Слишком много запросов с недействительными учётными данными
Запрос:
GET / HTTP/1.1 Accept: application/json Host: localhost:5984
Ответ:
HTTP/1.1 200 OK Content-Length: 247 Content-Type: application/json Date: Mon, 21 Oct 2024 21:53:51 GMT Server: CouchDB/3.4.2 (Erlang OTP/25) { "couchdb": "Welcome", "features": [ "access-ready", "partitioned", "pluggable-storage-engines", "reshard", "scheduler" ], "git_sha": "6e5ad2a5c", "uuid": "9ddf59457dbb8772316cf06fc5e5a2e4", "vendor": { "name": "The Apache Software Foundation" }, "version": "3.4.2" }
/_active_tasks
Изменено в версии 2.1.0: Из-за особенностей работы планировщика репликации задания непрерывной репликации могли периодически останавливаться, а затем запускаться снова. Пока они не выполняются, они не отображаются в конечной точке _active_tasks
Изменено в версии 3.3: Для заданий репликации добавлены поля “bulk_get_attempts” и “bulk_get_docs”.
-
GET/_active_tasks -
Список выполняющихся задач, включающий тип задачи, имя, состояние и идентификатор процесса. Результат представляет собой массив JSON текущих выполняющихся задач, каждая из которых описана отдельным объектом. Набор полей объекта ответа может различаться в зависимости от типа операции.
- Заголовки запроса:
-
-
Accept –
application/json
text/plain
-
- Заголовки ответа:
-
-
application/json
text/plain; charset=utf-8
-
- Объект JSON ответа:
-
changes_done (number) – Обработанные изменения
database (string) – Исходная база данных
pid (string) – Идентификатор процесса
progress (number) – Текущий процент выполнения
started_on (number) – Время начала задачи в формате метки времени Unix
status (string) – Сообщение о состоянии задачи
task (string) – Имя задачи
total_changes (number) – Общее число изменений для обработки
type (string) – Тип операции
updated_on (number) – Метка времени Unix последнего обновления операции
- Коды состояния:
-
200 ОК – Запрос успешно выполнен
401 Не авторизован – Требуются права администратора сервера CouchDB
403 Доступ запрещён – Недостаточно прав / Слишком много запросов с недействительными учётными данными
Запрос:
GET /_active_tasks HTTP/1.1 Accept: application/json Host: localhost:5984
Ответ:
HTTP/1.1 200 OK Cache-Control: must-revalidate Content-Length: 1690 Content-Type: application/json Date: Sat, 10 Aug 2013 06:37:31 GMT Server: CouchDB (Erlang/OTP) [ { "changes_done": 64438, "database": "mailbox", "pid": "<0.12986.1>", "progress": 84, "started_on": 1376116576, "total_changes": 76215, "type": "database_compaction", "updated_on": 1376116619 }, { "changes_done": 14443, "database": "mailbox", "design_document": "c9753817b3ba7c674d92361f24f59b9f", "pid": "<0.10461.3>", "progress": 18, "started_on": 1376116621, "total_changes": 76215, "type": "indexer", "updated_on": 1376116650 }, { "changes_done": 5454, "database": "mailbox", "design_document": "_design/meta", "pid": "<0.6838.4>", "progress": 7, "started_on": 1376116632, "total_changes": 76215, "type": "indexer", "updated_on": 1376116651 }, { "checkpointed_source_seq": 68585, "continuous": false, "doc_id": null, "doc_write_failures": 0, "bulk_get_attempts": 4524, "bulk_get_docs": 4524, "docs_read": 4524, "docs_written": 4524, "missing_revisions_found": 4524, "pid": "<0.1538.5>", "progress": 44, "replication_id": "9bc1727d74d49d9e157e260bb8bbd1d5", "revisions_checked": 4524, "source": "mailbox", "source_seq": 154419, "started_on": 1376116644, "target": "http://mailsrv:5984/mailbox", "type": "replication", "updated_on": 1376116651 } ]
/_all_dbs
-
GET/_all_dbs -
Возвращает список всех баз данных в экземпляре CouchDB.
- Заголовки запроса:
-
-
Accept –
application/json
text/plain
-
- Параметры запроса:
-
descending (boolean) – Возвращать базы данных в порядке убывания по ключу. Значение по умолчанию —
false.endkey (json) – Прекратить возвращать базы данных при достижении указанного ключа.
end_key (json) – Псевдоним параметра
endkeyinclusive_end (boolean) – Указывает, следует ли включать указанный конечный ключ в результат. Значение по умолчанию —
true.limit (number) – Ограничить число возвращаемых баз данных указанным значением.
skip (number) – Пропустить указанное число баз данных перед началом возврата результатов. Значение по умолчанию —
0.startkey (json) – Возвращать базы данных, начиная с указанного ключа.
start_key (json) – Псевдоним для
startkey.
- Заголовки ответа:
-
-
application/json
text/plain; charset=utf-8
-
- Коды состояния:
-
200 ОК – Запрос успешно выполнен
401 Не авторизован – Неавторизованный запрос к защищённому API
403 Доступ запрещён – Недостаточно прав / Слишком много запросов с недействительными учётными данными
Запрос:
GET /_all_dbs HTTP/1.1 Accept: application/json Host: localhost:5984
Ответ:
HTTP/1.1 200 OK Cache-Control: must-revalidate Content-Length: 52 Content-Type: application/json Date: Sat, 10 Aug 2013 06:57:48 GMT Server: CouchDB (Erlang/OTP) [ "_users", "contacts", "docs", "invoices", "locations" ]
/_dbs_info
Добавлено в версии 3.2.
-
GET/_dbs_info -
Возвращает список сведений обо всех базах данных в экземпляре CouchDB.
- Заголовки запроса:
-
-
Accept –
application/json
text/plain
-
- Параметры запроса:
-
descending (boolean) – Возвращать сведения о базах данных в порядке убывания по ключу. Значение по умолчанию —
false.endkey (json) – Прекратить возвращать сведения о базах данных при достижении указанного ключа.
end_key (json) – Псевдоним параметра
endkeylimit (number) – Ограничить число возвращаемых сведений о базах данных указанным значением.
skip (number) – Пропустить указанное число баз данных перед началом возврата результатов. Значение по умолчанию —
0.startkey (json) – Возвращать сведения о базах данных, начиная с указанного ключа.
start_key (json) – Псевдоним для
startkey.
- Заголовки ответа:
-
-
application/json
text/plain; charset=utf-8
-
- Коды состояния:
-
200 ОК – Запрос успешно выполнен
401 Не авторизован – Неавторизованный запрос к защищённому API
403 Доступ запрещён – Недостаточно прав / Слишком много запросов с недействительными учётными данными
Запрос:
GET /_dbs_info HTTP/1.1 Accept: application/json Host: localhost:5984
Ответ:
HTTP/1.1 200 OK Cache-Control: must-revalidate Content-Type: application/json Date: Thu, 18 Nov 2021 14:37:35 GMT Server: CouchDB (Erlang OTP/23) [ { "key": "animals", "info": { "db_name": "animals", "update_seq": "52232", "sizes": { "file": 1178613587, "external": 1713103872, "active": 1162451555 }, "purge_seq": 0, "doc_del_count": 0, "doc_count": 52224, "disk_format_version": 6, "compact_running": false, "cluster": { "q": 8, "n": 3, "w": 2, "r": 2 }, "instance_start_time": "0" } } ]
Добавлено в версии 2.2.
-
POST/_dbs_info -
Возвращает сведения об указанном списке баз данных в экземпляре CouchDB. Это позволяет запросить сведения о нескольких базах данных в одном запросе вместо нескольких запросов
GET /{db}.- Заголовки запроса:
-
-
Accept –
application/json
-
- Заголовки ответа:
-
-
application/json
-
- Объект JSON запроса:
-
keys (array) – Массив имён баз данных для запроса
- Коды состояния:
-
200 ОК – Запрос успешно выполнен
400 Неверный запрос – В запросе отсутствуют ключи или превышено допустимое число ключей
401 Не авторизован – Неавторизованный запрос к защищённому API
403 Доступ запрещён – Недостаточно прав / Слишком много запросов с недействительными учётными данными
Запрос:
POST /_dbs_info HTTP/1.1 Accept: application/json Host: localhost:5984 Content-Type: application/json { "keys": [ "animals", "plants" ] }Ответ:
HTTP/1.1 200 OK Cache-Control: must-revalidate Content-Type: application/json Date: Sat, 20 Dec 2017 06:57:48 GMT Server: CouchDB (Erlang/OTP) [ { "key": "animals", "info": { "db_name": "animals", "update_seq": "52232", "sizes": { "file": 1178613587, "external": 1713103872, "active": 1162451555 }, "purge_seq": 0, "doc_del_count": 0, "doc_count": 52224, "disk_format_version": 6, "compact_running": false, "cluster": { "q": 8, "n": 3, "w": 2, "r": 2 }, "instance_start_time": "0" } }, { "key": "plants", "info": { "db_name": "plants", "update_seq": "303", "sizes": { "file": 3872387, "external": 2339, "active": 67475 }, "purge_seq": 0, "doc_del_count": 0, "doc_count": 11, "disk_format_version": 6, "compact_running": false, "cluster": { "q": 8, "n": 3, "w": 2, "r": 2 }, "instance_start_time": "0" } } ]
Примечание
Допустимое число баз данных в списке можно ограничить, изменив параметр max_db_number_for_dbs_info_req в файле конфигурации. По умолчанию лимит равен 100. Увеличить лимит можно, однако это создаёт нагрузку на сервер, поэтому рекомендуется отправлять больше запросов по 100 баз данных, а не несколько запросов по 1000 и более баз данных за раз.
/_cluster_setup
Добавлено в версии 2.0.
-
GET/_cluster_setup -
Возвращает состояние узла или кластера в соответствии с мастером настройки кластера.
- Заголовки запроса:
-
-
Accept –
application/json
text/plain
-
- Параметры запроса:
-
ensure_dbs_exist (array) – Список системных баз данных, наличие которых нужно обеспечить на узле/в кластере. По умолчанию —
["_users","_replicator"].
- Заголовки ответа:
-
-
application/json
text/plain; charset=utf-8
-
- Объект JSON ответа:
-
state (string) – Текущее
stateузла и/или кластера (см. ниже)
- Коды состояния:
-
200 ОК – Запрос успешно выполнен
401 Не авторизован – Неавторизованный запрос к защищённому API
403 Доступ запрещён – Недостаточно прав / Слишком много запросов с недействительными учётными данными
Возвращаемое значение
stateуказывает текущее состояние узла или кластера и может быть одним из следующих:cluster_disabled: Текущий узел полностью не настроен.single_node_disabled: Текущий узел настроен как одиночный (автономный) узел ([cluster] n=1), но для него либо не задан администратор уровня сервера, либо не созданы стандартные системные базы данных. Если указан параметр запросаensure_dbs_exist, предоставленный список баз данных заменяет список стандартных системных баз данных по умолчанию.single_node_enabled: Текущий узел настроен как одиночный (автономный) узел, для него задан администратор уровня сервера и созданensure_dbs_existсписок баз данных (явно указанный или заданный по умолчанию).cluster_enabled: Текущий узел имеет[cluster] n> 1, не привязан к127.0.0.1, и для него задан администратор уровня сервера. Однако полный набор стандартных системных баз данных ещё не создан. Если указан параметр запросаensure_dbs_exist, предоставленный список баз данных заменяет список стандартных системных баз данных по умолчанию.cluster_finished: Текущий узел имеет[cluster] n> 1, не привязан к127.0.0.1, для него задан администратор уровня сервера и созданensure_dbs_existсписок баз данных (явно указанный или заданный по умолчанию).
Запрос:
GET /_cluster_setup HTTP/1.1 Accept: application/json Host: localhost:5984
Ответ:
HTTP/1.1 200 OK X-CouchDB-Body-Time: 0 X-Couch-Request-ID: 5c058bdd37 Server: CouchDB/2.1.0-7f17678 (Erlang OTP/17) Date: Sun, 30 Jul 2017 06:33:18 GMT Content-Type: application/json Content-Length: 29 Cache-Control: must-revalidate {"state":"cluster_enabled"}
-
POST/_cluster_setup -
Настроить узел как одиночный (автономный) узел, как часть кластера или завершить настройку кластера.
- Заголовки запроса:
-
-
Accept –
application/json
text/plain
Content-Type – application/json
-
- Объект JSON запроса:
-
-
action (string) –
enable_single_node: Настроить текущий узел как отдельный автономный сервер CouchDB.
enable_cluster: Настроить локальный или удалённый узел как узел кластера, подготовив его к присоединению к новому кластеру CouchDB.
add_node: Добавить указанный удалённый узел в список узлов этого кластера, присоединив его к кластеру.
finish_cluster: Завершить настройку кластера, создав стандартные системные базы данных.
bind_address (string) – IP-адрес, на котором будет ожидать подключения текущий узел. Специальное значение
0.0.0.0можно указать для привязки ко всем интерфейсам хоста. (только enable_cluster и enable_single_node)username (string) – Имя пользователя администратора уровня сервера, которого нужно создать. (только enable_cluster и enable_single_node) либо имя пользователя администратора удалённого сервера (add_node)
password (string) – Пароль администратора уровня сервера, которого нужно создать. (только enable_cluster и enable_single_node) либо имя пользователя администратора удалённого сервера (add_node)
port (number) – TCP-порт, на котором будет ожидать подключения этот узел (только enable_cluster и enable_single_node), либо TCP-порт, на котором будет ожидать подключения удалённый узел (только add_node).
node_count (number) – Общее число узлов, которые будут включены в кластер, включая этот узел. Используется для определения значения
nкластера; максимум — 3. (только enable_cluster)remote_node (string) – IP-адрес удалённого узла, который нужно настроить и включить в список узлов этого кластера. (только enable_cluster)
remote_current_user (string) – Имя пользователя администратора уровня сервера, авторизованного на удалённом узле. (только enable_cluster)
remote_current_password (string) – Пароль администратора уровня сервера, авторизованного на удалённом узле. (только enable_cluster)
host (string) – IP-адрес удалённого узла, который нужно добавить в кластер. (только add_node)
ensure_dbs_exist (array) – Список системных баз данных, наличие которых нужно обеспечить на узле/в кластере. По умолчанию —
["_users","_replicator"].
-
- Коды состояния:
-
200 ОК – Запрос успешно выполнен
401 Не авторизован – Неавторизованный запрос к защищённому API
403 Доступ запрещён – Недостаточно прав / Слишком много запросов с недействительными учётными данными
Пример запроса/ответа здесь не приведён. Пример работающего запроса см. в разделе API настройки кластера.
/_db_updates
Добавлено в версии 1.4.
-
GET/_db_updates -
Возвращает список всех событий баз данных в экземпляре CouchDB. Для использования этой конечной точки требуется наличие базы данных
_global_changes.- Заголовки запроса:
-
-
Accept –
application/json
text/plain
-
- Параметры запроса:
-
-
feed (string) –
normal: Возвращает все исторические изменения БД, затем закрывает соединение. По умолчанию.
longpoll: Закрывает соединение после первого события.
continuous: Отправляет строку JSON для каждого события. Сохраняет сокет открытым до
timeout.eventsource: Аналогично
continuous, но события передаются в формате EventSource.
timeout (number) – Число миллисекунд до закрытия соединения CouchDB. Значение по умолчанию —
60000.heartbeat (number) – Интервал в миллисекундах, по истечении которого в результатах отправляется пустая строка. Применимо только к лентам
longpoll,continuousиeventsource. Переопределяет любой тайм-аут, чтобы лента оставалась активной бесконечно. Значение по умолчанию —60000. Можно указатьtrue, чтобы использовать значение по умолчанию.since (string) – Возвращать только обновления после указанного идентификатора последовательности. Если указанный идентификатор последовательности не существует, возвращаются все изменения. Можно указать строку
now, чтобы начать отображение только новых обновлений.
-
- Заголовки ответа:
-
-
application/json
text/plain; charset=utf-8
Transfer-Encoding –
chunked
-
- Объект JSON ответа:
-
results (array) – Массив событий баз данных. В режимах
longpollиcontinuousвесь ответ содержит данные массиваresults.last_seq (string) – Идентификатор последней последовательности в отчёте.
- Коды состояния:
-
200 ОК – Запрос успешно выполнен
401 Не авторизован – Требуются права администратора сервера CouchDB
403 Доступ запрещён – Недостаточно прав / Слишком много запросов с недействительными учётными данными
Поле
resultsобновлений базы данных:- Параметры JSON:
-
db_name (string) – Имя базы данных.
type (string) – Событие базы данных относится к одному из типов:
created,updated,deleted.seq (json) – Последовательность обновления события.
Запрос:
GET /_db_updates HTTP/1.1 Accept: application/json Host: localhost:5984
Ответ:
HTTP/1.1 200 OK Cache-Control: must-revalidate Content-Type: application/json Date: Sat, 18 Mar 2017 19:01:35 GMT Etag: "C1KU98Y6H0LGM7EQQYL6VSL07" Server: CouchDB/2.0.0 (Erlang OTP/17) Transfer-Encoding: chunked X-Couch-Request-ID: ad87efc7ff X-CouchDB-Body-Time: 0 { "results":[ {"db_name":"mailbox","type":"created","seq":"1-g1AAAAFReJzLYWBg4MhgTmHgzcvPy09JdcjLz8gvLskBCjMlMiTJ____PyuDOZExFyjAnmJhkWaeaIquGIf2JAUgmWQPMiGRAZcaB5CaePxqEkBq6vGqyWMBkgwNQAqobD4h"}, {"db_name":"mailbox","type":"deleted","seq":"2-g1AAAAFReJzLYWBg4MhgTmHgzcvPy09JdcjLz8gvLskBCjMlMiTJ____PyuDOZEpFyjAnmJhkWaeaIquGIf2JAUgmWQPMiGRAZcaB5CaePxqEkBq6vGqyWMBkgwNQAqobD4hdQsg6vYTUncAou4-IXUPIOpA7ssCAIFHa60"} ], "last_seq": "2-g1AAAAFReJzLYWBg4MhgTmHgzcvPy09JdcjLz8gvLskBCjMlMiTJ____PyuDOZEpFyjAnmJhkWaeaIquGIf2JAUgmWQPMiGRAZcaB5CaePxqEkBq6vGqyWMBkgwNQAqobD4hdQsg6vYTUncAou4-IXUPIOpA7ssCAIFHa60" }
/_membership
Добавлено в версии 2.0.
-
GET/_membership -
Отображает узлы, входящие в кластер, в виде
cluster_nodes. Полеall_nodesотображает все узлы, о которых известно этому узлу, включая входящие в кластер. Конечная точка полезна при настройке кластера; см. Управление узлами- Заголовки запроса:
-
-
Accept –
application/json
text/plain
-
- Заголовки ответа:
-
-
application/json
text/plain; charset=utf-8
-
- Коды состояния:
-
200 OK – Запрос успешно выполнен
401 Не авторизован – Неавторизованный запрос к защищённому API
403 Доступ запрещён – Недостаточно разрешений / Слишком много запросов с недействительными учётными данными
Запрос:
GET /_membership HTTP/1.1 Accept: application/json Host: localhost:5984
Ответ:
HTTP/1.1 200 OK Cache-Control: must-revalidate Content-Type: application/json Date: Sat, 11 Jul 2015 07:02:41 GMT Server: CouchDB (Erlang/OTP) Content-Length: 142 { "all_nodes": [ "node1@127.0.0.1", "node2@127.0.0.1", "node3@127.0.0.1" ], "cluster_nodes": [ "node1@127.0.0.1", "node2@127.0.0.1", "node3@127.0.0.1" ] }
/_replicate
Изменено в версии 3.3: В объект ответа с историей репликации добавлены поля “bulk_get_attempts” и “bulk_get_docs”.
-
POST/_replicate -
Создаёт запрос на репликацию, настраивает или останавливает операцию репликации.
- Заголовки запроса:
-
-
Accept –
application/json
text/plain
Content-Type – application/json
-
- Поля JSON-запроса:
-
cancel (boolean) – Отменяет репликацию
continuous (boolean) – Настраивает непрерывную репликацию
create_target (boolean) – Создаёт целевую базу данных. На целевом сервере требуются права администратора.
create_target_params (object) – Объект с параметрами, которые будут использованы при создании целевой базы данных. Может содержать стандартные параметры
qиn.winning_revs_only (boolean) – Реплицировать только выигравшие ревизии.
doc_ids (array) – Массив идентификаторов документов для синхронизации.
doc_ids,filterиselectorявляются взаимоисключающими.filter (string) – Имя функции фильтра.
doc_ids,filterиselectorявляются взаимоисключающими.selector (json) – Селектор для фильтрации документов при синхронизации. Работает так же, как объекты селектора в документах репликации.
doc_ids,filterиselectorявляются взаимоисключающими.source_proxy (string) – Адрес прокси-сервера, через который должна выполняться репликация из источника (протокол может быть «http», «https» или «socks5»)
target_proxy (string) – Адрес прокси-сервера, через который должна выполняться репликация в целевую базу (протокол может быть «http», «https» или «socks5»)
source (string/object) – Полный URL исходной базы данных или объект, содержащий полный URL исходной базы данных с дополнительными параметрами, например заголовками. Например: ‘http://example.com/source_db_name’ или {“url”:”url in here”, “headers”: {“header1”:”value1”, …}} . Для обратной совместимости CouchDB 3.x автоматически преобразует простые имена баз данных, добавляя адрес и порт, на котором прослушивает запросы CouchDB, чтобы сформировать полный URL. Такое поведение устарело в версии 3.x и будет удалено в CouchDB 4.0.
target (string/object) – Полный URL целевой базы данных или объект, содержащий полный URL целевой базы данных с дополнительными параметрами, например заголовками. Например: ‘http://example.com/target_db_name’ или {“url”:”url in here”, “headers”: {“header1”:”value1”, …}} . Для обратной совместимости CouchDB 3.x автоматически преобразует простые имена баз данных, добавляя адрес и порт, на котором прослушивает запросы CouchDB, чтобы сформировать полный URL. Такое поведение устарело в версии 3.x и будет удалено в CouchDB 4.0.
- Заголовки ответа:
-
-
application/json
text/plain; charset=utf-8
-
- Поля JSON-ответа:
-
history (array) – История репликации (см. ниже)
ok (boolean) – Состояние репликации
replication_id_version (number) – Версия протокола репликации
session_id (string) – Уникальный идентификатор сеанса
source_last_seq (number) – Последний номер последовательности, считанный из исходной базы данных
- Коды состояния:
-
200 OK – Запрос на репликацию успешно выполнен
202 Принято – Запрос на непрерывную репликацию принят
400 Неверный запрос – Недопустимые данные JSON
401 Не авторизован – Требуются права администратора сервера CouchDB
403 Доступ запрещён – Недостаточно разрешений / Слишком много запросов с недействительными учётными данными
404 Не найдено – Исходная или целевая база данных не найдена либо предпринята попытка отменить неизвестную задачу репликации
500 Внутренняя ошибка сервера – Недопустимая спецификация JSON
Спецификация запроса на репликацию задаётся содержимым JSON-запроса. JSON должен представлять собой объект с полями, определяющими источник, целевую базу и другие параметры.
История репликации — это массив объектов со следующей структурой:
- Параметры JSON:
-
doc_write_failures (number) – Количество ошибок записи документов
docs_read (number) – Количество прочитанных документов
docs_written (number) – Количество документов, записанных в целевую базу
bulk_get_attempts (number) – Общее количество попыток получить ревизии документов с помощью
_bulk_get.bulk_get_docs (number) – Общее количество успешно полученных документов с помощью
_bulk_get.end_last_seq (number) – Последний номер последовательности в потоке изменений
end_time (string) – Дата и время завершения операции репликации в формате RFC 2822
missing_checked (number) – Количество проверенных отсутствующих документов
missing_found (number) – Количество найденных отсутствующих документов
recorded_seq (number) – Последний записанный номер последовательности
session_id (string) – Идентификатор сеанса этой операции репликации
start_last_seq (number) – Первый номер последовательности в потоке изменений
start_time (string) – Дата и время начала операции репликации в формате RFC 2822
Примечание
Начиная с CouchDB 2.0.0 для параметров репликации source и target требуются полные URL.
Запрос
POST /_replicate HTTP/1.1
Accept: application/json
Content-Length: 80
Content-Type: application/json
Host: localhost:5984
{
"source": "http://adm:pass@127.0.0.1:5984/db_a",
"target": "http://adm:pass@127.0.0.1:5984/db_b"
} Ответ
HTTP/1.1 200 OK
Cache-Control: must-revalidate
Content-Length: 692
Content-Type: application/json
Date: Sun, 11 Aug 2013 20:38:50 GMT
Server: CouchDB (Erlang/OTP)
{
"history": [
{
"doc_write_failures": 0,
"docs_read": 10,
"bulk_get_attempts": 10,
"bulk_get_docs": 10,
"docs_written": 10,
"end_last_seq": 28,
"end_time": "Sun, 11 Aug 2013 20:38:50 GMT",
"missing_checked": 10,
"missing_found": 10,
"recorded_seq": 28,
"session_id": "142a35854a08e205c47174d91b1f9628",
"start_last_seq": 1,
"start_time": "Sun, 11 Aug 2013 20:38:50 GMT"
},
{
"doc_write_failures": 0,
"docs_read": 1,
"bulk_get_attempts": 1,
"bulk_get_docs": 1,
"docs_written": 1,
"end_last_seq": 1,
"end_time": "Sat, 10 Aug 2013 15:41:54 GMT",
"missing_checked": 1,
"missing_found": 1,
"recorded_seq": 1,
"session_id": "6314f35c51de3ac408af79d6ee0c1a09",
"start_last_seq": 0,
"start_time": "Sat, 10 Aug 2013 15:41:54 GMT"
}
],
"ok": true,
"replication_id_version": 3,
"session_id": "142a35854a08e205c47174d91b1f9628",
"source_last_seq": 28
} Операция репликации
Цель репликации — по завершении процесса обеспечить наличие всех активных документов исходной базы данных в целевой базе данных, а также удалить в целевой базе (если они там есть) все документы, удалённые в исходной базе данных.
Репликацию можно описать как отправку или получение данных:
-
Репликация с получением — это репликация, при которой
sourceявляется удалённым экземпляром CouchDB, аtarget— локальной базой данных.Репликация с получением — наиболее подходящий вариант, если исходная база данных имеет постоянный IP-адрес, а целевая (локальная) база данных может получать динамически назначаемый IP-адрес (например, через DHCP). Это особенно важно при репликации с центрального сервера на мобильное или другое устройство.
Репликация с отправкой — это репликация, при которой
sourceявляется локальной базой данных, аtarget— удалённой базой данных.
Указание исходной и целевой баз данных
Если вы хотите выполнить репликацию в любой из следующих ситуаций, необходимо указать URL базы данных CouchDB:
Репликация с удалённой базой данных (например, с другим экземпляром CouchDB на том же или другом узле)
Репликация с базой данных, требующей аутентификации
Например, чтобы запросить репликацию между базой данных, локальной для экземпляра CouchDB, которому отправляется запрос, и удалённой базой данных, можно использовать следующий запрос:
POST http://couchdb:5984/_replicate HTTP/1.1
Content-Type: application/json
Accept: application/json
{
"source" : "recipes",
"target" : "http://coucdb-remote:5984/recipes",
} Во всех случаях запрашиваемые базы данных, указанные в source и target, должны существовать. Если это не так, в объекте JSON будет возвращена ошибка:
{
"error" : "db_not_found"
"reason" : "could not open http://couchdb-remote:5984/ol1ka/",
} Можно создать целевую базу данных (если учётные данные пользователя это позволяют), добавив поле create_target в объект запроса:
POST http://couchdb:5984/_replicate HTTP/1.1
Content-Type: application/json
Accept: application/json
{
"create_target" : true
"source" : "recipes",
"target" : "http://couchdb-remote:5984/recipes",
} Поле create_target не приводит к удалению данных. Если база данных уже существует, репликация выполняется как обычно.
Однократная репликация
Можно запросить репликацию базы данных, чтобы синхронизировать две базы данных. По умолчанию процесс репликации выполняется один раз и синхронизирует две базы данных. Например, чтобы выполнить однократную синхронизацию двух баз данных, можно передать поля source и target в содержимом JSON-запроса.
POST http://couchdb:5984/_replicate HTTP/1.1
Accept: application/json
Content-Type: application/json
{
"source" : "recipes",
"target" : "recipes-snapshot",
} В приведённом выше примере будут синхронизированы базы данных recipes и recipes-snapshot. Эти базы данных локальны для экземпляра CouchDB, которому был отправлен запрос. В ответе будет содержаться структура JSON с результатом (успешным или неудачным) процесса синхронизации и его статистикой:
{
"ok" : true,
"history" : [
{
"docs_read" : 1000,
"bulk_get_attempts": 1000,
"bulk_get_docs": 1000,
"session_id" : "52c2370f5027043d286daca4de247db0",
"recorded_seq" : 1000,
"end_last_seq" : 1000,
"doc_write_failures" : 0,
"start_time" : "Thu, 28 Oct 2010 10:24:13 GMT",
"start_last_seq" : 0,
"end_time" : "Thu, 28 Oct 2010 10:24:14 GMT",
"missing_checked" : 0,
"docs_written" : 1000,
"missing_found" : 1000
}
],
"session_id" : "52c2370f5027043d286daca4de247db0",
"source_last_seq" : 1000
} Непрерывная репликация
Синхронизация базы данных описанными выше способами происходит только один раз — в момент отправки запроса на репликацию. Чтобы целевая база данных постоянно реплицировалась из исходной, необходимо установить для поля continuous объекта JSON в запросе значение true.
При непрерывной репликации изменения в исходной базе данных постоянно реплицируются в целевую базу, пока вы явно не запросите прекращение репликации.
POST http://couchdb:5984/_replicate HTTP/1.1
Accept: application/json
Content-Type: application/json
{
"continuous" : true
"source" : "recipes",
"target" : "http://couchdb-remote:5984/recipes",
} Изменения будут реплицироваться между двумя базами данных, пока между экземплярами доступно сетевое соединение.
Примечание
Чтобы поддерживать синхронизацию двух баз данных друг с другом, необходимо настроить репликацию в обоих направлениях: реплицировать из source в target, а затем отдельно — из target в source.
Отмена непрерывной репликации
Можно отменить непрерывную репликацию, добавив поле cancel в объект JSON-запроса и установив его значение в true. Обратите внимание, что структура запроса должна быть идентична исходной, чтобы запрос на отмену был выполнен. Например, если вы запросили непрерывную репликацию, запрос на отмену также должен содержать поле continuous.
Например, следующий запрос на репликацию:
POST http://couchdb:5984/_replicate HTTP/1.1
Content-Type: application/json
Accept: application/json
{
"source" : "recipes",
"target" : "http://couchdb-remote:5984/recipes",
"create_target" : true,
"continuous" : true
} необходимо отменить с помощью запроса:
POST http://couchdb:5984/_replicate HTTP/1.1
Accept: application/json
Content-Type: application/json
{
"cancel" : true,
"continuous" : true
"create_target" : true,
"source" : "recipes",
"target" : "http://couchdb-remote:5984/recipes",
} Запрос на отмену несуществующей репликации приводит к ошибке 404.
/_scheduler/jobs
-
GET/_scheduler/jobs -
Список заданий репликации. Включает репликации, созданные через конечную точку /_replicate, а также созданные с помощью документов репликации. Не включает репликации, выполнение которых завершено, или репликации, запуск которых не удался из-за некорректных документов репликации. Описание каждого задания содержит информацию об источнике и целевой базе, идентификатор репликации, историю последних событий и некоторые другие сведения.
- Заголовки запроса:
-
-
Accept –
application/json
-
- Заголовки ответа:
-
-
application/json
-
- Параметры запроса:
-
limit (number) – Количество возвращаемых результатов
skip (number) – Количество результатов, пропускаемых с начала списка, отсортированного по идентификатору репликации
- Поля JSON-ответа:
-
offset (number) – Количество пропущенных результатов
total_rows (number) – Общее количество заданий репликации
id (string) – Идентификатор репликации.
database (string) – База данных документа репликации
doc_id (string) – Идентификатор документа репликации
history (list) – История событий с временными метками в виде списка объектов
pid (string) – Идентификатор процесса репликации
node (string) – Узел кластера, на котором выполняется задание
source (string) – Источник репликации
target (string) – Целевая база репликации
start_time (string) – Временная метка начала репликации
- Коды состояния:
-
200 OK – Запрос успешно выполнен
401 Не авторизован – Требуются права администратора сервера CouchDB
403 Доступ запрещён – Недостаточно разрешений / Слишком много запросов с недействительными учётными данными
Запрос:
GET /_scheduler/jobs HTTP/1.1 Accept: application/json Host: localhost:5984
Ответ:
HTTP/1.1 200 OK Cache-Control: must-revalidate Content-Length: 1690 Content-Type: application/json Date: Sat, 29 Apr 2017 05:05:16 GMT Server: CouchDB (Erlang/OTP) { "jobs": [ { "database": "_replicator", "doc_id": "cdyno-0000001-0000003", "history": [ { "timestamp": "2017-04-29T05:01:37Z", "type": "started" }, { "timestamp": "2017-04-29T05:01:37Z", "type": "added" } ], "id": "8f5b1bd0be6f9166ccfd36fc8be8fc22+continuous", "info": { "changes_pending": 0, "checkpointed_source_seq": "113-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYE01ygQLsZsYGqcamiZjKcRqRxwIkGRqA1H-oSbZgk1KMLCzTDE0wdWUBAF6HJIQ", "doc_write_failures": 0, "docs_read": 113, "docs_written": 113, "bulk_get_attempts": 113, "bulk_get_docs": 113, "missing_revisions_found": 113, "revisions_checked": 113, "source_seq": "113-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYE01ygQLsZsYGqcamiZjKcRqRxwIkGRqA1H-oSbZgk1KMLCzTDE0wdWUBAF6HJIQ", "through_seq": "113-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYE01ygQLsZsYGqcamiZjKcRqRxwIkGRqA1H-oSbZgk1KMLCzTDE0wdWUBAF6HJIQ" }, "node": "node1@127.0.0.1", "pid": "<0.1850.0>", "source": "http://myserver.com/foo", "start_time": "2017-04-29T05:01:37Z", "target": "http://adm:*****@localhost:15984/cdyno-0000003/", "user": null }, { "database": "_replicator", "doc_id": "cdyno-0000001-0000002", "history": [ { "timestamp": "2017-04-29T05:01:37Z", "type": "started" }, { "timestamp": "2017-04-29T05:01:37Z", "type": "added" } ], "id": "e327d79214831ca4c11550b4a453c9ba+continuous", "info": { "changes_pending": null, "checkpointed_source_seq": 0, "doc_write_failures": 0, "docs_read": 12, "docs_written": 12, "bulk_get_attempts": 12, "bulk_get_docs": 12, "missing_revisions_found": 12, "revisions_checked": 12, "source_seq": "12-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYE1lzgQLsBsZm5pZJJpjKcRqRxwIkGRqA1H-oSexgk4yMkhITjS0wdWUBADfEJBg", "through_seq": "12-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYE1lzgQLsBsZm5pZJJpjKcRqRxwIkGRqA1H-oSexgk4yMkhITjS0wdWUBADfEJBg" }, "node": "node2@127.0.0.1", "pid": "<0.1757.0>", "source": "http://myserver.com/foo", "start_time": "2017-04-29T05:01:37Z", "target": "http://adm:*****@localhost:15984/cdyno-0000002/", "user": null } ], "offset": 0, "total_rows": 2 }
/_scheduler/docs
Изменено в версии 2.1.0: Используйте эту конечную точку для отслеживания состояния репликаций на основе документов. Ранее для получения полной сводки состояния требовалось опрашивать и документы, и _active_tasks
Изменено в версии 3.0.0: В состояниях ошибки поле “info” было строкой, а стало объектом
Изменено в версии 3.3: В объект “info” добавлены поля “bulk_get_attempts” и “bulk_get_docs”.
-
GET/_scheduler/docs -
Список состояний документов репликации. Включает информацию обо всех документах, даже в состояниях
completedиfailed. Для каждого документа возвращаются его идентификатор, база данных, идентификатор репликации, источник и целевой объект, а также другая информация.- Заголовки запроса:
-
-
Accept –
application/json
-
- Заголовки ответа:
-
-
application/json
-
- Параметры запроса:
-
limit (number) – Количество возвращаемых результатов
skip (number) – Количество результатов, которые нужно пропустить с начала списка, упорядоченного по идентификатору документа
- Объект JSON ответа:
-
offset (number) – Количество пропущенных результатов
total_rows (number) – Общее количество документов репликации.
id (string) – Идентификатор репликации или
null, если состояние —completedилиfailedstate (string) – Одно из следующих состояний (описания см. в разделе Состояния репликации):
initializing,running,completed,pending,crashing,error,faileddatabase (string) – База данных, из которой получен документ репликации
doc_id (string) – Идентификатор документа репликации
node (string) – Узел кластера, на котором выполняется задание
source (string) – Источник репликации
target (string) – Целевой объект репликации
start_time (string) – Временная метка начала репликации
last_updated (string) – Временная метка последнего обновления состояния
info (object) – Содержит дополнительные сведения о состоянии. При ошибках это будет объект с полем
"error"и строковым значением. Для состояний успешного выполнения см. ниже.error_count (number) – Количество последовательных ошибок. Показывает, сколько раз подряд происходил сбой этой репликации. Повторные попытки репликации выполняются с экспоненциально увеличивающейся задержкой, зависящей от этого значения. После успешного выполнения репликации счётчик сбрасывается на 0. Это значение можно использовать, чтобы понять, почему конкретная репликация не продвигается.
- Коды состояния:
-
200 OK – Запрос успешно выполнен
401 Unauthorized – Требуются права администратора сервера CouchDB
403 Forbidden – Недостаточно прав / Слишком много запросов с недействительными учётными данными
Поле
infoдокумента планировщика:- Параметры JSON:
-
revisions_checked (number) – Количество проверенных ревизий с момента начала этой репликации.
missing_revisions_found (number) – Количество ревизий, найденных в источнике, но отсутствующих в целевом объекте.
docs_read (number) – Количество документов, прочитанных из источника.
docs_written (number) – Количество документов, записанных в целевой объект.
bulk_get_attempts (number) – Общее количество попыток получить ревизии документов с помощью
_bulk_get.bulk_get_docs (number) – Общее количество успешно полученных документов с помощью
_bulk_get.changes_pending (number) – Количество изменений, которые ещё не реплицированы.
doc_write_failures (number) – Количество документов, которые не удалось записать в целевой объект.
checkpointed_source_seq (object) – Идентификатор последовательности источника, который был успешно реплицирован последним.
Запрос:
GET /_scheduler/docs HTTP/1.1 Accept: application/json Host: localhost:5984
Ответ:
HTTP/1.1 200 OK Content-Type: application/json Date: Sat, 29 Apr 2017 05:10:08 GMT Server: Server: CouchDB (Erlang/OTP) Transfer-Encoding: chunked { "docs": [ { "database": "_replicator", "doc_id": "cdyno-0000001-0000002", "error_count": 0, "id": "e327d79214831ca4c11550b4a453c9ba+continuous", "info": { "changes_pending": 15, "checkpointed_source_seq": "60-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYEyVygQLsBsZm5pZJJpjKcRqRxwIkGRqA1H-oSSpgk4yMkhITjS0wdWUBAENCJEg", "doc_write_failures": 0, "docs_read": 67, "bulk_get_attempts": 67, "bulk_get_docs": 67, "docs_written": 67, "missing_revisions_found": 67, "revisions_checked": 67, "source_seq": "67-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYE2VygQLsBsZm5pZJJpjKcRqRxwIkGRqA1H-oSepgk4yMkhITjS0wdWUBAEVKJE8", "through_seq": "67-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYE2VygQLsBsZm5pZJJpjKcRqRxwIkGRqA1H-oSepgk4yMkhITjS0wdWUBAEVKJE8" }, "last_updated": "2017-04-29T05:01:37Z", "node": "node2@127.0.0.1", "source_proxy": null, "target_proxy": null, "source": "http://myserver.com/foo", "start_time": "2017-04-29T05:01:37Z", "state": "running", "target": "http://adm:*****@localhost:15984/cdyno-0000002/" }, { "database": "_replicator", "doc_id": "cdyno-0000001-0000003", "error_count": 0, "id": "8f5b1bd0be6f9166ccfd36fc8be8fc22+continuous", "info": { "changes_pending": null, "checkpointed_source_seq": 0, "doc_write_failures": 0, "bulk_get_attempts": 12, "bulk_get_docs": 12, "docs_read": 12, "docs_written": 12, "missing_revisions_found": 12, "revisions_checked": 12, "source_seq": "12-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYE1lzgQLsBsZm5pZJJpjKcRqRxwIkGRqA1H-oSexgk4yMkhITjS0wdWUBADfEJBg", "through_seq": "12-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYE1lzgQLsBsZm5pZJJpjKcRqRxwIkGRqA1H-oSexgk4yMkhITjS0wdWUBADfEJBg" }, "last_updated": "2017-04-29T05:01:37Z", "node": "node1@127.0.0.1", "source_proxy": null, "target_proxy": null, "source": "http://myserver.com/foo", "start_time": "2017-04-29T05:01:37Z", "state": "running", "target": "http://adm:*****@localhost:15984/cdyno-0000003/" } ], "offset": 0, "total_rows": 2 }
-
GET/_scheduler/docs/{replicator_db} -
Получить сведения о документах репликации из базы данных репликатора. База данных репликатора по умолчанию —
_replicator, но могут существовать и другие базы данных репликатора, если их имена заканчиваются суффиксом/_replicator.Примечание
Для удобства слеши (
/) в именах баз данных репликатора можно не экранировать. Поэтому/_scheduler/docs/other/_replicatorявляется допустимым и эквивалентно/_scheduler/docs/other%2f_replicator- Заголовки запроса:
-
-
Accept –
application/json
-
- Заголовки ответа:
-
-
application/json
-
- Параметры запроса:
-
limit (number) – Количество возвращаемых результатов
skip (number) – Количество результатов, которые нужно пропустить с начала списка, упорядоченного по идентификатору документа
- Объект JSON ответа:
-
offset (number) – Количество пропущенных результатов
total_rows (number) – Общее количество документов репликации.
id (string) – Идентификатор репликации или
null, если состояние —completedилиfailedstate (string) – Одно из следующих состояний (описания см. в разделе Состояния репликации):
initializing,running,completed,pending,crashing,error,faileddatabase (string) – База данных, из которой получен документ репликации
doc_id (string) – Идентификатор документа репликации
node (string) – Узел кластера, на котором выполняется задание
source (string) – Источник репликации
target (string) – Целевой объект репликации
start_time (string) – Временная метка начала репликации
last_update (string) – Временная метка последнего обновления состояния
info (object) – Содержит дополнительные сведения о состоянии. При ошибках это будет объект с полем
"error"и строковым значением. Для состояний успешного выполнения см. ниже.error_count (number) – Количество последовательных ошибок. Показывает, сколько раз подряд происходил сбой этой репликации. Повторные попытки репликации выполняются с экспоненциально увеличивающейся задержкой, зависящей от этого значения. После успешного выполнения репликации счётчик сбрасывается на 0. Это значение можно использовать, чтобы понять, почему конкретная репликация не продвигается.
- Коды состояния:
-
200 OK – Запрос успешно выполнен
401 Unauthorized – Требуются права администратора сервера CouchDB
403 Forbidden – Недостаточно прав / Слишком много запросов с недействительными учётными данными
Поле
infoдокумента планировщика:- Параметры JSON:
-
revisions_checked (number) – Количество проверенных ревизий с момента начала этой репликации.
missing_revisions_found (number) – Количество ревизий, найденных в источнике, но отсутствующих в целевом объекте.
docs_read (number) – Количество документов, прочитанных из источника.
docs_written (number) – Количество документов, записанных в целевой объект.
bulk_get_attempts (number) – Общее количество попыток получить ревизии документов с помощью
_bulk_get.bulk_get_docs (number) – Общее количество успешно полученных документов с помощью
_bulk_get.changes_pending (number) – Количество изменений, которые ещё не реплицированы.
doc_write_failures (number) – Количество документов, которые не удалось записать в целевой объект.
checkpointed_source_seq (object) – Идентификатор последовательности источника, который был успешно реплицирован последним.
Запрос:
GET /_scheduler/docs/other/_replicator HTTP/1.1 Accept: application/json Host: localhost:5984
Ответ:
HTTP/1.1 200 OK Content-Type: application/json Date: Sat, 29 Apr 2017 05:10:08 GMT Server: Server: CouchDB (Erlang/OTP) Transfer-Encoding: chunked { "docs": [ { "database": "other/_replicator", "doc_id": "cdyno-0000001-0000002", "error_count": 0, "id": "e327d79214831ca4c11550b4a453c9ba+continuous", "info": { "changes_pending": 0, "checkpointed_source_seq": "60-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYEyVygQLsBsZm5pZJJpjKcRqRxwIkGRqA1H-oSSpgk4yMkhITjS0wdWUBAENCJEg", "doc_write_failures": 0, "docs_read": 67, "bulk_get_attempts": 67, "bulk_get_docs": 67, "docs_written": 67, "missing_revisions_found": 67, "revisions_checked": 67, "source_seq": "67-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYE2VygQLsBsZm5pZJJpjKcRqRxwIkGRqA1H-oSepgk4yMkhITjS0wdWUBAEVKJE8", "through_seq": "67-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYE2VygQLsBsZm5pZJJpjKcRqRxwIkGRqA1H-oSepgk4yMkhITjS0wdWUBAEVKJE8" }, "last_updated": "2017-04-29T05:01:37Z", "node": "node2@127.0.0.1", "source_proxy": null, "target_proxy": null, "source": "http://myserver.com/foo", "start_time": "2017-04-29T05:01:37Z", "state": "running", "target": "http://adm:*****@localhost:15984/cdyno-0000002/" } ], "offset": 0, "total_rows": 1 }
-
GET/_scheduler/docs/{replicator_db}/{docid} -
Примечание
Для удобства слеши (
/) в именах баз данных репликатора можно не экранировать. Поэтому/_scheduler/docs/other/_replicatorявляется допустимым и эквивалентно/_scheduler/docs/other%2f_replicator- Заголовки запроса:
-
-
Accept –
application/json
-
- Заголовки ответа:
-
-
application/json
-
- Объект JSON ответа:
-
id (string) – Идентификатор репликации или
null, если состояние —completedилиfailedstate (string) – Одно из следующих состояний (описания см. в разделе Состояния репликации):
initializing,running,completed,pending,crashing,error,faileddatabase (string) – База данных, из которой получен документ репликации
doc_id (string) – Идентификатор документа репликации
node (string) – Узел кластера, на котором выполняется задание
source (string) – Источник репликации
target (string) – Целевой объект репликации
start_time (string) – Временная метка начала репликации
last_update (string) – Временная метка последнего обновления состояния
info (object) – Содержит дополнительные сведения о состоянии. При ошибках это будет объект с полем
"error"и строковым значением. Для состояний успешного выполнения см. ниже.error_count (number) – Количество последовательных ошибок. Показывает, сколько раз подряд происходил сбой этой репликации. Повторные попытки репликации выполняются с экспоненциально увеличивающейся задержкой, зависящей от этого значения. После успешного выполнения репликации счётчик сбрасывается на 0. Это значение можно использовать, чтобы понять, почему конкретная репликация не продвигается.
- Коды состояния:
-
200 OK – Запрос успешно выполнен
401 Unauthorized – Требуются права администратора сервера CouchDB
403 Forbidden – Недостаточно прав / Слишком много запросов с недействительными учётными данными
Поле
infoдокумента планировщика:- Параметры JSON:
-
revisions_checked (number) – Количество проверенных ревизий с момента начала этой репликации.
missing_revisions_found (number) – Количество ревизий, найденных в источнике, но отсутствующих в целевом объекте.
docs_read (number) – Количество документов, прочитанных из источника.
docs_written (number) – Количество документов, записанных в целевой объект.
bulk_get_attempts (number) – Общее количество попыток получить ревизии документов с помощью
_bulk_get.bulk_get_docs (number) – Общее количество успешно полученных документов с помощью
_bulk_get.changes_pending (number) – Количество изменений, которые ещё не реплицированы.
doc_write_failures (number) – Количество документов, которые не удалось записать в целевой объект.
-
checkpointed_source_seq (object) –
- Идентификатор последовательности источника, который был последним
-
успешно реплицирован.
Запрос:
GET /_scheduler/docs/other/_replicator/cdyno-0000001-0000002 HTTP/1.1 Accept: application/json Host: localhost:5984
Ответ:
HTTP/1.1 200 OK Content-Type: application/json Date: Sat, 29 Apr 2017 05:10:08 GMT Server: Server: CouchDB (Erlang/OTP) Transfer-Encoding: chunked { "database": "other/_replicator", "doc_id": "cdyno-0000001-0000002", "error_count": 0, "id": "e327d79214831ca4c11550b4a453c9ba+continuous", "info": { "changes_pending": 0, "checkpointed_source_seq": "60-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYEyVygQLsBsZm5pZJJpjKcRqRxwIkGRqA1H-oSSpgk4yMkhITjS0wdWUBAENCJEg", "doc_write_failures": 0, "docs_read": 67, "bulk_get_attempts": 67, "bulk_get_docs": 67, "docs_written": 67, "missing_revisions_found": 67, "revisions_checked": 67, "source_seq": "67-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYE2VygQLsBsZm5pZJJpjKcRqRxwIkGRqA1H-oSepgk4yMkhITjS0wdWUBAEVKJE8", "through_seq": "67-g1AAAACTeJzLYWBgYMpgTmHgz8tPSTV0MDQy1zMAQsMckEQiQ1L9____szKYE2VygQLsBsZm5pZJJpjKcRqRxwIkGRqA1H-oSepgk4yMkhITjS0wdWUBAEVKJE8" }, "last_updated": "2017-04-29T05:01:37Z", "node": "node2@127.0.0.1", "source_proxy": null, "target_proxy": null, "source": "http://myserver.com/foo", "start_time": "2017-04-29T05:01:37Z", "state": "running", "target": "http://adm:*****@localhost:15984/cdyno-0000002/" }
/_node/{node-name}
-
GET/_node/{node-name} -
Конечную точку
/_node/{node-name}можно использовать, чтобы узнать имя узла Erlang сервера, обрабатывающего запрос. Это особенно полезно при обращении к/_node/_localдля получения этой информации. Повторное получение этих сведений с конечной точки CouchDB может помочь определить, правильно ли запросы к кластеру CouchDB проходят через обратный балансировщик нагрузки.- Заголовки запроса:
-
-
Accept –
application/json
text/plain
-
- Заголовки ответа:
-
-
application/json
text/plain; charset=utf-8
-
- Коды состояния:
-
200 OK – Запрос успешно выполнен
401 Unauthorized – Неавторизованный запрос к защищённому API
403 Forbidden – Недостаточно прав / Слишком много запросов с недействительными учётными данными
Запрос:
GET /_node/_local HTTP/1.1 Accept: application/json Host: localhost:5984
Ответ:
HTTP/1.1 200 OK Cache-Control: must-revalidate Content-Length: 27 Content-Type: application/json Date: Tue, 28 Jan 2020 19:25:51 GMT Server: CouchDB (Erlang OTP) X-Couch-Request-ID: 5b8db6c677 X-CouchDB-Body-Time: 0 {"name":"node1@127.0.0.1"}
/_node/{node-name}/_stats
-
GET/_node/{node-name}/_stats -
Ресурс
_statsвозвращает объект JSON со статистикой работающего сервера. Объект состоит из разделов верхнего уровня, объединяющих статистические данные для различных записей; отдельную статистику легко определить, а её содержимое описано в явном виде.Статистика собирается внутри системы с настраиваемым интервалом. При мониторинге конечной точки
_statsнеобходимо опрашивать её с частотой как минимум вдвое выше, чем этот интервал, чтобы получать точные результаты. Например, если интервал равен 10 секундам, опрашивайте_statsне реже одного раза в 5 секунд.Строка
_localслужит псевдонимом локального имени узла, поэтому во всех URL статистики{node-name}можно заменить на_local, чтобы обращаться к статистике локального узла.- Заголовки запроса:
-
-
Accept –
application/json
text/plain
-
- Заголовки ответа:
-
-
application/json
text/plain; charset=utf-8
-
- Коды состояния:
-
200 OK – Запрос успешно выполнен
401 Unauthorized – Неавторизованный запрос к защищённому API
403 Forbidden – Недостаточно прав / Слишком много запросов с недействительными учётными данными
Запрос:
GET /_node/_local/_stats/couchdb/request_time HTTP/1.1 Accept: application/json Host: localhost:5984
Ответ:
HTTP/1.1 200 OK Cache-Control: must-revalidate Content-Length: 187 Content-Type: application/json Date: Sat, 10 Aug 2013 11:41:11 GMT Server: CouchDB (Erlang/OTP) { "value": { "min": 0, "max": 0, "arithmetic_mean": 0, "geometric_mean": 0, "harmonic_mean": 0, "median": 0, "variance": 0, "standard_deviation": 0, "skewness": 0, "kurtosis": 0, "percentile": [ [ 50, 0 ], [ 75, 0 ], [ 90, 0 ], [ 95, 0 ], [ 99, 0 ], [ 999, 0 ] ], "histogram": [ [ 0, 0 ] ], "n": 0 }, "type": "histogram", "desc": "length of a request inside CouchDB without MochiWeb" }
Поля содержат текущие, минимальные и максимальные значения, а также набор статистических средних и количественных показателей. Единицы измерения количественных показателей не определены, однако приведённые ниже описания позволяют их установить.
Статистика представлена по «группам» и разделена на следующие разделы верхнего уровня:
couch_log: подсистема ведения журналовcouch_replicator: планировщик репликации и подсистема репликацииcouchdb: основные операции с базой данных CouchDBfabric: операции, связанные с кластеромglobal_changes: глобальная лента измененийmem3: статистика, связанная с членством узловpread: исключения, связанные с файлами CouchDBrexi: статистика, связанная с внутренними вызовами RPC кластера
Тип статистики указан в поле type и может иметь одно из следующих значений:
counter: монотонно возрастающий счётчик, сбрасываемый при перезапускеhistogram: сгруппированный набор значений со значимыми интервалами. Ограничен текущим интервалом сбора.gauge: отдельное числовое значение, которое может увеличиваться и уменьшаться
Можно также получить отдельные статистические данные, указав в URL-пути раздел статистики и её идентификатор. Например, чтобы получить статистику request_time из раздела couchdb для целевого узла, можно использовать:
GET /_node/_local/_stats/couchdb/request_time HTTP/1.1
Возвращается полный объект статистики, как и при полном запросе, но содержащий только запрошенную отдельную статистику.
/_node/{node-name}/_prometheus
-
GET/_node/{node-name}/_prometheus -
Ресурс
_prometheusвозвращает ответ text/plain, объединяющий данные конечных точек /_node/{node-name}/_stats и /_node/{node-name}/_system. Формат определяется Prometheus. Версия формата — 2.0.- Коды состояния:
-
200 OK – Запрос успешно выполнен
401 Unauthorized – Неавторизованный запрос к защищённому API
403 Forbidden – Недостаточно прав / Слишком много запросов с недействительными учётными данными
Запрос:
GET /_node/_local/_prometheus HTTP/1.1 Accept: text/plain Host: localhost:5984
Ответ:
HTTP/1.1 200 OK Cache-Control: must-revalidate Content-Length: 187 Content-Type: text/plain; version=2.0 Date: Sat, 10 May 2020 11:41:11 GMT Server: CouchDB (Erlang/OTP) # TYPE couchdb_couch_log_requests_total counter couchdb_couch_log_requests_total{level="alert"} 0 couchdb_couch_log_requests_total{level="critical"} 0 couchdb_couch_log_requests_total{level="debug"} 0 couchdb_couch_log_requests_total{level="emergency"} 0 couchdb_couch_log_requests_total{level="error"} 0 couchdb_couch_log_requests_total{level="info"} 8 couchdb_couch_log_requests_total{level="notice"} 51 couchdb_couch_log_requests_total{level="warning"} 0 # TYPE couchdb_couch_replicator_changes_manager_deaths_total counter couchdb_couch_replicator_changes_manager_deaths_total 0 # TYPE couchdb_couch_replicator_changes_queue_deaths_total counter couchdb_couch_replicator_changes_queue_deaths_total 0 # TYPE couchdb_couch_replicator_changes_read_failures_total counter couchdb_couch_replicator_changes_read_failures_total 0 # TYPE couchdb_couch_replicator_changes_reader_deaths_total counter couchdb_couch_replicator_changes_reader_deaths_total 0 # TYPE couchdb_couch_replicator_checkpoints_failure_total counter couchdb_couch_replicator_checkpoints_failure_total 0 # TYPE couchdb_couch_replicator_checkpoints_total counter couchdb_couch_replicator_checkpoints_total 0 # TYPE couchdb_couch_replicator_connection_acquires_total counter couchdb_couch_replicator_connection_acquires_total 0 # TYPE couchdb_couch_replicator_connection_closes_total counter couchdb_couch_replicator_connection_closes_total 0 # TYPE couchdb_couch_replicator_connection_creates_total counter couchdb_couch_replicator_connection_creates_total 0 # TYPE couchdb_couch_replicator_connection_owner_crashes_total counter couchdb_couch_replicator_connection_owner_crashes_total 0 # TYPE couchdb_couch_replicator_connection_releases_total counter couchdb_couch_replicator_connection_releases_total 0 # TYPE couchdb_couch_replicator_connection_worker_crashes_total counter couchdb_couch_replicator_connection_worker_crashes_total 0 # TYPE couchdb_couch_replicator_db_scans_total counter couchdb_couch_replicator_db_scans_total 1 # TYPE couchdb_couch_replicator_docs_completed_state_updates_total counter couchdb_couch_replicator_docs_completed_state_updates_total 0 # TYPE couchdb_couch_replicator_docs_db_changes_total counter couchdb_couch_replicator_docs_db_changes_total 0 # TYPE couchdb_couch_replicator_docs_dbs_deleted_total counter couchdb_couch_replicator_docs_dbs_deleted_total 0 # TYPE couchdb_couch_replicator_docs_dbs_found_total counter couchdb_couch_replicator_docs_dbs_found_total 2 # TYPE couchdb_couch_replicator_docs_failed_state_updates_total counter couchdb_couch_replicator_docs_failed_state_updates_total 0 # TYPE couchdb_couch_replicator_failed_starts_total counter couchdb_couch_replicator_failed_starts_total 0 # TYPE couchdb_couch_replicator_jobs_adds_total counter couchdb_couch_replicator_jobs_adds_total 0 # TYPE couchdb_couch_replicator_jobs_crashed gauge couchdb_couch_replicator_jobs_crashed 0 # TYPE couchdb_couch_replicator_jobs_crashes_total counter couchdb_couch_replicator_jobs_crashes_total 0 # TYPE couchdb_couch_replicator_jobs_duplicate_adds_total counter couchdb_couch_replicator_jobs_duplicate_adds_total 0 # TYPE couchdb_couch_replicator_jobs_pending gauge couchdb_couch_replicator_jobs_pending 0 # TYPE couchdb_couch_replicator_jobs_removes_total counter couchdb_couch_replicator_jobs_removes_total 0 # TYPE couchdb_couch_replicator_jobs_running gauge couchdb_couch_replicator_jobs_running 0 # TYPE couchdb_couch_replicator_jobs_starts_total counter couchdb_couch_replicator_jobs_starts_total 0 # TYPE couchdb_couch_replicator_jobs_stops_total counter couchdb_couch_replicator_jobs_stops_total 0 # TYPE couchdb_couch_replicator_jobs_total gauge couchdb_couch_replicator_jobs_total 0 # TYPE couchdb_couch_replicator_requests_total counter couchdb_couch_replicator_requests_total 0 # TYPE couchdb_couch_replicator_responses_failure_total counter couchdb_couch_replicator_responses_failure_total 0 # TYPE couchdb_couch_replicator_responses_total counter couchdb_couch_replicator_responses_total 0 # TYPE couchdb_couch_replicator_stream_responses_failure_total counter couchdb_couch_replicator_stream_responses_failure_total 0 # TYPE couchdb_couch_replicator_stream_responses_total counter couchdb_couch_replicator_stream_responses_total 0 # TYPE couchdb_couch_replicator_worker_deaths_total counter couchdb_couch_replicator_worker_deaths_total 0 # TYPE couchdb_couch_replicator_workers_started_total counter couchdb_couch_replicator_workers_started_total 0 # TYPE couchdb_auth_cache_requests_total counter couchdb_auth_cache_requests_total 0 # TYPE couchdb_auth_cache_misses_total counter couchdb_auth_cache_misses_total 0 # TYPE couchdb_collect_results_time_seconds summary couchdb_collect_results_time_seconds{quantile="0.5"} 0.0 couchdb_collect_results_time_seconds{quantile="0.75"} 0.0 couchdb_collect_results_time_seconds{quantile="0.9"} 0.0 couchdb_collect_results_time_seconds{quantile="0.95"} 0.0 couchdb_collect_results_time_seconds{quantile="0.99"} 0.0 couchdb_collect_results_time_seconds{quantile="0.999"} 0.0 couchdb_collect_results_time_seconds_sum 0.0 couchdb_collect_results_time_seconds_count 0 # TYPE couchdb_couch_server_lru_skip_total counter couchdb_couch_server_lru_skip_total 0 # TYPE couchdb_database_purges_total counter couchdb_database_purges_total 0 # TYPE couchdb_database_reads_total counter couchdb_database_reads_total 0 # TYPE couchdb_database_writes_total counter couchdb_database_writes_total 0 # TYPE couchdb_db_open_time_seconds summary couchdb_db_open_time_seconds{quantile="0.5"} 0.0 couchdb_db_open_time_seconds{quantile="0.75"} 0.0 couchdb_db_open_time_seconds{quantile="0.9"} 0.0 couchdb_db_open_time_seconds{quantile="0.95"} 0.0 couchdb_db_open_time_seconds{quantile="0.99"} 0.0 couchdb_db_open_time_seconds{quantile="0.999"} 0.0 couchdb_db_open_time_seconds_sum 0.0 couchdb_db_open_time_seconds_count 0 # TYPE couchdb_dbinfo_seconds summary couchdb_dbinfo_seconds{quantile="0.5"} 0.0 couchdb_dbinfo_seconds{quantile="0.75"} 0.0 couchdb_dbinfo_seconds{quantile="0.9"} 0.0 couchdb_dbinfo_seconds{quantile="0.95"} 0.0 couchdb_dbinfo_seconds{quantile="0.99"} 0.0 couchdb_dbinfo_seconds{quantile="0.999"} 0.0 couchdb_dbinfo_seconds_sum 0.0 couchdb_dbinfo_seconds_count 0 # TYPE couchdb_document_inserts_total counter couchdb_document_inserts_total 0 # TYPE couchdb_document_purges_failure_total counter couchdb_document_purges_failure_total 0 # TYPE couchdb_document_purges_success_total counter couchdb_document_purges_success_total 0 # TYPE couchdb_document_purges_total_total counter couchdb_document_purges_total_total 0 # TYPE couchdb_document_writes_total counter couchdb_document_writes_total 0 # TYPE couchdb_httpd_aborted_requests_total counter couchdb_httpd_aborted_requests_total 0 # TYPE couchdb_httpd_all_docs_timeouts_total counter couchdb_httpd_all_docs_timeouts_total 0 # TYPE couchdb_httpd_bulk_docs_seconds summary couchdb_httpd_bulk_docs_seconds{quantile="0.5"} 0.0 couchdb_httpd_bulk_docs_seconds{quantile="0.75"} 0.0 couchdb_httpd_bulk_docs_seconds{quantile="0.9"} 0.0 couchdb_httpd_bulk_docs_seconds{quantile="0.95"} 0.0 couchdb_httpd_bulk_docs_seconds{quantile="0.99"} 0.0 couchdb_httpd_bulk_docs_seconds{quantile="0.999"} 0.0 couchdb_httpd_bulk_docs_seconds_sum 0.0 couchdb_httpd_bulk_docs_seconds_count 0 ...remaining couchdb metrics from _stats and _system
Если указан дополнительный параметр конфигурации порта, клиент может обращаться к этому API через указанный порт, не требующий аутентификации. По умолчанию этот параметр false (ВЫКЛ.). Если параметр включён — true (ВКЛ.), порты по умолчанию для кластера из 3 узлов: 17986, 27986, 37986. Подробности см. в разделе Настройка конечной точки Prometheus.
GET /_node/_local/_prometheus HTTP/1.1 Accept: text/plain Host: localhost:17986
/_node/{node-name}/_smoosh/status
Добавлено в версии 3.4.
-
GET/_node/{node-name}/_smoosh/status -
Выводит состояние каждого канала, количество выполняемых в данный момент заданий и количество заданий в очереди (а также наименьший и наибольший приоритет элементов в очереди). Цель — предоставить достаточно сведений о
smooshс первого взгляда, чтобы оператор мог оценить, достаточно ли эффективноsmooshиспользует доступное для освобождения пространство в кластере.Как правило, при нормальном состоянии в каналах
ratio_dbsиratio_viewsбудут находиться элементы. Из-за настроек по умолчанию элементы почти наверняка будут и в каналахslack_dbsиslack_views. Судя по нашему опыту, одни лишь каналы низкого приоритета не особенно эффективны для поддержания хорошей степени уплотнения.- Коды состояния:
-
200 OK – Запрос успешно выполнен
401 Unauthorized – Требуются права администратора сервера CouchDB
403 Forbidden – Недостаточно прав / Слишком много запросов с недействительными учётными данными
Запрос:
GET /_node/_local/_smoosh/status HTTP/1.1 Host: 127.0.0.1:5984 Accept: */*
Ответ:
HTTP/1.1 200 OK Content-Type: application/json { "channels": { "slack_dbs": { "starting": 0, "waiting": { "size": 0, "min": 0, "max": 0 }, "active": 0 }, "ratio_dbs": { "starting": 0, "waiting": { "size": 56, "min": 1.125, "max": 11.0625 }, "active": 0 }, "ratio_views": { "starting": 0, "waiting": { "size": 0, "min": 0, "max": 0 }, "active": 0 }, "upgrade_dbs": { "starting": 0, "waiting": { "size": 0, "min": 0, "max": 0 }, "active": 0 }, "slack_views": { "starting": 0, "waiting": { "size": 0, "min": 0, "max": 0 }, "active": 0 }, "upgrade_views": { "starting": 0, "waiting": { "size": 0, "min": 0, "max": 0 }, "active": 0 }, "index_cleanup": { "starting": 0, "waiting": { "size": 0, "min": 0, "max": 0 }, "active": 0 } } }
/_node/{node-name}/_system
-
GET/_node/{node-name}/_system -
Ресурс
_systemвозвращает объект JSON с различными статистическими данными об уровне системы для работающего сервера. Объект структурирован по разделам верхнего уровня, в которых собраны статистические данные по различным записям; каждая отдельная статистика легко определяется, а её содержимое описано самостоятельно.Строка
_localслужит псевдонимом имени локального узла, поэтому во всех URL статистики{node-name}можно заменить на_local, чтобы взаимодействовать со статистикой локального узла.- Заголовки запроса:
-
-
Accept –
application/json
text/plain
-
- Заголовки ответа:
-
-
application/json
text/plain; charset=utf-8
-
- Коды состояния:
-
200 ОК – Запрос успешно выполнен
401 Не авторизован – Неавторизованный запрос к защищённому API
403 Запрещено – Недостаточно прав / Слишком много запросов с недействительными учётными данными
Запрос:
GET /_node/_local/_system HTTP/1.1 Accept: application/json Host: localhost:5984
Ответ:
HTTP/1.1 200 OK Cache-Control: must-revalidate Content-Length: 187 Content-Type: application/json Date: Sat, 10 Aug 2013 11:41:11 GMT Server: CouchDB (Erlang/OTP) { "uptime": 259, "memory": {} }Эти статистические данные предназначены, как правило, только для разработчиков CouchDB.
/_node/{node-name}/_restart
-
POST/_node/{node-name}/_restart -
Этот API предназначен только для интеграционного тестирования и не должен использоваться в рабочей среде.
- Коды состояния:
-
200 ОК – Запрос успешно выполнен
401 Не авторизован – Неавторизованный запрос к защищённому API
403 Запрещено – Недостаточно прав / Слишком много запросов с недействительными учётными данными
/_node/{node-name}/_versions
-
GET/_node/{node-name}/_versions -
Ресурс
_versionsвозвращает объект JSON с различными сведениями об уровне системы для работающего сервера.При наличии обнаруженного узла поиска
clouseauтакже отображается его версия.Строка
_localслужит псевдонимом имени локального узла, поэтому во всех URL статистики{node-name}можно заменить на_local, чтобы взаимодействовать со сведениями о локальном узле.- Заголовки запроса:
-
-
Accept –
application/json
text/plain
-
- Заголовки ответа:
-
-
application/json
-
- Коды состояния:
-
200 ОК – Запрос успешно выполнен
401 Не авторизован – Неавторизованный запрос к защищённому API
403 Запрещено – Недостаточно прав / Слишком много запросов с недействительными учётными данными
Запрос:
GET /_node/_local/_versions HTTP/1.1 Accept: application/json Host: localhost:5984
Ответ:
HTTP/1.1 200 OK Cache-Control: must-revalidate Content-Length: 368 Content-Type: application/json Date: Sat, 03 Sep 2022 08:12:12 GMT Server: CouchDB/3.2.2-ea382cf (Erlang OTP/25) { "javascript_engine": { "version": "91", "name": "spidermonkey" }, "erlang": { "version": "25.0.4", "supported_hashes": [ "sha", "sha224", "sha256", ] }, "clouseau": { "version": "2.24.0" }, "collation_driver": { "name": "libicu", "library_version": "70.1", "collator_version": "153.112", "collation_algorithm_version": "14" } }
/_search_analyze
Предупреждение
Для работы конечных точек поиска необходим работающий поисковый плагин, подключённый к каждому узлу кластера. Подробнее см. в разделе Установка поискового плагина.
Добавлено в версии 3.0.
-
POST/_search_analyze -
Проверяет результаты токенизации анализатором Lucene на примере текста.
- Параметры:
-
analyzer – Тип анализатора
text – Токен анализатора, который требуется проверить
- Коды состояния:
-
200 ОК – Запрос успешно выполнен
400 Неверный запрос – Тело запроса содержит ошибку (имеет неверный формат или в нём отсутствует обязательное поле)
401 Не авторизован – Неавторизованный запрос к защищённому API
403 Запрещено – Недостаточно прав / Слишком много запросов с недействительными учётными данными
500 Внутренняя ошибка сервера – Произошла ошибка сервера (или ошибка другого типа)
Запрос:
POST /_search_analyze HTTP/1.1
Host: localhost:5984
Content-Type: application/json
{"analyzer":"english", "text":"running"} Ответ:
{
"tokens": [
"run"
]
} /_nouveau_analyze
Предупреждение
Nouveau — экспериментальная функция. В будущих выпусках работа конечных точек может измениться, а существующие индексы могут стать недействительными.
Предупреждение
Для работы конечных точек Nouveau необходим работающий сервер Nouveau. Подробнее см. в разделе Установка сервера Nouveau.
Добавлено в версии 3.4.0.
-
POST/_nouveau_analyze -
Проверяет результаты токенизации анализатором Lucene на примере текста.
- Параметры:
-
analyzer – Имя анализатора
text – Токен анализатора, который требуется проверить
- Коды состояния:
-
200 ОК – Запрос успешно выполнен
400 Неверный запрос – Тело запроса содержит ошибку (имеет неверный формат или в нём отсутствует обязательное поле)
401 Не авторизован – Неавторизованный запрос к защищённому API
403 Запрещено – Недостаточно прав / Слишком много запросов с недействительными учётными данными
500 Внутренняя ошибка сервера – Произошла ошибка сервера (или ошибка другого типа)
Запрос:
POST /_nouveau_analyze HTTP/1.1
Host: localhost:5984
Content-Type: application/json
{"analyzer":"english", "text":"running"} Ответ:
{
"tokens": [
"run"
]
} /_utils
-
GET/_utils -
Открывает встроенный интерфейс администрирования Fauxton для CouchDB.
- Заголовки ответа:
-
Location – Новый URI-адрес
- Коды состояния:
-
301 Перемещено навсегда – Перенаправляет на
GET /_utils/
-
GET/_utils/ -
- Заголовки ответа:
-
Content-Type – text/html
Last-Modified – Временная метка изменения статических файлов
- Коды состояния:
-
200 ОК – Запрос успешно выполнен
401 Не авторизован – Неавторизованный запрос к защищённому API
403 Запрещено – Недостаточно прав / Слишком много запросов с недействительными учётными данными
/_up
Добавлено в версии 2.0.
-
GET/_up -
Подтверждает, что сервер запущен и готов обрабатывать запросы. Если параметр
maintenance_modeимеет значениеtrueилиnolb, конечная точка вернёт ответ 404. Поле состояния в теле ответа также изменяется в соответствии с текущим значениемmaintenance_mode; по умолчанию используетсяok.Если параметр
maintenance_modeимеет значениеtrue, в поле состояния устанавливается значениеmaintenance_mode.Если для параметра
maintenance_modeзадано значениеnolb, в поле состояния устанавливается значениеnolb.- Заголовки ответа:
-
Content-Type – application/json
- Коды состояния:
-
200 ОК – Запрос успешно выполнен
401 Не авторизован – Неавторизованный запрос к защищённому API
403 Запрещено – Недостаточно прав / Слишком много запросов с недействительными учётными данными
404 Не найдено – В данный момент сервер недоступен для обработки запросов.
Ответ:
HTTP/1.1 200 OK Cache-Control: must-revalidate Content-Length: 16 Content-Type: application/json Date: Sat, 17 Mar 2018 04:46:26 GMT Server: CouchDB/2.2.0-f999071ec (Erlang OTP/19) X-Couch-Request-ID: c57a3b2787 X-CouchDB-Body-Time: 0 {"status":"ok"}
/_uuids
Изменено в версии 2.0.0.
-
GET/_uuids -
Запрашивает один или несколько универсальных уникальных идентификаторов (UUID) у экземпляра CouchDB. Ответ представляет собой объект JSON со списком UUID.
- Заголовки запроса:
-
-
Accept –
application/json
text/plain
-
- Параметры запроса:
-
count (number) – Количество UUID для возврата. Значение по умолчанию —
1.
- Заголовки ответа:
-
-
application/json
text/plain; charset=utf-8
ETag – Хеш ответа
-
- Коды состояния:
-
200 ОК – Запрос успешно выполнен
400 Неверный запрос – Запрошено больше UUID, чем разрешено получить параметром
allowed401 Не авторизован – Неавторизованный запрос к защищённому API
403 Запрещено – Недостаточно прав / Слишком много запросов с недействительными учётными данными
Запрос:
GET /_uuids?count=10 HTTP/1.1 Accept: application/json Host: localhost:5984
Ответ:
HTTP/1.1 200 OK Content-Length: 362 Content-Type: application/json Date: Sat, 10 Aug 2013 11:46:25 GMT ETag: "DGRWWQFLUDWN5MRKSLKQ425XV" Expires: Fri, 01 Jan 1990 00:00:00 GMT Pragma: no-cache Server: CouchDB (Erlang/OTP) { "uuids": [ "75480ca477454894678e22eec6002413", "75480ca477454894678e22eec600250b", "75480ca477454894678e22eec6002c41", "75480ca477454894678e22eec6003b90", "75480ca477454894678e22eec6003fca", "75480ca477454894678e22eec6004bef", "75480ca477454894678e22eec600528f", "75480ca477454894678e22eec6005e0b", "75480ca477454894678e22eec6006158", "75480ca477454894678e22eec6006161" ] }
Тип UUID определяется параметром UUID algorithm в конфигурации CouchDB.
Тип UUID можно изменить в любое время с помощью API конфигурации. Например, тип UUID можно изменить на random, отправив следующий HTTP-запрос:
PUT http://couchdb:5984/_node/nonode@nohost/_config/uuids/algorithm HTTP/1.1 Content-Type: application/json Accept: */* "random"
Проверить изменение можно, получив список UUID:
{
"uuids" : [
"031aad7b469956cf2826fcb2a9260492",
"6ec875e15e6b385120938df18ee8e496",
"cff9e881516483911aa2f0e98949092d",
"b89d37509d39dd712546f9510d4a9271",
"2e0dbf7f6c4ad716f21938a016e4e59f"
]
} /favicon.ico
-
GET/favicon.ico -
Бинарное содержимое значка сайта favicon.ico.
- Заголовки ответа:
-
Content-Type – image/x-icon
- Коды состояния:
-
200 ОК – Запрос успешно выполнен
401 Не авторизован – Неавторизованный запрос к защищённому API
403 Запрещено – Недостаточно прав / Слишком много запросов с недействительными учётными данными
404 Не найдено – Запрошенное содержимое не найдено
/_reshard
Добавлено в версии 2.4.
-
GET/_reshard -
Возвращает количество завершённых, неудачных, выполняющихся, остановленных и всех заданий, а также состояние перераспределения сегментов в кластере.
- Заголовки запроса:
-
-
Accept –
application/json
-
- Заголовки ответа:
-
-
application/json
-
- Объект JSON ответа:
-
state (string) –
stoppedилиrunningstate_reason (string) –
nullили строка с дополнительными сведениями либо причиной, связанной с состояниемcompleted (number) – Количество завершённых заданий по перераспределению сегментов
failed (number) – Количество неудачных заданий по перераспределению сегментов
running (number) – Количество выполняющихся заданий по перераспределению сегментов
stopped (number) – Количество остановленных заданий по перераспределению сегментов
total (number) – Общее количество заданий по перераспределению сегментов
- Коды состояния:
-
200 OK – Запрос успешно выполнен
401 Unauthorized – Требуются права администратора сервера CouchDB
403 Forbidden – Недостаточно прав / Слишком много запросов с недействительными учётными данными
Запрос:
GET /_reshard HTTP/1.1 Accept: application/json Host: localhost:5984
Ответ:
HTTP/1.1 200 OK Content-Type: application/json { "completed": 21, "failed": 0, "running": 3, "state": "running", "state_reason": null, "stopped": 0, "total": 24 }
-
GET/_reshard/state -
Возвращает состояние перераспределения сегментов и дополнительные сведения о состоянии, если они имеются.
- Заголовки запроса:
-
-
Accept –
application/json
-
- Заголовки ответа:
-
-
application/json
-
- Объект JSON ответа:
-
state (string) –
stoppedилиrunningstate_reason (string) – Дополнительные сведения либо причина, связанные с состоянием
- Коды состояния:
-
200 OK – Запрос успешно выполнен
401 Unauthorized – Требуются права администратора сервера CouchDB
403 Forbidden – Недостаточно прав / Слишком много запросов с недействительными учётными данными
Запрос:
GET /_reshard/state HTTP/1.1 Accept: application/json Host: localhost:5984
Ответ:
HTTP/1.1 200 OK Content-Type: application/json { "reason": null, "state": "running" }
-
PUT/_reshard/state -
Изменяет состояние перераспределения сегментов в кластере. Возможны состояния
stoppedиrunning. Это запускает и останавливает глобальное перераспределение сегментов на всех узлах кластера. Если выполняются какие-либо задания, они будут остановлены при переходе состояния вstopped. Когда состояние снова изменится наrunning, эти задания продолжат выполняться.- Заголовки запроса:
-
-
Accept –
application/json
-
- Заголовки ответа:
-
-
application/json
-
- Объект JSON запроса:
-
state (string) –
stoppedилиrunningstate_reason (string) – Необязательная строка с дополнительными сведениями либо причиной, связанными с состоянием
- Объект JSON ответа:
-
ok (boolean) –
true
- Коды состояния:
-
200 OK – Запрос успешно выполнен
400 Bad Request – Недопустимый запрос. Возможно, указано неверное или отсутствует имя состояния.
401 Unauthorized – Требуются права администратора сервера CouchDB
403 Forbidden – Недостаточно прав / Слишком много запросов с недействительными учётными данными
Запрос:
PUT /_reshard/state HTTP/1.1 Accept: application/json Host: localhost:5984 { "state": "stopped", "reason": "Rebalancing in progress" }Ответ:
HTTP/1.1 200 OK Content-Type: application/json { "ok": true }
-
GET/_reshard/jobs -
Примечание
Структура ответа, в частности поля
total_rowsиoffset, должна соответствовать структуре конечной точки_scheduler/jobs.- Заголовки запроса:
-
-
Accept –
application/json
-
- Заголовки ответа:
-
-
application/json
-
- Объект JSON ответа:
-
jobs (list) – Массив объектов JSON, по одному для каждого задания по перераспределению сегментов. Описание полей каждого задания см. в конечной точке /_reshard/job/{jobid}.
offset (number) – Смещение в списке объектов заданий. В настоящее время задано в коде как
0.total_rows (number) – Общее количество заданий по перераспределению сегментов в кластере.
- Коды состояния:
-
200 OK – Запрос успешно выполнен
401 Unauthorized – Требуются права администратора сервера CouchDB
403 Forbidden – Недостаточно прав / Слишком много запросов с недействительными учётными данными
Запрос:
GET /_reshard/jobs HTTP/1.1 Accept: application/json
Ответ:
HTTP/1.1 200 OK Content-Type: application/json { "jobs": [ { "history": [ { "detail": null, "timestamp": "2019-03-28T15:28:02Z", "type": "new" }, { "detail": "initial_copy", "timestamp": "2019-03-28T15:28:02Z", "type": "running" } ], "id": "001-171d1211418996ff47bd610b1d1257fc4ca2628868def4a05e63e8f8fe50694a", "job_state": "completed", "node": "node1@127.0.0.1", "source": "shards/00000000-1fffffff/d1.1553786862", "split_state": "completed", "start_time": "2019-03-28T15:28:02Z", "state_info": {}, "target": [ "shards/00000000-0fffffff/d1.1553786862", "shards/10000000-1fffffff/d1.1553786862" ], "type": "split", "update_time": "2019-03-28T15:28:08Z" } ], "offset": 0, "total_rows": 24 }
-
GET/_reshard/jobs/{jobid} -
Получает сведения о задании по перераспределению сегментов с идентификатором
jobid.- Заголовки запроса:
-
-
Accept –
application/json
-
- Заголовки ответа:
-
-
application/json
-
- Объект JSON ответа:
-
id (string) – Идентификатор задания.
type (string) – На данный момент реализован только
split.job_state (string) – Состояние выполнения задания. Возможны значения
new,running,stopped,completedилиfailed.split_state (string) – Подробное состояние, относящееся к разделению сегментов. Оно показывает ход выполнения разделения сегментов; возможны значения
new,initial_copy,topoff1,build_indices,topoff2,copy_local_docs,update_shardmap,wait_source_close,topoff3,source_deleteилиcompleted.state_info (object) – Необязательные дополнительные сведения, связанные с текущим состоянием.
source (string) – Для заданий типа
splitэто исходный сегмент.target (list) – Для заданий типа
splitэто список из двух или более целевых сегментов.history (list) – Список объектов JSON, содержащих историю переходов между состояниями задания.
- Коды состояния:
-
200 OK – Запрос успешно выполнен
401 Unauthorized – Требуются права администратора сервера CouchDB
403 Forbidden – Недостаточно прав / Слишком много запросов с недействительными учётными данными
Запрос:
GET /_reshard/jobs/001-171d1211418996ff47bd610b1d1257fc4ca2628868def4a05e63e8f8fe50694a HTTP/1.1 Accept: application/json
Ответ:
HTTP/1.1 200 OK Content-Type: application/json { "id": "001-171d1211418996ff47bd610b1d1257fc4ca2628868def4a05e63e8f8fe50694a", "job_state": "completed", "node": "node1@127.0.0.1", "source": "shards/00000000-1fffffff/d1.1553786862", "split_state": "completed", "start_time": "2019-03-28T15:28:02Z", "state_info": {}, "target": [ "shards/00000000-0fffffff/d1.1553786862", "shards/10000000-1fffffff/d1.1553786862" ], "type": "split", "update_time": "2019-03-28T15:28:08Z", "history": [ { "detail": null, "timestamp": "2019-03-28T15:28:02Z", "type": "new" }, { "detail": "initial_copy", "timestamp": "2019-03-28T15:28:02Z", "type": "running" } ] }
-
POST/_reshard/jobs -
В зависимости от указанных в запросе полей будут созданы одно или несколько заданий по перераспределению сегментов. Ответ представляет собой массив результатов в формате JSON. Каждый объект результата соответствует одному заданию по перераспределению сегментов для определённого узла и диапазона. Некоторые запросы могут завершиться успешно, а другие — с ошибкой. В успешных результатах будут ключ
"ok": trueи значение, а в заданиях с ошибкой — ключ"error": "{error_message}"и значение.- Заголовки запроса:
-
-
Accept –
application/json
-
- Заголовки ответа:
-
-
application/json
-
- Объект JSON запроса:
-
type (string) – Тип задания. В настоящее время допускается только
"split".db (string) – База данных, которую нужно разделить. Это поле нельзя указывать одновременно с полем
"shard”.node (string) – Разделить сегменты на определённом узле. Этот параметр необязателен. Значение должно соответствовать одному из узлов, возвращаемых конечной точкой
_membership.range (string) – Разделить копии сегментов в указанном диапазоне. Формат диапазона:
hhhhhhhh-hhhhhhhh, гдеh— шестнадцатеричная цифра. Используется этот формат, поскольку именно так диапазоны представлены в файловой системе. Этот параметр необязателен и не может использоваться одновременно с полем"shard".shard (string) – Разделить определённый сегмент. Сегмент следует указать в формате
"shards/{range}/{db}.{suffix}". Здесьrangeимеет форматhhhhhhhh-hhhhhhhh,db— имя базы данных, аsuffix— суффикс создания сегмента (временная метка).error (string) – Сообщение об ошибке, если создать задание не удалось.
node – Узел кластера, на котором было создано и выполняется задание.
- Объект JSON ответа:
-
ok (boolean) –
true, если задание создано успешно.
- Коды состояния:
-
201 Created – Одно или несколько заданий успешно созданы
400 Bad Request – Недопустимый запрос. Возможно, не прошла проверка параметров.
401 Unauthorized – Требуются права администратора сервера CouchDB
403 Forbidden – Недостаточно прав / Слишком много запросов с недействительными учётными данными
404 Not Found – База данных, узел, диапазон или сегмент не найдены
Запрос:
POST /_reshard/jobs HTTP/1.1 Accept: application/json Content-Type: application/json { "db": "db3", "range": "80000000-ffffffff", "type": "split" }Ответ:
HTTP/1.1 201 Created Content-Type: application/json [ { "id": "001-30d7848a6feeb826d5e3ea5bb7773d672af226fd34fd84a8fb1ca736285df557", "node": "node1@127.0.0.1", "ok": true, "shard": "shards/80000000-ffffffff/db3.1554148353" }, { "id": "001-c2d734360b4cb3ff8b3feaccb2d787bf81ce2e773489eddd985ddd01d9de8e01", "node": "node2@127.0.0.1", "ok": true, "shard": "shards/80000000-ffffffff/db3.1554148353" } ]
-
DELETE/_reshard/jobs/{jobid} -
Если задание выполняется, остановите его, а затем удалите.
- Объект JSON ответа:
-
ok (boolean) –
true, если задание успешно удалено.
- Коды состояния:
-
200 OK – Задание успешно удалено
401 Unauthorized – Требуются права администратора сервера CouchDB
403 Forbidden – Недостаточно прав / Слишком много запросов с недействительными учётными данными
404 Not Found – Задание не найдено
Запрос:
DELETE /_reshard/jobs/001-171d1211418996ff47bd610b1d1257fc4ca2628868def4a05e63e8f8fe50694a HTTP/1.1
Ответ:
HTTP/1.1 200 OK Content-Type: application/json { "ok": true }
-
GET/_reshard/jobs/{jobid}/state -
Возвращает состояние выполнения задания по перераспределению сегментов с идентификатором
jobid.- Заголовки запроса:
-
-
Accept –
application/json
-
- Заголовки ответа:
-
-
application/json
-
- Объект JSON запроса:
-
state (string) – Одно из значений:
new,running,stopped,completedилиfailed.state_reason (string) – Дополнительные сведения, связанные с состоянием
- Коды состояния:
-
200 OK – Запрос успешно выполнен
401 Unauthorized – Требуются права администратора сервера CouchDB
403 Forbidden – Недостаточно прав / Слишком много запросов с недействительными учётными данными
404 Not Found – Задание не найдено
Запрос:
GET /_reshard/jobs/001-b3da04f969bbd682faaab5a6c373705cbcca23f732c386bb1a608cfbcfe9faff/state HTTP/1.1 Accept: application/json Host: localhost:5984
Ответ:
HTTP/1.1 200 OK Content-Type: application/json { "reason": null, "state": "running" }
-
PUT/_reshard/jobs/{jobid}/state -
Изменяет состояние определённого задания по перераспределению сегментов с идентификатором
jobid. Состояние можно изменить сstoppedнаrunningили сrunningнаstopped. Если отдельное задание переведено в состояниеstoppedс помощью этого API, оно останется в состоянииstopped, даже если глобальное состояние перераспределения сегментов переключить сstoppedнаrunning. Если задание уже находится в состоянииcompleted, оно останется в состоянииcompleted.- Заголовки запроса:
-
-
Accept –
application/json
-
- Заголовки ответа:
-
-
application/json
-
- Объект JSON запроса:
-
state (string) –
stoppedилиrunningstate_reason (string) – Необязательная строка с дополнительными сведениями либо причиной, связанными с состоянием
- Объект JSON ответа:
-
ok (boolean) –
true
- Коды состояния:
-
200 OK – Запрос успешно выполнен
400 Bad Request – Недопустимый запрос. Например, может быть указано неверное имя состояния.
401 Unauthorized – Требуются права администратора сервера CouchDB
403 Forbidden – Недостаточно прав / Слишком много запросов с недействительными учётными данными
404 Not Found – Задание не найдено
Запрос:
PUT /_reshard/state/001-b3da04f969bbd682faaab5a6c373705cbcca23f732c386bb1a608cfbcfe9faff/state HTTP/1.1 Accept: application/json Host: localhost:5984 { "state": "stopped", "reason": "Rebalancing in progress" }Ответ:
HTTP/1.1 200 OK Content-Type: application/json { "ok": true }
Copyright © 2025 The Apache Software Foundation — Licensed under the Apache License 2.0
https://docs.couchdb.org/en/3.5.1/api/server/common.html