IBM Cloud Docs
使用索引

使用索引

IBM® Cloudant® for IBM Cloud® 端点可用于在数据库中创建,列示,更新和删除索引,以及使用这些索引来查询数据。

可用方法和终点
方法 路径 描述
DELETE /$DATABASE/_index 删除索引。
GET /$DATABASE/_index 列出所有 IBM Cloudant 查询索引。
POST /$DATABASE/_find 使用全局索引来查找文档。
POST /$DATABASE/_partition/$PARTITION_KEY/_find 使用分区索引查找文档。
POST /$DATABASE/_index 创建索引。

创建部分索引

IBM Cloudant 查询支持使用 partial_filter_selector 字段的部分索引。 有关更多信息,请参阅 CouchDB 文档 和原始示例。

partial_filter_selector 字段将替换 selector 字段,先前仅在文本索引中有效。 仅对于文本索引,selector 字段仍与较早版本兼容。

请参见以下查询示例:

{
  "selector": {
    "status": {
      "$ne": "archived"
    },
    "type": "user"
  }
}

如果没有部分索引,那么此查询需要进行完整索引扫描以查找状态为 archivedtype:user 的所有文档。 发生此情况是因为可以使用正常索引来匹配连续行,而 $ne 运算符无法保证此情况。

为了缩短响应时间,您可以使用以下命令创建一个索引: 在索引时间排除具有 status: { $ne: archived } 的文档: 以下示例中显示的 partial_filter_selector 字段:

POST /db/_index HTTP/1.1
Content-Type: application/json
Content-Length: 144
Host: localhost:5984

{
  "index": {
    "partial_filter_selector": {
      "status": {
        "$ne": "archived"
      }
    },
    "fields": ["type"]
  },
  "ddoc" : "type-not-archived",
  "type" : "json"
}

除非由 use_index 字段指定,否则查询计划程序当前不会使用部分索引,因此您必须修改原始查询:

{
  "selector": {
    "status": {
      "$ne": "archived"
    },
    "type": "user"
  },
  "use_index": "type-not-archived"
}

从技术上讲,您不需要在查询选择器中的 status 字段上包含过滤器。 部分索引确保此值始终为 true。 但是,如果包含过滤器,那么会使选择器的意图更明确。 它还使您更容易利用未来对查询规划的改进 (例如,自动选择部分索引)。