如何正确创建Couchbase数组索引

时间:2018-07-01 14:21:01

标签: indexing couchbase

我有以下示例文档:

{
    “_class”: “some.package.Class”,
    “creationTime”: 1234567890,
    “title”: “title of element”,
    “tags”: [ “tag1”, “tag2”, “tag3” ]
}

我现在要使用以下命令查询包含给定2个标签的所有元素:

SELECT * FROM bucket WHERE _class = “some.package.Class”
AND (EVERY t IN [“tag1”, “tag2”] SATISFIES t IN tags END) LIMIT 16

我尝试使用以下方法为此查询创建索引:

CREATE INDEX some_idx_title ON bucket((distinct (array k for k in tags end))) 
WHERE (_class = “some.package.Class”)

但是在解释选择查询时,它不会显示。

如何为该查询创建索引?

1 个答案:

答案 0 :(得分:1)

基本答案是你不能。当前实现的数组索引不能满足EVERY类型的谓词。它们只能用于ANY和ANY AND EVERY类型的谓词。

有关如何指定数组索引以及它们可用于哪些谓词的更多信息,请参考以下参考:

https://developer.couchbase.com/documentation/server/current/n1ql/n1ql-language-reference/indexing-arrays.html

(这个确切的问题在another forum中的回答也更长一些。)