我正在尝试创建一个将使用特定索引的couchbase N1QL查询。 这是我的索引:
CREATE INDEX index_progressTest ON testbucket(payload.type, payload.display, payload.status, meta(testbucket).id) where payload.type = "Test" AND payload.display = true AND payload.status != "IN_PROGRESS" using GSI;
这是我的查询(我使用explain来查看它将使用哪个索引):
EXPLAIN SELECT meta(jmbucket).id FROM testbucket WHERE payload.type = "Test" AND payload.display = true AND payload.status != "IN_PROGRESS";
但似乎查询不会使用我的索引。 如果我从索引和查询中删除“WHERE”子句的最后一部分,那么一切正常。
我该怎么办才能修复它?
谢谢!
答案 0 :(得分:1)
这已在Couchbase 4.5中修复。
如果您想使用4.1,请从索引中删除它:
AND payload.status != "IN_PROGRESS"
答案 1 :(得分:0)
请记住,Couchbase是区分大小写的。确保在“创建索引”脚本中指定的列与文档中元素的大小写匹配。我发现这很困难。 #lessonlearned