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"
}

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时间戳
状态代码:

请求

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
    }
]

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"
]

1.2.4. /_dbs_info

2.2 新版功能.

POST /_dbs_info

返回CouchDB实例中指定数据库的列表信息。这使您能够在单个请求中请求有关多个数据库的信息,而不是多个数据库 :get:`/{{db}}` 请求。

请求标头:
响应头:
请求JSON对象:
  • keys (array) -- 要请求的数据库名称数组
状态代码:

请求

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。

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 ,已定义服务器级管理员用户 andensure_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

将节点配置为单个(独立)节点、群集的一部分,或完成群集。

请求标头:
请求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 .

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) -- 期间 毫秒 然后在结果中发送一个空行。仅适用于 longpollcontinuouseventsource 喂养。重写任何超时以使提要无限期地保持活动状态。默认为 60000 . 可能是 true 使用默认值。
  • since (string) -- 只返回指定序列ID之后的更新。如果指定了序列ID但不存在,则返回所有更改。可能是绳子 now 开始只显示新的更新。
响应头:
响应JSON对象:
  • results (array) -- 数据库事件的数组。为 longpollcontinuous 模式下,整个响应的内容是 results 数组。
  • last_seq (string) -- 报告的最后一个序列ID。
状态代码:

这个 results 数据库更新字段:

JSON对象:
  • db_name (string) -- 数据库名称。
  • type (string) -- 数据库事件是 createdupdateddeleted .
  • 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"
}

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"
    ]
}

1.2.8. /_replicate

POST /_replicate

请求、配置或停止复制操作。

请求标头:
请求JSON对象:
  • cancel (boolean) -- 取消复制
  • continuous (boolean) -- 将复制配置为连续
  • create_target (boolean) -- 创建目标数据库。目标服务器上必需的管理员权限。
  • create_target_params (object) -- 包含创建目标数据库时要使用的参数的对象。可以包括标准 qn 参数。
  • 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) -- 从源数据库读取的最后一个序列号
状态代码:

复制请求的规范是通过请求的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 格式

注解

从CouchDB 2.0.0开始,这两个复制都需要完全限定的URL sourcetarget 参数。

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",
}

在所有情况下,请求的数据库 sourcetarget 规范必须存在。否则,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. 单一复制

您可以请求复制一个数据库,以便两个数据库可以同步。默认情况下,一个数据库和两个数据库同步。例如,您可以通过提供 sourcetarget 请求JSON内容中的字段。

POST http://couchdb:5984/_replicate HTTP/1.1
Accept: application/json
Content-Type: application/json

{
    "source" : "recipes",
    "target" : "recipes-snapshot",
}

在上面的示例中,数据库 recipesrecipes-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",
}

只要两个数据库之间的连接可用,就可以复制两个数据库之间的连接。

注解

两个保持两个数据库彼此同步,您需要设置两个方向的复制;也就是说,您必须从 sourcetarget ,并与 targetsource .

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、最近事件的历史记录以及其他一些内容。

请求标头:
响应头:
查询参数:
  • 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) -- 启动复制的时间戳
状态代码:

请求

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
 }

1.2.10. /_scheduler/docs

在 2.1.0 版更改: 使用此终结点可监视基于文档的复制的状态。以前需要对文档和 _active_tasks 获取完整的状态摘要

在 3.0.0 版更改: 错误陈述 "info" 字段从字符串转换为对象

GET /_scheduler/docs

复制文档状态的列表。包括所有文档的信息,甚至 completedfailed 州。对于每个文档,它返回文档ID、数据库、复制ID、源和目标以及其他信息。

请求标头:
响应头:
查询参数:
  • limit (number) -- 要返回多少个结果
  • skip (number) -- 如果按文档ID排序,从开头开始跳过多少个结果
响应JSON对象:
  • offset (number) -- 跳过了多少个结果
  • total_rows (number) -- 复制文档的总数。
  • id (string) -- 复制ID,或 null 如果状态是 completedfailed
  • state (string) -- 见下列州之一 复制状态 有关说明): initializingrunningcompletedpendingcrashingerrorfailed
  • 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可用于了解特定复制为什么没有进展。
状态代码:

这个 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
}
GET /_scheduler/docs/{replicator_db}

从replicator数据库获取有关复制文档的信息。默认的replicator数据库是 _replicator 但是,如果其他replicator数据库的名称以后缀结尾,则可以存在这些数据库 /_replicator .

注解

为了方便起见 (/ )在replicator数据库中,名称不必转义。所以 /_scheduler/docs/other/_replicator 有效且等同于 /_scheduler/docs/other%2f_replicator

请求标头:
响应头:
查询参数:
  • limit (number) -- 要返回多少个结果
  • skip (number) -- 如果按文档ID排序,从开头开始跳过多少个结果
响应JSON对象:
  • offset (number) -- 跳过了多少个结果
  • total_rows (number) -- 复制文档的总数。
  • id (string) -- 复制ID,或 null 如果状态是 completedfailed
  • state (string) -- 见下列州之一 复制状态 有关说明): initializingrunningcompletedpendingcrashingerrorfailed
  • 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可用于了解特定复制为什么没有进展。
状态代码:

这个 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
}
GET /_scheduler/docs/{replicator_db}/{docid}

注解

为了方便起见 (/ )在replicator数据库中,名称不必转义。所以 /_scheduler/docs/other/_replicator 有效且等同于 /_scheduler/docs/other%2f_replicator

请求标头:
响应头:
响应JSON对象:
  • id (string) -- 复制ID,或 null 如果状态是 completedfailed
  • state (string) -- 见下列州之一 复制状态 有关说明): initializingrunningcompletedpendingcrashingerrorfailed
  • 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可用于了解特定复制为什么没有进展。
状态代码:

这个 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/"
}

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"}

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"
}

这些字段提供当前值、最小值和最大值,以及统计平均值和数量的集合。每种情况下的数量没有定义,但下面的描述提供了足够的细节来确定单位。

统计数据按“组”报告。统计数据分为以下顶层部分:

  • 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节点群集的默认端口为 179862798637986 。看见 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开发人员。

1.2.15. /_node/{node-name}/_restart

POST /_node/{node-name}/_restart

这个API是为了方便集成测试,只是它并不打算在生产中使用

状态代码:
  • 200 OK -- 请求已成功完成

1.2.16. /_search_analyze

警告

搜索端点需要连接到每个群集节点的正在运行的搜索插件。看到了吗 Search Plugin Installation 有关详细信息。

3.0 新版功能.

POST /_search_analyze

在示例文本上测试Lucene分析器标记化的结果。

参数:
  • field -- 分析仪类型
  • text -- 要测试的分析器令牌
状态代码:

请求

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管理接口。

响应头:
状态代码:
GET /_utils/
响应头:
状态代码:
  • 200 OK -- 请求已成功完成

1.2.18. /_up

2.0 新版功能.

GET /_up

确认服务器已启动、正在运行并准备好响应请求。如果 maintenance_modetruenolb ,则端点将返回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"}

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 -- 响应哈希
状态代码:

请求

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类型可以通过 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 站点图标。

响应头:
状态代码:

1.2.21. /_reshard

2.4 新版功能.

GET /_reshard

返回已完成作业、失败作业、正在运行作业、已停止作业和总作业的计数,以及群集上重新加固的状态。

请求标头:
响应头:
响应JSON对象:
  • state (string) -- stopped or running
  • state_reason (string) -- null 或描述与状态相关联的附加信息或原因的字符串
  • completed (number) -- 已完成的重新硬化作业计数
  • failed (number) -- 失败的重新加固作业数
  • running (number) -- 正在运行的重新加固作业计数
  • stopped (number) -- 停止的重新加固作业数
  • total (number) -- 重新加固作业总数
状态代码:

请求

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

返回重新加固状态和有关该状态的可选信息。

请求标头:
响应头:
响应JSON对象:
  • state (string) -- stopped or running
  • state_reason (string) -- 与州相关的附加信息或原因
状态代码:

请求

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

更改群集上的重新加固状态。美国是 stoppedrunning . 这会在集群的所有节点上启动和停止全局重硬。如果有任何正在运行的作业,则当状态更改为时,这些作业将停止 stopped . 当状态变回 running 这些作业将继续运行。

请求标头:
响应头:
请求JSON对象:
  • state (string) -- stopped or running
  • state_reason (string) -- 描述与状态相关联的附加信息或原因的可选字符串
响应JSON对象:
  • ok (boolean) -- true
状态代码:

请求

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_rowsoffset 特别是字段要与 _scheduler/jobs 端点。

请求标头:
响应头:
响应JSON对象:
  • jobs (list) -- json对象的数组,每个重硬作业一个。有关每个作业的字段,请参见/reshard/job/{jobid}端点。
  • offset (number) -- 作业对象列表中的偏移量。当前硬编码在 0 .
  • total_rows (number) -- 群集上重新硬装作业的总数。
状态代码:

请求

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 .

请求标头:
响应头:
响应JSON对象:
  • id (string) -- 作业ID。
  • type (string) -- 仅限当前 split 实现。
  • job_state (string) -- 作业的运行状态。可能是 newrunningstoppedcompletedfailed .
  • split_state (string) -- 特定于碎片分割的状态详细信息。它指示了碎片分割的进展情况,可以是 newinitial_copytopoff1build_indicestopoff2copy_local_docsupdate_shardmapwait_source_closetopoff3source_deletecompleted .
  • state_info (object) -- 与当前状态关联的可选附加信息。
  • source (string) -- 为了 split 这将是源代码碎片。
  • target (list) -- 为了 split 这将是两个或多个目标碎片的列表。
  • history (list) -- 记录作业状态转换历史记录的json对象列表。
状态代码:

请求

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}}" 键和值。

请求标头:
响应头:
请求JSON对象:
  • type (string) -- 工作类型。仅限当前 "split" 被接受。
  • db (string) -- 要拆分的数据库。这与 "shard “菲尔德。
  • node (string) -- 在特定节点上拆分碎片。这是一个可选参数。该值应该是从 _membership 端点。
  • range (string) -- 在给定范围内拆分碎片副本。范围格式是 hhhhhhhh-hhhhhhhh 在哪里? h 是十六进制数字。使用此格式是因为范围在文件系统中的表示方式。此is参数是可选的,并且与互斥 "shard" 字段。
  • shard (string) -- 分割一个特定的碎片。碎片应指定为 "shards/{{range}}/{{db}}.{{suffix}}" . 在哪里? rangehhhhhhhh-hhhhhhhh 格式, db 是数据库名称,并且 suffix 是碎片(时间戳)创建后缀。
  • error (string) -- 如果无法创建作业,则返回错误消息。
  • node -- 创建并运行作业的群集节点。
响应JSON对象:
  • ok (boolean) -- true 如果作业创建成功。
状态代码:

请求

 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 如果作业已成功删除。
状态代码:

请求

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 .

请求标头:
响应头:
请求JSON对象:
  • state (string) -- 什么之中的一个 newrunningstoppedcompletedfailed .
  • state_reason (string) -- 与州相关的附加信息
状态代码:

请求

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 . 状态可以从 stoppedrunning 或来自 runningstopped . 如果个人工作是 stopped 通过这个API,它会一直存在 stopped 即使在全球重新硬化状态从 stoppedrunning . 如果工作已经 completed 它的状态将保持不变 completed .

请求标头:
响应头:
请求JSON对象:
  • state (string) -- stopped or running
  • state_reason (string) -- 描述与状态相关联的附加信息或原因的可选字符串
响应JSON对象:
  • ok (boolean) -- true
状态代码:

请求

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
}