使用索引
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"
}
}
如果没有部分索引,那么此查询需要进行完整索引扫描以查找状态为 archived
的 type
: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。 但是,如果包含过滤器,那么会使选择器的意图更明确。 它还使您更容易利用未来对查询规划的改进 (例如,自动选择部分索引)。