1.2.1. /
¶
-
GET
/
¶ 访问CouchDB实例的根将返回有关该实例的元信息。响应是一个JSON结构,包含关于服务器的信息,包括欢迎消息和服务器版本。
请求标头: - Accept --
- application/json
- text/plain
响应头: - Content-Type --
- application/json
- text/plain; charset=utf-8
状态代码: - 200 OK -- 请求已成功完成
请求 :
GET / HTTP/1.1 Accept: application/json Host: localhost:5984
响应 :
HTTP/1.1 200 OK Cache-Control: must-revalidate Content-Length: 179 Content-Type: application/json Date: Sat, 10 Aug 2013 06:33:33 GMT Server: CouchDB (Erlang/OTP) { "couchdb": "Welcome", "uuid": "85fb71bf700c17267fef77535820e371", "vendor": { "name": "The Apache Software Foundation", "version": "1.3.1" }, "version": "1.3.1" }
- Accept --
1.2.2. /_active_tasks
¶
在 2.1.0 版更改: 由于调度复制器的工作方式,连续复制作业可以定期停止,然后稍后再启动。当它们不运行时,它们不会出现在 _active_tasks
端点
-
GET
/_active_tasks
¶ 正在运行的任务的列表,包括任务类型、名称、状态和进程ID。结果是当前正在运行的任务的JSON数组,每个任务都用一个对象进行描述。根据操作类型,响应对象字段集可能不同。
请求标头: - Accept --
- application/json
- text/plain
响应头: - Content-Type --
- application/json
- text/plain; charset=utf-8
响应JSON对象: - changes_done (number) -- 已处理的更改
- database (string) -- 源数据库
- pid (string) -- 进程ID
- progress (number) -- 当前进度百分比
- started_on (number) -- 任务开始时间为unix时间戳
- status (string) -- 任务状态消息
- task (string) -- 任务名称
- total_changes (number) -- 工艺总变更
- type (string) -- 操作类型
- updated_on (number) -- 上次操作更新的Unix时间戳
状态代码: - 200 OK -- 请求已成功完成
- 401 Unauthorized -- 需要CouchDB服务器管理员权限
请求 :
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, "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 } ]
- Accept --
1.2.3. /_all_dbs
¶
-
GET
/_all_dbs
¶ 返回CouchDB实例中所有数据库的列表。
请求标头: - Accept --
- application/json
- text/plain
查询参数: - descending (boolean) -- 按键按降序返回数据库。默认为
false
. - endkey (json) -- 当达到指定的键时停止返回数据库。
- end_key (json) -- 的别名
endkey
参数 - limit (number) -- 将返回的数据库数限制为指定的数目。
- skip (number) -- 在开始返回结果之前跳过此数量的数据库。默认为
0
. - startkey (json) -- 返回以指定键开头的数据库。
- start_key (json) -- 的别名
startkey
。
响应头: - Content-Type --
- application/json
- text/plain; charset=utf-8
状态代码: - 200 OK -- 请求已成功完成
请求 :
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" ]
- Accept --
1.2.4. /_dbs_info
¶
2.2 新版功能.
-
POST
/_dbs_info
¶ 返回CouchDB实例中指定数据库的列表信息。这使您能够在单个请求中请求有关多个数据库的信息,而不是多个数据库 :get:`/{{db}}` 请求。
请求标头: - Accept --
- application/json
响应头: - Content-Type --
- application/json
请求JSON对象: - keys (array) -- 要请求的数据库名称数组
状态代码: - 200 OK -- 请求已成功完成
- 400 Bad Request -- 请求中缺少密钥或超出密钥
请求 :
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" } } ]
- Accept --
注解
可以通过修改 max_db_number_for_dbs_info_req 配置文件中的条目。默认限制为100。
1.2.5. /_cluster_setup
¶
2.0 新版功能.
-
GET
/_cluster_setup
¶ 根据群集安装向导返回节点或群集的状态。
请求标头: - Accept --
- application/json
- text/plain
查询参数: - ensure_dbs_exist (array) -- 确保节点/群集上存在的系统数据库的列表。默认为
["_users","_replicator"]
.
响应头: - Content-Type --
- application/json
- text/plain; charset=utf-8
响应JSON对象: - state (string) -- 当前
state
节点和/或群集(见下文)
状态代码: - 200 OK -- 请求已成功完成
这个
state
returned指示当前节点或群集状态,并且是以下值之一: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
,已定义服务器级管理员用户 and 有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"}
- Accept --
-
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
可以指定绑定到主机上的所有接口。(仅启用_cluster和enable_single_node) - username (string) -- 要创建的服务器级管理员的用户名。(仅启用_cluster和enable_single_node)或远程服务器的管理员用户名(add_node)
- password (string) -- 服务器级管理员要创建的密码。(仅启用_cluster和enable_single_node)或远程服务器的管理员用户名(add_node)
- port (number) -- 要将此节点绑定到的TCP端口(仅启用“启用”群集和“仅启用”单个节点)或要绑定远程节点的TCP端口(仅限添加“节点”)。
- node_count (number) -- 要加入集群的节点总数,包括这个节点。用于确定群集的值
n
,最多3个。(仅启用_群集) - remote_node (string) -- 作为远程节点的IP地址列表的一部分。(仅启用_群集)
- remote_current_user (string) -- 在远程节点上授权的服务器级管理员的用户名。(仅启用_群集)
- remote_current_password (string) -- 在远程节点上授权的服务器级管理员的密码。(仅启用_群集)
- host (string) -- 要添加到群集的节点的远程节点IP。(仅添加节点)
- ensure_dbs_exist (array) -- 确保节点/群集上存在的系统数据库的列表。默认为
["_users","_replicator"]
.
No example request/response included here. For a worked example, please see 群集设置API .
- Accept --
1.2.6. /_db_updates
¶
1.4 新版功能.
-
GET
/_db_updates
¶ 返回CouchDB实例中所有数据库事件的列表。存在
_global_changes
需要数据库才能使用此终结点。请求标头: - Accept --
- application/json
- text/plain
查询参数: - feed (string) --
- 正常的 :返回所有历史数据库更改,然后关闭连接。 违约。
- 朗波尔 :在第一个事件后关闭连接。
- 连续的 :为每个事件发送一行JSON。保持插座打开直到
timeout
. - 事件源 :比如,
continuous
,但将事件发送到 EventSource 格式。
- timeout (number) -- CouchDB关闭连接之前的秒数。默认为
60
. - heartbeat (number) -- 期间 毫秒 然后在结果中发送一个空行。仅适用于
longpoll
,continuous
和eventsource
喂养。重写任何超时以使提要无限期地保持活动状态。默认为60000
. 可能是true
使用默认值。 - since (string) -- 只返回指定序列ID之后的更新。如果指定了序列ID但不存在,则返回所有更改。可能是绳子
now
开始只显示新的更新。
响应头: - Content-Type --
- application/json
- text/plain; charset=utf-8
- Transfer-Encoding --
chunked
响应JSON对象: - results (array) -- 数据库事件的数组。为
longpoll
和continuous
模式下,整个响应的内容是results
数组。 - last_seq (string) -- 报告的最后一个序列ID。
状态代码: - 200 OK -- 请求已成功完成
- 401 Unauthorized -- 需要CouchDB服务器管理员权限
这个
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" }
- Accept --
1.2.7. /_membership
¶
2.0 新版功能.
-
GET
/_membership
¶ 将属于群集的节点显示为
cluster_nodes
. 田野all_nodes
显示此节点知道的所有节点,包括属于群集的节点。请参见设置集群时使用的端点 节点管理请求标头: - Accept --
- application/json
- text/plain
响应头: - Content-Type --
- application/json
- text/plain; charset=utf-8
状态代码: - 200 OK -- 请求已成功完成
请求 :
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" ] }
- Accept --
1.2.8. /_replicate
¶
-
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
参数。 - doc_ids (array) -- 要同步的文档ID数组
- filter (string) -- A的名字 filter function .
- source_proxy (string) -- 从源进行复制的代理服务器的地址(协议可以是“http”或“socks5”)
- target_proxy (string) -- 复制到目标的代理服务器的地址(协议可以是“http”或“socks5”)
- source (string/object) -- 完全限定的源数据库URL或包含源数据库完整URL的对象,以及附加参数(如标头)。例如:'http://example.com/source_db_名称'或{“url”:“url in here”,“headers”:{“header1”:“value1”,…}}。为了向后兼容,couchdb3.x将自动转换裸数据库名称,方法是在CouchDB监听的地址和端口前面加上一个完整的URL。这种行为在3.x中已被弃用,并将在CouchDB 4.0中删除。
- target (string/object) -- 完全限定的目标数据库URL或包含目标数据库完整URL的对象,以及附加参数(如标头)。例如:'http://example.com/target_db_名称'或{“url”:“url in here”,“headers”:{“header1”:“value1”,…}}。为了向后兼容,couchdb3.x将自动转换裸数据库名称,方法是在CouchDB监听的地址和端口前面加上一个完整的URL。这种行为在3.x中已被弃用,并将在CouchDB 4.0中删除。
响应头: - Content-Type --
- application/json
- text/plain; charset=utf-8
响应JSON对象: - history (array) -- 复制历史记录(见下文)
- ok (boolean) -- 复制状态
- replication_id_version (number) -- 复制协议版本
- session_id (string) -- 唯一会话ID
- source_last_seq (number) -- 从源数据库读取的最后一个序列号
状态代码: - 200 OK -- 复制请求已成功完成
- 202 Accepted -- 连续复制请求已被接受
- 400 Bad Request -- 无效的JSON数据
- 401 Unauthorized -- 需要CouchDB服务器管理员权限
- 404 Not Found -- 找不到源或目标数据库,或者尝试取消未知的复制任务
- 500 Internal Server Error -- JSON规范无效
复制请求的规范是通过请求的JSON内容控制的。JSON应该是一个带有定义源、目标和其他选项的字段的对象。
这个 Replication history 是具有以下结构的对象数组:
JSON对象: - doc_write_failures (number) -- 文档写入失败数
- docs_read (number) -- 读取的文档数
- docs_written (number) -- 写入目标的文档数
- end_last_seq (number) -- 更改流中的最后一个序列号
- end_time (string) -- 复制操作在中完成的日期/时间 RFC 2822 格式
- missing_checked (number) -- 检查的丢失文档数
- missing_found (number) -- 找到的丢失文档数
- recorded_seq (number) -- 上次记录的序列号
- session_id (string) -- 此复制操作的会话ID
- start_last_seq (number) -- 更改流中的第一个序列号
- start_time (string) -- 复制操作在中开始的日期/时间 RFC 2822 格式
- Accept --
注解
从CouchDB 2.0.0开始,这两个复制都需要完全限定的URL source
和 target
参数。
Request
POST /_replicate HTTP/1.1
Accept: application/json
Content-Length: 80
Content-Type: application/json
Host: localhost:5984
{
"source": "http://127.0.0.1:5984/db_a",
"target": "http://127.0.0.1:5984/db_b"
}
Response
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,
"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,
"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
}
1.2.8.1. 复制操作¶
复制的目的是在流程结束时,源数据库上的所有活动文档也将位于目标数据库中,并且在源数据库中删除的所有文档也将在目标数据库中删除(如果存在)。
复制可以描述为推或拉复制:
拉式复制 在哪里
source
是远程CouchDB实例,并且target
是本地数据库。如果源数据库具有永久IP地址,而目标(本地)数据库可能具有动态分配的IP地址(例如,通过DHCP),则拉式复制是最有用的解决方案。如果要从中央服务器复制到移动设备或其他设备,这一点尤其重要。
推送复制 在哪里
source
是一个本地数据库,并且target
是一个远程数据库。
1.2.8.2. 指定源和目标数据库¶
如果要在以下两种情况之一执行复制,则必须使用CouchDB数据库的URL规范:
- 使用远程数据库进行复制(即在同一主机上或另一主机上的另一个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
场不是破坏性的。如果数据库已经存在,复制将正常进行。
1.2.8.3. 单一复制¶
您可以请求复制一个数据库,以便两个数据库可以同步。默认情况下,一个数据库和两个数据库同步。例如,您可以通过提供 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,
"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
}
1.2.8.4. 连续复制¶
数据库与前面提到的方法的同步只在发出复制请求时发生一次。要从源永久复制目标数据库,必须设置 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
.
1.2.8.5. 正在取消连续复制¶
您可以通过添加 cancel
字段,并将该值设置为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错误。
1.2.9. /_scheduler/jobs
¶
-
GET
/_scheduler/jobs
¶ 复制作业的列表。包括通过创建的复制 /_replicate 以及从复制文档创建的端点。不包括已完成或由于复制文档格式错误而无法启动的复制。每个作业描述将包括源和目标信息、复制id、最近事件的历史记录以及其他一些内容。
请求标头: - Accept --
- application/json
响应头: - Content-Type --
- application/json
查询参数: - limit (number) -- 要返回多少个结果
- skip (number) -- 从开始处跳过多少个结果(按复制ID排序)
响应JSON对象: - offset (number) -- 跳过了多少个结果
- total_rows (number) -- 复制作业总数
- id (string) -- 复制ID。
- database (string) -- 复制文档数据库
- doc_id (string) -- 复制文档ID
- history (list) -- 作为对象列表的事件的时间戳历史记录
- pid (string) -- 复制进程ID
- node (string) -- 运行作业的群集节点
- source (string) -- 复制源
- target (string) -- 复制目标
- start_time (string) -- 启动复制的时间戳
状态代码: - 200 OK -- 请求已成功完成
- 401 Unauthorized -- 需要CouchDB服务器管理员权限
请求 :
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, "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, "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 }
- Accept --
1.2.10. /_scheduler/docs
¶
在 2.1.0 版更改: 使用此终结点可监视基于文档的复制的状态。以前需要对文档和 _active_tasks
获取完整的状态摘要
在 3.0.0 版更改: 错误陈述 "info" 字段从字符串转换为对象
-
GET
/_scheduler/docs
¶ 复制文档状态的列表。包括所有文档的信息,甚至
completed
和failed
州。对于每个文档,它返回文档ID、数据库、复制ID、源和目标以及其他信息。请求标头: - Accept --
- application/json
响应头: - Content-Type --
- application/json
查询参数: - limit (number) -- 要返回多少个结果
- skip (number) -- 如果按文档ID排序,从开头开始跳过多少个结果
响应JSON对象: - offset (number) -- 跳过了多少个结果
- total_rows (number) -- 复制文档的总数。
- id (string) -- 复制ID,或
null
如果状态是completed
或failed
- state (string) -- 见下列州之一 复制状态 有关说明):
initializing
,running
,completed
,pending
,crashing
,error
,failed
- database (string) -- 复制文档来自的数据库
- doc_id (string) -- 复制文档ID
- node (string) -- 运行作业的群集节点
- source (string) -- 复制源
- target (string) -- 复制目标
- start_time (string) -- 启动复制的时间戳
- last_updated (string) -- 上次状态更新的时间戳
- info (object) -- 将包含有关该州的其他信息。对于错误,这将是一个具有
"error"
字段和字符串值。有关成功状态,请参见下面的内容。 - error_count (number) -- 连续错误计数。指示此复制在一行中崩溃了多少次。将根据此数字以指数级后退方式重试复制。一旦复制成功,此计数将重置为0。To可用于了解特定复制为什么没有进展。
状态代码: - 200 OK -- 请求已成功完成
- 401 Unauthorized -- 需要CouchDB服务器管理员权限
这个
info
调度程序文档的字段:JSON对象: - revisions_checked (number) -- 自此复制开始以来已检查的修订数。
- missing_revisions_found (number) -- 在源上找到但目标中缺少的修订数。
- docs_read (number) -- 已从源中读取的文档数。
- docs_written (number) -- 已写入目标的文档数。
- changes_pending (number) -- 尚未复制的更改计数。
- doc_write_failures (number) -- 未能写入目标的文档数。
- checkpointed_source_seq (object) -- 上次成功复制的源序列id。
请求 :
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, "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, "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 }
- Accept --
-
GET
/_scheduler/docs/{replicator_db}
¶ 从replicator数据库获取有关复制文档的信息。默认的replicator数据库是
_replicator
但是,如果其他replicator数据库的名称以后缀结尾,则可以存在这些数据库/_replicator
.注解
为了方便起见 (
/
)在replicator数据库中,名称不必转义。所以/_scheduler/docs/other/_replicator
有效且等同于/_scheduler/docs/other%2f_replicator
请求标头: - Accept --
- application/json
响应头: - Content-Type --
- application/json
查询参数: - limit (number) -- 要返回多少个结果
- skip (number) -- 如果按文档ID排序,从开头开始跳过多少个结果
响应JSON对象: - offset (number) -- 跳过了多少个结果
- total_rows (number) -- 复制文档的总数。
- id (string) -- 复制ID,或
null
如果状态是completed
或failed
- state (string) -- 见下列州之一 复制状态 有关说明):
initializing
,running
,completed
,pending
,crashing
,error
,failed
- database (string) -- 复制文档来自的数据库
- doc_id (string) -- 复制文档ID
- node (string) -- 运行作业的群集节点
- source (string) -- 复制源
- target (string) -- 复制目标
- start_time (string) -- 启动复制的时间戳
- last_update (string) -- 上次状态更新的时间戳
- info (object) -- 将包含有关该州的其他信息。对于错误,这将是一个具有
"error"
字段和字符串值。有关成功状态,请参见下面的内容。 - error_count (number) -- 连续错误计数。指示此复制在一行中崩溃了多少次。将根据此数字以指数级后退方式重试复制。一旦复制成功,此计数将重置为0。To可用于了解特定复制为什么没有进展。
状态代码: - 200 OK -- 请求已成功完成
- 401 Unauthorized -- 需要CouchDB服务器管理员权限
这个
info
调度程序文档的字段:JSON对象: - revisions_checked (number) -- 自此复制开始以来已检查的修订数。
- missing_revisions_found (number) -- 在源上找到但目标中缺少的修订数。
- docs_read (number) -- 已从源中读取的文档数。
- docs_written (number) -- 已写入目标的文档数。
- changes_pending (number) -- 尚未复制的更改计数。
- doc_write_failures (number) -- 未能写入目标的文档数。
- checkpointed_source_seq (object) -- 上次成功复制的源序列id。
请求 :
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, "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 }
- Accept --
-
GET
/_scheduler/docs/{replicator_db}/{docid}
¶ 注解
为了方便起见 (
/
)在replicator数据库中,名称不必转义。所以/_scheduler/docs/other/_replicator
有效且等同于/_scheduler/docs/other%2f_replicator
请求标头: - Accept --
- application/json
响应头: - Content-Type --
- application/json
响应JSON对象: - id (string) -- 复制ID,或
null
如果状态是completed
或failed
- state (string) -- 见下列州之一 复制状态 有关说明):
initializing
,running
,completed
,pending
,crashing
,error
,failed
- database (string) -- 复制文档来自的数据库
- doc_id (string) -- 复制文档ID
- node (string) -- 运行作业的群集节点
- source (string) -- 复制源
- target (string) -- 复制目标
- start_time (string) -- 启动复制的时间戳
- last_update (string) -- 上次状态更新的时间戳
- info (object) -- 将包含有关该州的其他信息。对于错误,这将是一个具有
"error"
字段和字符串值。有关成功状态,请参见下面的内容。 - error_count (number) -- 连续错误计数。指示此复制在一行中崩溃了多少次。将根据此数字以指数级后退方式重试复制。一旦复制成功,此计数将重置为0。To可用于了解特定复制为什么没有进展。
状态代码: - 200 OK -- 请求已成功完成
- 401 Unauthorized -- 需要CouchDB服务器管理员权限
这个
info
调度程序文档的字段:JSON对象: - revisions_checked (number) -- 自此复制开始以来已检查的修订数。
- missing_revisions_found (number) -- 在源上找到但目标中缺少的修订数。
- docs_read (number) -- 已从源中读取的文档数。
- docs_written (number) -- 已写入目标的文档数。
- changes_pending (number) -- 尚未复制的更改计数。
- doc_write_failures (number) -- 未能写入目标的文档数。
- checkpointed_source_seq (object) -- 上次成功复制的源序列id。 请求 :
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, "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/" }
- Accept --
1.2.11. /_node/{node-name}
¶
-
GET
/_node/{node-name}
¶ 这个
/_node/{{node-name}}
endpoint可用于确认处理请求的服务器的Erlang节点名。这在访问时最有用/_node/_local
来检索这些信息。反复检索CouchDB端点的此信息对于确定CouchDB集群是否通过反向负载平衡器正确代理非常有用。请求标头: - Accept --
- application/json
- text/plain
响应头: - Content-Type --
- application/json
- text/plain; charset=utf-8
状态代码: - 200 OK -- 请求已成功完成
请求 :
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"}
- Accept --
1.2.12. /_node/{node-name}/_stats
¶
-
GET
/_node/{node-name}/_stats
¶ 这个
_stats
resource返回一个JSON对象,其中包含正在运行的服务器的统计信息。该对象由顶级部分构成,这些部分整理了一系列条目的统计信息,每个单独的统计信息都很容易识别,而且每个统计信息的内容都是自描述的。统计数据在 configurable interval . 当监控
_stats
端点,则需要使用至少两倍于此的轮询频率才能观察到准确的结果。例如,如果 interval 是10秒,投票_stats
至少每5秒。文本字符串
_local
作为本地节点名的别名,因此对于所有stats url,{{node-name}}
可替换为_local
,以与本地节点的统计信息交互。请求标头: - Accept --
- application/json
- text/plain
响应头: - Content-Type --
- application/json
- text/plain; charset=utf-8
状态代码: - 200 OK -- 请求已成功完成
请求 :
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" }
- Accept --
这些字段提供当前值、最小值和最大值,以及统计平均值和数量的集合。每种情况下的数量没有定义,但下面的描述提供了足够的细节来确定单位。
统计数据按“组”报告。统计数据分为以下顶层部分:
couch_log
:记录子系统couch_replicator
:复制计划程序和子系统couchdb
:主CouchDB数据库操作fabric
:与群集相关的操作global_changes
:全局更改源mem3
:节点成员身份相关统计信息pread
:CouchDB文件相关异常rexi
:群集内部RPC相关统计信息
统计信息的类型包含在 type
字段,并且是以下值之一:
counter
:单调递增计数器,重启时重置histogram
:b具有有意义的细分的值集。在当前范围内 collection interval .gauge
:可以上下浮动的单个数值
您还可以通过在URL路径中引用统计信息部分和统计信息ID来访问各个统计信息。例如,为了得到 request_time
统计 couchdb
对于目标节点,可以使用:
GET /_node/_local/_stats/couchdb/request_time HTTP/1.1
这将返回一个完整的statistics对象,与完整请求一样,但只包含请求的单个统计信息。
1.2.13. /_node/{node-name}/_prometheus
¶
-
GET
/_node/{node-name}/_prometheus
¶ 这个
_prometheus
资源返回文本/纯文本响应,该响应整合了我们的 /_node/{node-name}/_stats ,以及 /_node/{node-name}/_system 端点。格式由以下因素决定 Prometheus 。格式版本为2.0。请求 :
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_cluster_is_stable gauge couchdb_couch_replicator_cluster_is_stable 1 # 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_created_total counter couchdb_couch_replicator_docs_dbs_created_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
。看见 Configuration of Prometheus Endpoint 有关详细信息,请参阅。
GET /_node/_local/_prometheus HTTP/1.1
Accept: text/plain
Host: localhost:17986
1.2.14. /_node/{node-name}/_system
¶
-
GET
/_node/{node-name}/_system
¶ 这个
_system
resource返回一个JSON对象,该对象包含正在运行的服务器的各种系统级统计信息。该对象由顶级部分构成,这些部分整理了一系列条目的统计信息,每个单独的统计信息都很容易识别,而且每个统计信息的内容都是自描述的。文本字符串
_local
作为本地节点名的别名,因此对于所有stats url,{{node-name}}
可替换为_local
,以与本地节点的统计信息交互。请求标头: - Accept --
- application/json
- text/plain
响应头: - Content-Type --
- application/json
- text/plain; charset=utf-8
状态代码: - 200 OK -- 请求已成功完成
请求 :
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开发人员。
- Accept --
1.2.15. /_node/{node-name}/_restart
¶
1.2.16. /_search_analyze
¶
警告
搜索端点需要连接到每个群集节点的正在运行的搜索插件。看到了吗 Search Plugin Installation 有关详细信息。
3.0 新版功能.
-
POST
/_search_analyze
¶ 在示例文本上测试Lucene分析器标记化的结果。
参数: - field -- 分析仪类型
- text -- 要测试的分析器令牌
状态代码: - 200 OK -- 请求已成功完成
- 400 Bad Request -- 请求正文错误(格式错误或缺少一个必填字段)
- 500 Internal Server Error -- 发生服务器错误(或其他类型的错误)
请求 :
POST /_search_analyze HTTP/1.1
Host: localhost:5984
Content-Type: application/json
{"analyzer":"english", "text":"running"}
响应 :
{
"tokens": [
"run"
]
}
1.2.17. /_utils
¶
-
GET
/_utils
¶ 访问CouchDB的内置Fauxton管理接口。
响应头: - Location -- 新位置URI
状态代码: - 301 Moved Permanently -- 重定向到
GET /_utils/
-
GET
/_utils/
¶ 响应头: - Content-Type -- text/html
- Last-Modified -- 静态文件修改时间戳
状态代码: - 200 OK -- 请求已成功完成
1.2.18. /_up
¶
2.0 新版功能.
-
GET
/_up
¶ 确认服务器已启动、正在运行并准备好响应请求。如果
maintenance_mode
是true
或nolb
,则端点将返回404响应。响应头: - Content-Type -- application/json
状态代码: - 200 OK -- 请求已成功完成
- 404 Not Found -- 服务器此时无法处理请求。
响应 :
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"}
1.2.19. /_uuids
¶
在 2.0.0 版更改.
-
GET
/_uuids
¶ 从CouchDB实例请求一个或多个通用唯一标识符(uuid)。响应是一个提供uuid列表的JSON对象。
请求标头: - Accept --
- application/json
- text/plain
查询参数: - count (number) -- 要返回的UUID数。默认为
1
.
响应头: - Content-Type --
- application/json
- text/plain; charset=utf-8
- ETag -- 响应哈希
状态代码: - 200 OK -- 请求已成功完成
- 400 Bad Request -- 请求的UUID超过
allowed
取回
请求 :
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" ] }
- Accept --
UUID类型由 UUID algorithm
在CouchDB配置中设置。
UUID类型可以通过 Configuration 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"
]
}
1.2.20. /favicon.ico
¶
-
GET
/favicon.ico
¶ 的二进制内容 favicon.ico 站点图标。
响应头: - Content-Type -- image/x-icon
状态代码: - 200 OK -- 请求已成功完成
- 404 Not Found -- 找不到请求的内容
1.2.21. /_reshard
¶
2.4 新版功能.
-
GET
/_reshard
¶ 返回已完成作业、失败作业、正在运行作业、已停止作业和总作业的计数,以及群集上重新加固的状态。
请求标头: - Accept --
- application/json
响应头: - Content-Type --
- application/json
响应JSON对象: - state (string) --
stopped
orrunning
- state_reason (string) --
null
或描述与状态相关联的附加信息或原因的字符串 - completed (number) -- 已完成的重新硬化作业计数
- failed (number) -- 失败的重新加固作业数
- running (number) -- 正在运行的重新加固作业计数
- stopped (number) -- 停止的重新加固作业数
- total (number) -- 重新加固作业总数
状态代码: - 200 OK -- 请求已成功完成
- 401 Unauthorized -- 需要CouchDB服务器管理员权限
请求 :
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 }
- Accept --
-
GET
/_reshard/state
¶ 返回重新加固状态和有关该状态的可选信息。
请求标头: - Accept --
- application/json
响应头: - Content-Type --
- application/json
响应JSON对象: - state (string) --
stopped
orrunning
- state_reason (string) -- 与州相关的附加信息或原因
状态代码: - 200 OK -- 请求已成功完成
- 401 Unauthorized -- 需要CouchDB服务器管理员权限
请求 :
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" }
- Accept --
-
PUT
/_reshard/state
¶ 更改群集上的重新加固状态。美国是
stopped
或running
. 这会在集群的所有节点上启动和停止全局重硬。如果有任何正在运行的作业,则当状态更改为时,这些作业将停止stopped
. 当状态变回running
这些作业将继续运行。请求标头: - Accept --
- application/json
响应头: - Content-Type --
- application/json
请求JSON对象: - state (string) --
stopped
orrunning
- state_reason (string) -- 描述与状态相关联的附加信息或原因的可选字符串
响应JSON对象: - ok (boolean) --
true
状态代码: - 200 OK -- 请求已成功完成
- 400 Bad Request -- 无效请求。可能是错误的或缺少的状态名。
- 401 Unauthorized -- 需要CouchDB服务器管理员权限
请求 :
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 }
- Accept --
-
GET
/_reshard/jobs
¶ 注解
反应的形状和
total_rows
和offset
特别是字段要与_scheduler/jobs
端点。请求标头: - Accept --
- application/json
响应头: - Content-Type --
- application/json
响应JSON对象: - jobs (list) -- json对象的数组,每个重硬作业一个。有关每个作业的字段,请参见/reshard/job/{jobid}端点。
- offset (number) -- 作业对象列表中的偏移量。当前硬编码在
0
. - total_rows (number) -- 群集上重新硬装作业的总数。
状态代码: - 200 OK -- 请求已成功完成
- 401 Unauthorized -- 需要CouchDB服务器管理员权限
请求 :
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 }
- Accept --
-
GET
/_reshard/jobs/{jobid}
¶ 获取有关由标识的重新加固作业的信息
jobid
.请求标头: - Accept --
- application/json
响应头: - Content-Type --
- application/json
响应JSON对象: - id (string) -- 作业ID。
- 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服务器管理员权限
请求 :
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" }, ... ] }
- Accept --
-
POST
/_reshard/jobs
¶ 根据请求中指定的字段,将创建一个或多个重硬作业。响应是一个json结果数组。每个结果对象代表一个特定节点和范围的单个重硬作业。有些反应可能成功,有些可能失败。成功的结果将有
"ok": true
键和值,失败的作业将具有"error": "{{error_message}}"
键和值。请求标头: - Accept --
- application/json
响应头: - Content-Type --
- application/json
请求JSON对象: - type (string) -- 工作类型。仅限当前
"split"
被接受。 - db (string) -- 要拆分的数据库。这与
"shard
“菲尔德。 - node (string) -- 在特定节点上拆分碎片。这是一个可选参数。该值应该是从
_membership
端点。 - range (string) -- 在给定范围内拆分碎片副本。范围格式是
hhhhhhhh-hhhhhhhh
在哪里?h
是十六进制数字。使用此格式是因为范围在文件系统中的表示方式。此is参数是可选的,并且与互斥"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服务器管理员权限
- 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" } ]
- Accept --
-
DELETE
/_reshard/jobs/{jobid}
¶ 如果作业正在运行,请停止作业,然后将其删除。
响应JSON对象: - ok (boolean) --
true
如果作业已成功删除。
状态代码: - 200 OK -- 已成功删除作业
- 401 Unauthorized -- 需要CouchDB服务器管理员权限
- 404 Not Found -- 找不到作业
请求 :
DELETE /_reshard/jobs/001-171d1211418996ff47bd610b1d1257fc4ca2628868def4a05e63e8f8fe50694a HTTP/1.1
响应 :
HTTP/1.1 200 OK Content-Type: application/json { "ok": true }
- ok (boolean) --
-
GET
/_reshard/jobs/{jobid}/state
¶ 返回由标识的重新加固作业的运行状态
jobid
.请求标头: - Accept --
- application/json
响应头: - Content-Type --
- application/json
请求JSON对象: - state (string) -- 什么之中的一个
new
,running
,stopped
,completed
或failed
. - state_reason (string) -- 与州相关的附加信息
状态代码: - 200 OK -- 请求已成功完成
- 401 Unauthorized -- 需要CouchDB服务器管理员权限
- 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" }
- Accept --
-
PUT
/_reshard/jobs/{jobid}/state
¶ 更改由标识的特定重新硬装作业的状态
jobid
. 状态可以从stopped
到running
或来自running
到stopped
. 如果个人工作是stopped
通过这个API,它会一直存在stopped
即使在全球重新硬化状态从stopped
到running
. 如果工作已经completed
它的状态将保持不变completed
.请求标头: - Accept --
- application/json
响应头: - Content-Type --
- application/json
请求JSON对象: - state (string) --
stopped
orrunning
- state_reason (string) -- 描述与状态相关联的附加信息或原因的可选字符串
响应JSON对象: - ok (boolean) --
true
状态代码: - 200 OK -- 请求已成功完成
- 400 Bad Request -- 无效请求。例如,可能是一个错误的州名。
- 401 Unauthorized -- 需要CouchDB服务器管理员权限
- 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 }
- Accept --