gpt4 book ai didi

Couchbase 无可用索引

转载 作者:行者123 更新时间:2023-12-03 17:13:23 24 4
gpt4 key购买 nike

我们在使用 couchbase N1QL 查询时遇到问题。

我们有一个索引定义如下:

CREATE INDEX `AppUser_SubjectId3` ON `Portal`(`SubjectId`) WHERE ((meta(self).`id`) like `AppUser%`)

然后我们尝试运行以下查询:

SELECT RAW `Extent1` 
FROM `Portal` as `Extent1`
USE INDEX (`AppUser_SubjectId3` USING GSI)
WHERE (`Extent1`.`SubjectId` = 'c8ea08231c3a985a06342355b87d6e2d6290a985d5c3592e5b8e5e5f14608a08')

并得到以下错误:

No index available on keyspace Portal that matches your query.
Use CREATE INDEX or CREATE PRIMARY INDEX to create an index,
or check that your expected index is online.



我们已经确认了明显的索引在线。唯一值得注意的是 Bucket 目前实际上并不包含任何文档,但我们不希望在这种情况下出现这个错误,只是没有返回任何内容。

有任何想法吗?

编辑:

我创建了另一个没有 WHERE 子句的索引,它不再返回错误。
CREATE INDEX `AppUser_SubjectId4` ON `Portal`(`SubjectId`)

唯一的问题是需要 WHERE 子句!

最佳答案

您创建的索引是部分索引(即索引有 WHERE 子句,只有满足 where 条件的条目)。对于使用该索引的查询,它必须符合条件(即查询 where 子句必须是索引的子集 where 子句 + 查询谓词必须具有前导索引键),否则通过选择该索引可能会导致错误结果并且查询优化器不会选择该索引.

也喜欢 AppUser%不正确它必须是单引号或双引号而不是反引号。

CREATE INDEX `AppUser_SubjectId3` ON `test`(`SubjectId`) 
WHERE meta().`id` like "AppUser%";


SELECT RAW e
FROM `Portal` AS e
USE INDEX (`AppUser_SubjectId3` USING GSI)
WHERE e.`SubjectId` = 'c8ea08231c3a985a06342355b87d6e2d6290a985d5c3592e5b8e5e5f14608a08'
AND META(e).id LIKE "AppUser%";

在 Couchbase N1QL 中设计查询索引 https://blog.couchbase.com/wp-content/uploads/2017/10/N1QL-A-Practical-Guide-2nd-Edition.pdf

关于Couchbase 无可用索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57406312/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com